diff --git a/app/src/main/java/app/fedilab/android/BaseMainActivity.java b/app/src/main/java/app/fedilab/android/BaseMainActivity.java index 19bdccfcc..be0682bb2 100644 --- a/app/src/main/java/app/fedilab/android/BaseMainActivity.java +++ b/app/src/main/java/app/fedilab/android/BaseMainActivity.java @@ -426,7 +426,7 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt headerMainBinding.ownerAccounts.setImageResource(R.drawable.ic_baseline_arrow_drop_up_24); new Thread(() -> { try { - List accounts = new Account(activity).getCrossAccounts(); + List accounts = new Account(activity).getOtherAccounts(); Handler mainHandler = new Handler(Looper.getMainLooper()); Runnable myRunnable = () -> { navigationView.getMenu().clear(); diff --git a/app/src/main/java/app/fedilab/android/mastodon/client/entities/app/Account.java b/app/src/main/java/app/fedilab/android/mastodon/client/entities/app/Account.java index 7b310b4d3..376756bf7 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/client/entities/app/Account.java +++ b/app/src/main/java/app/fedilab/android/mastodon/client/entities/app/Account.java @@ -358,7 +358,7 @@ public class Account extends BaseAccount implements Serializable { * * @return BaseAccount List<{@link BaseAccount}> */ - public List getCrossAccounts() throws DBException { + public List getOtherAccounts() throws DBException { if (db == null) { throw new DBException("db is null. Wrong initialization."); } @@ -370,6 +370,23 @@ public class Account extends BaseAccount implements Serializable { } } + /** + * Returns all accounts that allows cross-account actions + * + * @return BaseAccount List<{@link BaseAccount}> + */ + public List getCrossAccounts() throws DBException { + if (db == null) { + throw new DBException("db is null. Wrong initialization."); + } + try { + Cursor c = db.query(Sqlite.TABLE_USER_ACCOUNT, null, null, null, null, null, null, null); + return cursorToListMastodonUser(c); + } catch (Exception e) { + return null; + } + } + /** * Returns all accounts * @@ -455,6 +472,27 @@ public class Account extends BaseAccount implements Serializable { return accountList; } + + private List cursorToListMastodonUser(Cursor c) { + //No element found + if (c.getCount() == 0) { + c.close(); + return null; + } + List accountList = new ArrayList<>(); + while (c.moveToNext()) { + BaseAccount account = convertCursorToAccount(c); + //We don't add in the list the current connected account + if (account.mastodon_account != null) { + accountList.add(account); + } + } + //Close the cursor + c.close(); + return accountList; + } + + private List cursorToListUserWithOwner(Cursor c) { //No element found if (c.getCount() == 0) { diff --git a/app/src/main/java/app/fedilab/android/mastodon/helper/CrossActionHelper.java b/app/src/main/java/app/fedilab/android/mastodon/helper/CrossActionHelper.java index 688ccdf37..cd6e94219 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/helper/CrossActionHelper.java +++ b/app/src/main/java/app/fedilab/android/mastodon/helper/CrossActionHelper.java @@ -401,7 +401,7 @@ public class CrossActionHelper { public static void doCrossShare(final Context context, final Bundle bundle) { List accounts; try { - accounts = new Account(context).getAll(); + accounts = new Account(context).getCrossAccounts(); List accountList = new ArrayList<>(); for (BaseAccount account : accounts) { account.mastodon_account.acct += "@" + account.instance;