diff options
author | Thomas <tschneider.ac@gmail.com> | 2023-01-27 10:33:41 +0100 |
---|---|---|
committer | Thomas <tschneider.ac@gmail.com> | 2023-01-27 10:33:41 +0100 |
commit | 8103bf4a16aa64025baacefc3a1b6e19ad744219 (patch) | |
tree | 613337c1aff1ed615921825f7a8a98efe30d2d5a | |
parent | e4affdc9d776415d0763c90af160cfca6ef11b01 (diff) |
Fix cross actions
3 files changed, 41 insertions, 3 deletions
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<BaseAccount> accounts = new Account(activity).getCrossAccounts(); + List<BaseAccount> 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<BaseAccount> getCrossAccounts() throws DBException { + public List<BaseAccount> getOtherAccounts() throws DBException { if (db == null) { throw new DBException("db is null. Wrong initialization."); } @@ -371,6 +371,23 @@ public class Account extends BaseAccount implements Serializable { } /** + * Returns all accounts that allows cross-account actions + * + * @return BaseAccount List<{@link BaseAccount}> + */ + public List<BaseAccount> 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 * * @return BaseAccount List<{@link BaseAccount}> @@ -455,6 +472,27 @@ public class Account extends BaseAccount implements Serializable { return accountList; } + + private List<BaseAccount> cursorToListMastodonUser(Cursor c) { + //No element found + if (c.getCount() == 0) { + c.close(); + return null; + } + List<BaseAccount> 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<BaseAccount> 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<BaseAccount> accounts; try { - accounts = new Account(context).getAll(); + accounts = new Account(context).getCrossAccounts(); List<app.fedilab.android.mastodon.client.entities.api.Account> accountList = new ArrayList<>(); for (BaseAccount account : accounts) { account.mastodon_account.acct += "@" + account.instance; |