From 0f372ccde0642cf2686fd46b832cea675280752f Mon Sep 17 00:00:00 2001 From: Thomas Date: Tue, 21 Jun 2022 17:09:34 +0200 Subject: [PATCH] Some fixes --- .../app/fedilab/android/BaseMainActivity.java | 55 +++++------ .../android/activities/ComposeActivity.java | 7 +- .../android/activities/ContextActivity.java | 5 +- .../activities/CustomSharingActivity.java | 4 +- .../android/activities/DraftActivity.java | 6 +- .../activities/EditProfileActivity.java | 41 ++++---- .../android/activities/HashTagActivity.java | 4 +- .../android/activities/LoginActivity.java | 4 +- .../android/activities/ProfileActivity.java | 4 +- .../android/activities/ScheduledActivity.java | 5 +- .../android/activities/SettingsActivity.java | 5 +- .../android/client/entities/api/Status.java | 1 + .../client/entities/app/QuickLoad.java | 23 +++-- .../fedilab/android/helper/CacheHelper.java | 19 ++-- .../app/fedilab/android/helper/Helper.java | 98 +++++++------------ .../fedilab/android/helper/MediaHelper.java | 3 +- .../android/helper/PinnedTimelineHelper.java | 3 +- .../android/helper/SpannableHelper.java | 7 +- .../android/ui/drawer/ComposeAdapter.java | 9 +- .../ui/drawer/NotificationAdapter.java | 10 +- .../android/ui/drawer/StatusAdapter.java | 10 +- .../settings/FragmentInterfaceSettings.java | 3 +- .../settings/FragmentThemingSettings.java | 3 +- .../FragmentMastodonNotification.java | 46 +++++---- .../fragment/timeline/FragmentScheduled.java | 6 +- .../android/viewmodel/mastodon/ReorderVM.java | 6 +- .../android/viewmodel/mastodon/TopBarVM.java | 6 +- 27 files changed, 189 insertions(+), 204 deletions(-) diff --git a/app/src/main/java/app/fedilab/android/BaseMainActivity.java b/app/src/main/java/app/fedilab/android/BaseMainActivity.java index 8cb237ac..cdf66a31 100644 --- a/app/src/main/java/app/fedilab/android/BaseMainActivity.java +++ b/app/src/main/java/app/fedilab/android/BaseMainActivity.java @@ -18,7 +18,6 @@ import static app.fedilab.android.BaseMainActivity.status.DISCONNECTED; import static app.fedilab.android.BaseMainActivity.status.UNKNOWN; import static app.fedilab.android.helper.CacheHelper.deleteDir; import static app.fedilab.android.helper.Helper.PREF_USER_TOKEN; -import static app.fedilab.android.helper.Helper.getCurrentAccount; import android.annotation.SuppressLint; import android.content.BroadcastReceiver; @@ -141,13 +140,12 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt public static boolean filterFetched; public static boolean show_boosts, show_replies, show_art_nsfw; public static String regex_home, regex_local, regex_public; + public static BaseAccount currentAccount; Fragment currentFragment; - private BaseAccount account; private AppBarConfiguration mAppBarConfiguration; private ActivityMainBinding binding; private Pinned pinned; private BottomMenu bottomMenu; - private final BroadcastReceiver broadcast_data = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { @@ -158,7 +156,7 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt redrawPinned(mastodonLists); } if (b.getBoolean(Helper.RECEIVE_REDRAW_BOTTOM, false)) { - bottomMenu = new BottomMenu(BaseMainActivity.this).hydrate(account, binding.bottomNavView); + bottomMenu = new BottomMenu(BaseMainActivity.this).hydrate(currentAccount, binding.bottomNavView); if (bottomMenu != null) { //ManageClick on bottom menu items if (binding.bottomNavView.findViewById(R.id.nav_home) != null) { @@ -366,7 +364,7 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt headerMainBinding.accountProfilePicture.setOnClickListener(v -> { Intent intent = new Intent(BaseMainActivity.this, ProfileActivity.class); Bundle b = new Bundle(); - b.putSerializable(Helper.ARG_ACCOUNT, account.mastodon_account); + b.putSerializable(Helper.ARG_ACCOUNT, currentAccount.mastodon_account); intent.putExtras(b); ActivityOptionsCompat options = ActivityOptionsCompat .makeSceneTransitionAnimation(BaseMainActivity.this, headerMainBinding.instanceInfoContainer, getString(R.string.activity_porfile_pp)); @@ -500,17 +498,17 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt if (itemId == R.id.action_logout_account) { AlertDialog.Builder alt_bld = new AlertDialog.Builder(BaseMainActivity.this, Helper.dialogStyle()); alt_bld.setTitle(R.string.action_logout); - if (account.mastodon_account != null && account.mastodon_account.username != null && account.instance != null) { - alt_bld.setMessage(getString(R.string.logout_account_confirmation, account.mastodon_account.username, account.instance)); - } else if (account.mastodon_account != null && account.mastodon_account.acct != null) { - alt_bld.setMessage(getString(R.string.logout_account_confirmation, account.mastodon_account.acct, "")); + if (currentAccount.mastodon_account != null && currentAccount.mastodon_account.username != null && currentAccount.instance != null) { + alt_bld.setMessage(getString(R.string.logout_account_confirmation, currentAccount.mastodon_account.username, currentAccount.instance)); + } else if (currentAccount.mastodon_account != null && currentAccount.mastodon_account.acct != null) { + alt_bld.setMessage(getString(R.string.logout_account_confirmation, currentAccount.mastodon_account.acct, "")); } else { alt_bld.setMessage(getString(R.string.logout_account_confirmation, "", "")); } alt_bld.setPositiveButton(R.string.action_logout, (dialog, id) -> { dialog.dismiss(); try { - Helper.removeAccount(BaseMainActivity.this, null); + Helper.removeAccount(BaseMainActivity.this); } catch (DBException e) { e.printStackTrace(); } @@ -536,28 +534,28 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt }); popup.show(); }); - account = null; + currentAccount = null; //Update account details new Thread(() -> { try { - account = new Account(BaseMainActivity.this).getConnectedAccount(); + currentAccount = new Account(BaseMainActivity.this).getConnectedAccount(); } catch (DBException e) { e.printStackTrace(); } Handler mainHandler = new Handler(Looper.getMainLooper()); Runnable myRunnable = () -> { - if (account == null) { + if (currentAccount == null) { //It is not, the user is redirected to the login page Intent myIntent = new Intent(BaseMainActivity.this, LoginActivity.class); startActivity(myIntent); finish(); return; } - bottomMenu = new BottomMenu(BaseMainActivity.this).hydrate(account, binding.bottomNavView); - if (account.mastodon_account.locked) { + bottomMenu = new BottomMenu(BaseMainActivity.this).hydrate(currentAccount, binding.bottomNavView); + if (currentAccount.mastodon_account.locked) { binding.navView.getMenu().findItem(R.id.nav_follow_requests).setVisible(true); } - if (account.admin) { + if (currentAccount.admin) { binding.navView.getMenu().findItem(R.id.nav_administration).setVisible(true); } if (bottomMenu != null) { @@ -603,8 +601,8 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt }); } - currentInstance = account.instance; - currentUserID = account.user_id; + currentInstance = currentAccount.instance; + currentUserID = currentAccount.user_id; show_boosts = sharedpreferences.getBoolean(getString(R.string.SET_SHOW_BOOSTS) + currentUserID + currentInstance, true); show_replies = sharedpreferences.getBoolean(getString(R.string.SET_SHOW_REPLIES) + currentUserID + currentInstance, true); regex_home = sharedpreferences.getString(getString(R.string.SET_FILTER_REGEX_HOME) + currentUserID + currentInstance, null); @@ -612,14 +610,14 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt regex_public = sharedpreferences.getString(getString(R.string.SET_FILTER_REGEX_PUBLIC) + currentUserID + currentInstance, null); show_art_nsfw = sharedpreferences.getBoolean(getString(R.string.SET_ART_WITH_NSFW) + currentUserID + currentInstance, false); binding.profilePicture.setOnClickListener(v -> binding.drawerLayout.openDrawer(GravityCompat.START)); - Helper.loadPP(binding.profilePicture, account); - headerMainBinding.accountAcc.setText(String.format("%s@%s", account.mastodon_account.username, account.instance)); - if (account.mastodon_account.display_name.isEmpty()) { - account.mastodon_account.display_name = account.mastodon_account.acct; + Helper.loadPP(binding.profilePicture, currentAccount); + headerMainBinding.accountAcc.setText(String.format("%s@%s", currentAccount.mastodon_account.username, currentAccount.instance)); + if (currentAccount.mastodon_account.display_name.isEmpty()) { + currentAccount.mastodon_account.display_name = currentAccount.mastodon_account.acct; } - headerMainBinding.accountName.setText(account.mastodon_account.display_name); - Helper.loadPP(headerMainBinding.accountProfilePicture, account); - MastodonHelper.loadProfileMediaMastodon(headerMainBinding.backgroundImage, account.mastodon_account, MastodonHelper.MediaAccountType.HEADER); + headerMainBinding.accountName.setText(currentAccount.mastodon_account.display_name); + Helper.loadPP(headerMainBinding.accountProfilePicture, currentAccount); + MastodonHelper.loadProfileMediaMastodon(headerMainBinding.backgroundImage, currentAccount.mastodon_account, MastodonHelper.MediaAccountType.HEADER); /* * Some general data are loaded when the app starts such; * - Instance info (for limits) @@ -637,14 +635,13 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt new ViewModelProvider(BaseMainActivity.this).get(AccountsVM.class).getFilters(currentInstance, currentToken) .observe(BaseMainActivity.this, filters -> mainFilters = filters); new ViewModelProvider(BaseMainActivity.this).get(AccountsVM.class).getConnectedAccount(currentInstance, currentToken) - .observe(BaseMainActivity.this, account1 -> { + .observe(BaseMainActivity.this, mastodonAccount -> { //Initialize static var - getCurrentAccount(BaseMainActivity.this); + currentAccount.mastodon_account = mastodonAccount; new Thread(() -> { try { //Update account in db - new Account(BaseMainActivity.this).insertOrUpdate(getCurrentAccount(BaseMainActivity.this)); - getCurrentAccount(BaseMainActivity.this); + new Account(BaseMainActivity.this).insertOrUpdate(currentAccount); } catch (DBException e) { e.printStackTrace(); } diff --git a/app/src/main/java/app/fedilab/android/activities/ComposeActivity.java b/app/src/main/java/app/fedilab/android/activities/ComposeActivity.java index 0557a8ac..2cb5d928 100644 --- a/app/src/main/java/app/fedilab/android/activities/ComposeActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/ComposeActivity.java @@ -15,6 +15,7 @@ package app.fedilab.android.activities; * see . */ +import static app.fedilab.android.BaseMainActivity.currentAccount; import static app.fedilab.android.BaseMainActivity.currentInstance; import static app.fedilab.android.BaseMainActivity.emojis; import static app.fedilab.android.ui.drawer.ComposeAdapter.prepareDraft; @@ -190,7 +191,7 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana statusDraft.statusDraftList = statuses; } if (account == null) { - account = Helper.getCurrentAccount(ComposeActivity.this); + account = currentAccount; } if (account == null) { Toasty.error(ComposeActivity.this, getString(R.string.toast_error), Toasty.LENGTH_SHORT).show(); @@ -268,7 +269,7 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana //We change order for mentions //At first place the account that has been mentioned if it's not our statusDraftList.get(0).mentions = new ArrayList<>(); - if (!statusReply.account.acct.equalsIgnoreCase(Helper.getCurrentAccount(ComposeActivity.this).mastodon_account.acct)) { + if (!statusReply.account.acct.equalsIgnoreCase(currentAccount.mastodon_account.acct)) { Mention mention = new Mention(); mention.acct = "@" + statusReply.account.acct; mention.url = statusReply.account.url; @@ -279,7 +280,7 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana //There are other mentions to if (statusReply.mentions != null && statusReply.mentions.size() > 0) { for (Mention mentionTmp : statusReply.mentions) { - if (!mentionTmp.acct.equalsIgnoreCase(statusReply.account.acct) && !mentionTmp.acct.equalsIgnoreCase(Helper.getCurrentAccount(ComposeActivity.this).mastodon_account.acct)) { + if (!mentionTmp.acct.equalsIgnoreCase(statusReply.account.acct) && !mentionTmp.acct.equalsIgnoreCase(currentAccount.mastodon_account.acct)) { statusDraftList.get(0).mentions.add(mentionTmp); } } diff --git a/app/src/main/java/app/fedilab/android/activities/ContextActivity.java b/app/src/main/java/app/fedilab/android/activities/ContextActivity.java index d8cf8cf2..3710edf7 100644 --- a/app/src/main/java/app/fedilab/android/activities/ContextActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/ContextActivity.java @@ -15,6 +15,7 @@ package app.fedilab.android.activities; * see . */ +import static app.fedilab.android.BaseMainActivity.currentAccount; import static app.fedilab.android.ui.drawer.StatusAdapter.sendAction; import android.content.SharedPreferences; @@ -84,7 +85,7 @@ public class ContextActivity extends BaseActivity { finish(); return; } - MastodonHelper.loadPPMastodon(binding.profilePicture, Helper.getCurrentAccount(ContextActivity.this).mastodon_account); + MastodonHelper.loadPPMastodon(binding.profilePicture, currentAccount.mastodon_account); Bundle bundle = new Bundle(); new Thread(() -> { focusedStatus = SpannableHelper.convertStatus(getApplication().getApplicationContext(), focusedStatus); @@ -107,7 +108,7 @@ public class ContextActivity extends BaseActivity { new Thread(() -> { try { new StatusCache(getApplication()).updateIfExists(statusCache); - new QuickLoad(getApplication().getApplicationContext()).updateStatus(Helper.getCurrentAccount(ContextActivity.this), status); + new QuickLoad(getApplication().getApplicationContext()).updateStatus(currentAccount, status); Handler mainHandler = new Handler(Looper.getMainLooper()); //Update UI Runnable myRunnable = () -> sendAction(ContextActivity.this, Helper.ARG_STATUS_ACTION, status, null); diff --git a/app/src/main/java/app/fedilab/android/activities/CustomSharingActivity.java b/app/src/main/java/app/fedilab/android/activities/CustomSharingActivity.java index 58a0f3a5..f64786df 100644 --- a/app/src/main/java/app/fedilab/android/activities/CustomSharingActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/CustomSharingActivity.java @@ -14,6 +14,8 @@ package app.fedilab.android.activities; * You should have received a copy of the GNU General Public License along with Fedilab; if not, * see . */ +import static app.fedilab.android.BaseMainActivity.currentAccount; + import android.content.SharedPreferences; import android.graphics.drawable.ColorDrawable; import android.net.Uri; @@ -99,7 +101,7 @@ public class CustomSharingActivity extends BaseActivity implements OnCustomShari bundle_thumbnailurl = status.account.avatar; } if (!bundle_creator.contains("@")) { - bundle_creator = bundle_creator + "@" + Helper.getCurrentAccount(CustomSharingActivity.this).instance; + bundle_creator = bundle_creator + "@" + currentAccount.instance; } binding.setCustomSharingTitle.setEllipsize(TextUtils.TruncateAt.END); diff --git a/app/src/main/java/app/fedilab/android/activities/DraftActivity.java b/app/src/main/java/app/fedilab/android/activities/DraftActivity.java index 15121580..cfbb235b 100644 --- a/app/src/main/java/app/fedilab/android/activities/DraftActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/DraftActivity.java @@ -14,6 +14,8 @@ package app.fedilab.android.activities; * You should have received a copy of the GNU General Public License along with Fedilab; if not, * see . */ +import static app.fedilab.android.BaseMainActivity.currentAccount; + import android.graphics.drawable.ColorDrawable; import android.os.Bundle; import android.os.Handler; @@ -80,7 +82,7 @@ public class DraftActivity extends BaseActivity implements StatusDraftAdapter.Dr getSupportActionBar().setDisplayShowHomeEnabled(true); } timelinesVM = new ViewModelProvider(DraftActivity.this).get(TimelinesVM.class); - timelinesVM.getDrafts(Helper.getCurrentAccount(DraftActivity.this)) + timelinesVM.getDrafts(currentAccount) .observe(DraftActivity.this, this::initializeDraftView); } @@ -176,7 +178,7 @@ public class DraftActivity extends BaseActivity implements StatusDraftAdapter.Dr super.onResume(); //We need to check if drafts changed (ie when coming back from the compose activity) if (statusDrafts != null && timelinesVM != null) { - timelinesVM.getDrafts(Helper.getCurrentAccount(DraftActivity.this)) + timelinesVM.getDrafts(currentAccount) .observe(DraftActivity.this, this::updateDrafts); } } diff --git a/app/src/main/java/app/fedilab/android/activities/EditProfileActivity.java b/app/src/main/java/app/fedilab/android/activities/EditProfileActivity.java index 96168f91..a71e61dc 100644 --- a/app/src/main/java/app/fedilab/android/activities/EditProfileActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/EditProfileActivity.java @@ -14,6 +14,7 @@ package app.fedilab.android.activities; * You should have received a copy of the GNU General Public License along with Fedilab; if not, * see . */ +import static app.fedilab.android.BaseMainActivity.currentAccount; import static app.fedilab.android.BaseMainActivity.instanceInfo; import android.content.Intent; @@ -74,7 +75,7 @@ public class EditProfileActivity extends BaseActivity { new ViewModelProvider(EditProfileActivity.this).get(AccountsVM.class).getConnectedAccount(BaseMainActivity.currentInstance, BaseMainActivity.currentToken) .observe(EditProfileActivity.this, account -> { if (account != null) { - Helper.getCurrentAccount(EditProfileActivity.this).mastodon_account = account; + currentAccount.mastodon_account = account; initializeView(); } else { Helper.sendToastMessage(getApplication(), Helper.RECEIVE_TOAST_TYPE_ERROR, getString(R.string.toast_error)); @@ -86,19 +87,19 @@ public class EditProfileActivity extends BaseActivity { @SuppressWarnings("deprecation") private void initializeView() { //Hydrate values - MastodonHelper.loadProfileMediaMastodon(binding.bannerPp, Helper.getCurrentAccount(EditProfileActivity.this).mastodon_account, MastodonHelper.MediaAccountType.HEADER); - MastodonHelper.loadPPMastodon(binding.accountPp, Helper.getCurrentAccount(EditProfileActivity.this).mastodon_account); - binding.displayName.setText(Helper.getCurrentAccount(EditProfileActivity.this).mastodon_account.display_name); - binding.acct.setText(String.format(Locale.getDefault(), "%s@%s", Helper.getCurrentAccount(EditProfileActivity.this).mastodon_account.acct, BaseMainActivity.currentInstance)); + MastodonHelper.loadProfileMediaMastodon(binding.bannerPp, currentAccount.mastodon_account, MastodonHelper.MediaAccountType.HEADER); + MastodonHelper.loadPPMastodon(binding.accountPp, currentAccount.mastodon_account); + binding.displayName.setText(currentAccount.mastodon_account.display_name); + binding.acct.setText(String.format(Locale.getDefault(), "%s@%s", currentAccount.mastodon_account.acct, BaseMainActivity.currentInstance)); String bio; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) - bio = Html.fromHtml(Helper.getCurrentAccount(EditProfileActivity.this).mastodon_account.note, Html.FROM_HTML_MODE_LEGACY).toString(); + bio = Html.fromHtml(currentAccount.mastodon_account.note, Html.FROM_HTML_MODE_LEGACY).toString(); else - bio = Html.fromHtml(Helper.getCurrentAccount(EditProfileActivity.this).mastodon_account.note).toString(); + bio = Html.fromHtml(currentAccount.mastodon_account.note).toString(); binding.bio.setText(bio); - if (Helper.getCurrentAccount(EditProfileActivity.this).mastodon_account.source != null) { - binding.sensitive.setChecked(Helper.getCurrentAccount(EditProfileActivity.this).mastodon_account.source.sensitive); - switch (Helper.getCurrentAccount(EditProfileActivity.this).mastodon_account.source.privacy) { + if (currentAccount.mastodon_account.source != null) { + binding.sensitive.setChecked(currentAccount.mastodon_account.source.sensitive); + switch (currentAccount.mastodon_account.source.privacy) { case "public": binding.visibilityPublic.setChecked(true); break; @@ -117,15 +118,15 @@ public class EditProfileActivity extends BaseActivity { binding.visibilityGroup.setVisibility(View.GONE); } - binding.bot.setChecked(Helper.getCurrentAccount(EditProfileActivity.this).mastodon_account.bot); - binding.discoverable.setChecked(Helper.getCurrentAccount(EditProfileActivity.this).mastodon_account.discoverable); + binding.bot.setChecked(currentAccount.mastodon_account.bot); + binding.discoverable.setChecked(currentAccount.mastodon_account.discoverable); - if (Helper.getCurrentAccount(EditProfileActivity.this).mastodon_account.locked) { + if (currentAccount.mastodon_account.locked) { binding.locked.setChecked(true); } else { binding.unlocked.setChecked(true); } - List fields = Helper.getCurrentAccount(EditProfileActivity.this).mastodon_account.fields; + List fields = currentAccount.mastodon_account.fields; if (fields != null && fields.size() > 0) { for (Field field : fields) { AccountFieldItemBinding fieldItemBinding = AccountFieldItemBinding.inflate(getLayoutInflater()); @@ -201,11 +202,11 @@ public class EditProfileActivity extends BaseActivity { if (account != null) { sendBroadCast(account); binding.avatarProgress.setVisibility(View.GONE); - Helper.getCurrentAccount(EditProfileActivity.this).mastodon_account = account; + currentAccount.mastodon_account = account; Helper.recreateMainActivity(EditProfileActivity.this); new Thread(() -> { try { - new app.fedilab.android.client.entities.app.Account(EditProfileActivity.this).insertOrUpdate(Helper.getCurrentAccount(EditProfileActivity.this)); + new app.fedilab.android.client.entities.app.Account(EditProfileActivity.this).insertOrUpdate(currentAccount); } catch (DBException e) { e.printStackTrace(); } @@ -226,10 +227,10 @@ public class EditProfileActivity extends BaseActivity { if (account != null) { sendBroadCast(account); binding.headerProgress.setVisibility(View.GONE); - Helper.getCurrentAccount(EditProfileActivity.this).mastodon_account = account; + currentAccount.mastodon_account = account; new Thread(() -> { try { - new app.fedilab.android.client.entities.app.Account(EditProfileActivity.this).insertOrUpdate(Helper.getCurrentAccount(EditProfileActivity.this)); + new app.fedilab.android.client.entities.app.Account(EditProfileActivity.this).insertOrUpdate(currentAccount); } catch (DBException e) { e.printStackTrace(); } @@ -320,10 +321,10 @@ public class EditProfileActivity extends BaseActivity { ) .observe(EditProfileActivity.this, account -> { if (account != null) { - Helper.getCurrentAccount(EditProfileActivity.this).mastodon_account = account; + currentAccount.mastodon_account = account; new Thread(() -> { try { - new app.fedilab.android.client.entities.app.Account(EditProfileActivity.this).insertOrUpdate(Helper.getCurrentAccount(EditProfileActivity.this)); + new app.fedilab.android.client.entities.app.Account(EditProfileActivity.this).insertOrUpdate(currentAccount); sendBroadCast(account); } catch (DBException e) { e.printStackTrace(); diff --git a/app/src/main/java/app/fedilab/android/activities/HashTagActivity.java b/app/src/main/java/app/fedilab/android/activities/HashTagActivity.java index a39dd857..7e7fdb90 100644 --- a/app/src/main/java/app/fedilab/android/activities/HashTagActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/HashTagActivity.java @@ -15,6 +15,8 @@ package app.fedilab.android.activities; * see . */ +import static app.fedilab.android.BaseMainActivity.currentAccount; + import android.content.Intent; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; @@ -107,7 +109,7 @@ public class HashTagActivity extends BaseActivity { } else if (item.getItemId() == R.id.action_add_timeline) { new Thread(() -> { try { - Pinned pinned = new Pinned(HashTagActivity.this).getPinned(Helper.getCurrentAccount(HashTagActivity.this)); + Pinned pinned = new Pinned(HashTagActivity.this).getPinned(currentAccount); boolean canBeAdded = true; boolean update = true; if (pinned == null) { diff --git a/app/src/main/java/app/fedilab/android/activities/LoginActivity.java b/app/src/main/java/app/fedilab/android/activities/LoginActivity.java index 9c5f431d..cefe28de 100644 --- a/app/src/main/java/app/fedilab/android/activities/LoginActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/LoginActivity.java @@ -46,10 +46,10 @@ import es.dmoral.toasty.Toasty; public class LoginActivity extends BaseActivity { - private final int PICK_IMPORT = 5557; - private boolean requestedAdmin; public static Account.API apiLogin; public static String currentInstanceLogin, client_idLogin, client_secretLogin, softwareLogin; + private final int PICK_IMPORT = 5557; + private boolean requestedAdmin; private void manageItent(Intent intent) { if (intent != null && intent.getData() != null && intent.getData().toString().contains(REDIRECT_CONTENT_WEB + "?code=")) { diff --git a/app/src/main/java/app/fedilab/android/activities/ProfileActivity.java b/app/src/main/java/app/fedilab/android/activities/ProfileActivity.java index 0f8ab11a..c7abfb8c 100644 --- a/app/src/main/java/app/fedilab/android/activities/ProfileActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/ProfileActivity.java @@ -15,6 +15,8 @@ package app.fedilab.android.activities; * see . */ +import static app.fedilab.android.BaseMainActivity.currentAccount; + import android.content.BroadcastReceiver; import android.content.ClipData; import android.content.ClipboardManager; @@ -541,7 +543,7 @@ public class ProfileActivity extends BaseActivity { private void updateAccount() { //The value for account is from same server so id can be used - if (account.id.equals(Helper.getCurrentAccount(ProfileActivity.this).user_id)) { + if (account.id.equals(currentAccount.user_id)) { binding.accountFollow.setVisibility(View.GONE); binding.headerEditProfile.setVisibility(View.VISIBLE); binding.headerEditProfile.bringToFront(); diff --git a/app/src/main/java/app/fedilab/android/activities/ScheduledActivity.java b/app/src/main/java/app/fedilab/android/activities/ScheduledActivity.java index 685bcd1d..1dc8b3cb 100644 --- a/app/src/main/java/app/fedilab/android/activities/ScheduledActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/ScheduledActivity.java @@ -14,6 +14,8 @@ package app.fedilab.android.activities; * You should have received a copy of the GNU General Public License along with Fedilab; if not, * see . */ +import static app.fedilab.android.BaseMainActivity.currentAccount; + import android.graphics.drawable.ColorDrawable; import android.os.Bundle; import android.view.MenuItem; @@ -26,7 +28,6 @@ import com.google.android.material.tabs.TabLayout; import app.fedilab.android.R; import app.fedilab.android.databinding.ActivityScheduledBinding; -import app.fedilab.android.helper.Helper; import app.fedilab.android.helper.MastodonHelper; import app.fedilab.android.helper.ThemeHelper; import app.fedilab.android.ui.pageadapter.FedilabScheduledPageAdapter; @@ -53,7 +54,7 @@ public class ScheduledActivity extends BaseActivity { getSupportActionBar().setDisplayShowHomeEnabled(true); } - MastodonHelper.loadPPMastodon(binding.profilePicture, Helper.getCurrentAccount(ScheduledActivity.this).mastodon_account); + MastodonHelper.loadPPMastodon(binding.profilePicture, currentAccount.mastodon_account); binding.title.setText(R.string.scheduled); binding.scheduleTablayout.addTab(binding.scheduleTablayout.newTab().setText(getString(R.string.toots_server))); binding.scheduleTablayout.addTab(binding.scheduleTablayout.newTab().setText(getString(R.string.toots_client))); diff --git a/app/src/main/java/app/fedilab/android/activities/SettingsActivity.java b/app/src/main/java/app/fedilab/android/activities/SettingsActivity.java index 291d7bd0..e6502caa 100644 --- a/app/src/main/java/app/fedilab/android/activities/SettingsActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/SettingsActivity.java @@ -14,6 +14,8 @@ package app.fedilab.android.activities; * You should have received a copy of the GNU General Public License along with Fedilab; if not, * see . */ +import static app.fedilab.android.BaseMainActivity.currentAccount; + import android.graphics.drawable.ColorDrawable; import android.os.Bundle; import android.view.MenuItem; @@ -31,7 +33,6 @@ import java.util.Locale; import app.fedilab.android.R; import app.fedilab.android.databinding.ActivitySettingsBinding; -import app.fedilab.android.helper.Helper; import app.fedilab.android.helper.ThemeHelper; import app.fedilab.android.ui.fragment.settings.FragmentComposeSettings; import app.fedilab.android.ui.fragment.settings.FragmentInterfaceSettings; @@ -69,7 +70,7 @@ public class SettingsActivity extends BaseActivity { binding.setTheming.setOnClickListener(v -> displaySettings(SettingsEnum.THEMING)); binding.setAdministration.setOnClickListener(v -> displaySettings(SettingsEnum.ADMINISTRATION)); binding.setLanguage.setOnClickListener(v -> displaySettings(SettingsEnum.LANGUAGE)); - if (Helper.getCurrentAccount(SettingsActivity.this).admin) { + if (currentAccount.admin) { binding.setAdministration.setVisibility(View.VISIBLE); } else { binding.setAdministration.setVisibility(View.GONE); diff --git a/app/src/main/java/app/fedilab/android/client/entities/api/Status.java b/app/src/main/java/app/fedilab/android/client/entities/api/Status.java index 72570647..96736484 100644 --- a/app/src/main/java/app/fedilab/android/client/entities/api/Status.java +++ b/app/src/main/java/app/fedilab/android/client/entities/api/Status.java @@ -105,6 +105,7 @@ public class Status implements Serializable, Cloneable { public transient boolean setCursorToEnd = false; public transient int cursorPosition = 0; public transient boolean submitted = false; + @NonNull public Object clone() throws CloneNotSupportedException { return super.clone(); diff --git a/app/src/main/java/app/fedilab/android/client/entities/app/QuickLoad.java b/app/src/main/java/app/fedilab/android/client/entities/app/QuickLoad.java index 9bc3ce6b..fc1d0b19 100644 --- a/app/src/main/java/app/fedilab/android/client/entities/app/QuickLoad.java +++ b/app/src/main/java/app/fedilab/android/client/entities/app/QuickLoad.java @@ -51,13 +51,12 @@ public class QuickLoad { @SerializedName("notifications") public List notifications; private Context _mContext; + private type typeOfFetch; public QuickLoad() { db = null; } - private type typeOfFetch; - public QuickLoad(Context context) { //Creation of the DB with tables this.db = Sqlite.getInstance(context.getApplicationContext(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); @@ -72,6 +71,16 @@ public class QuickLoad { this.typeOfFetch = type; } + /** + * Check if the current timeline can be stored + * + * @param timeLineType - Timeline.TimeLineEnum + * @return boolean + */ + private static boolean cannotBeStored(Timeline.TimeLineEnum timeLineType) { + return timeLineType != Timeline.TimeLineEnum.HOME && timeLineType != Timeline.TimeLineEnum.LOCAL && timeLineType != Timeline.TimeLineEnum.PUBLIC && timeLineType != Timeline.TimeLineEnum.REMOTE && timeLineType != Timeline.TimeLineEnum.LIST && timeLineType != Timeline.TimeLineEnum.TAG; + } + /** * Update a QuickLoad in db * @@ -99,16 +108,6 @@ public class QuickLoad { } } - /** - * Check if the current timeline can be stored - * - * @param timeLineType - Timeline.TimeLineEnum - * @return boolean - */ - private static boolean cannotBeStored(Timeline.TimeLineEnum timeLineType) { - return timeLineType != Timeline.TimeLineEnum.HOME && timeLineType != Timeline.TimeLineEnum.LOCAL && timeLineType != Timeline.TimeLineEnum.PUBLIC && timeLineType != Timeline.TimeLineEnum.REMOTE && timeLineType != Timeline.TimeLineEnum.LIST && timeLineType != Timeline.TimeLineEnum.TAG; - } - /** * Insert or update a QuickLoad * diff --git a/app/src/main/java/app/fedilab/android/helper/CacheHelper.java b/app/src/main/java/app/fedilab/android/helper/CacheHelper.java index 6e793e46..2d4e0c10 100644 --- a/app/src/main/java/app/fedilab/android/helper/CacheHelper.java +++ b/app/src/main/java/app/fedilab/android/helper/CacheHelper.java @@ -109,16 +109,6 @@ public class CacheHelper { } } - - public interface Callback { - void getCacheSize(float size); - } - - - public interface CallbackAccount { - void getcount(List countStatuses); - } - public static void clearCache(Context context, boolean clearFiles, List cacheAccounts, CallbackClear callbackClear) { new Thread(() -> { if (clearFiles) { @@ -157,6 +147,15 @@ public class CacheHelper { }).start(); } + + public interface Callback { + void getCacheSize(float size); + } + + public interface CallbackAccount { + void getcount(List countStatuses); + } + public interface CallbackClear { void onCleared(); } diff --git a/app/src/main/java/app/fedilab/android/helper/Helper.java b/app/src/main/java/app/fedilab/android/helper/Helper.java index 1fd9af9b..284e1ae3 100644 --- a/app/src/main/java/app/fedilab/android/helper/Helper.java +++ b/app/src/main/java/app/fedilab/android/helper/Helper.java @@ -15,6 +15,7 @@ package app.fedilab.android.helper; * see . */ import static android.content.Context.DOWNLOAD_SERVICE; +import static app.fedilab.android.BaseMainActivity.currentAccount; import static app.fedilab.android.webview.ProxyHelper.setProxy; import android.annotation.SuppressLint; @@ -588,7 +589,6 @@ public class Helper { return date; } - private static BaseAccount currentAccount; /** * Converts dp to pixel @@ -847,58 +847,40 @@ public class Helper { * Log out the authenticated user by removing its token * * @param activity Activity - * @param account {@link Account} * @throws DBException Exception */ - public static void removeAccount(Activity activity, BaseAccount account) throws DBException { + public static void removeAccount(Activity activity) throws DBException { SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(activity); //Current user String userId = sharedpreferences.getString(PREF_USER_ID, null); String instance = sharedpreferences.getString(PREF_USER_INSTANCE, null); Account accountDB = new Account(activity); - boolean accountRemovedIsLogged = false; - //Remove the current account - if (account == null) { - account = accountDB.getUniqAccount(userId, instance); - accountRemovedIsLogged = true; - } - if (account != null) { - BaseAccount finalAccount = account; - OauthVM oauthVM = new ViewModelProvider((ViewModelStoreOwner) activity).get(OauthVM.class); - //Revoke the token - oauthVM.revokeToken(account.instance, account.token, account.client_id, account.client_secret); - //Revoke token and remove user - new Thread(() -> { - try { - accountDB.removeUser(finalAccount); - } catch (DBException e) { - e.printStackTrace(); - } - }).start(); - } - //If the account removed is not the logged one, no need to log out the current user - if (!accountRemovedIsLogged) { - return; - } + + OauthVM oauthVM = new ViewModelProvider((ViewModelStoreOwner) activity).get(OauthVM.class); + + //Revoke the token + oauthVM.revokeToken(currentAccount.instance, currentAccount.token, currentAccount.client_id, currentAccount.client_secret); //Log out the current user + accountDB.removeUser(currentAccount); BaseAccount newAccount = accountDB.getLastUsedAccount(); SharedPreferences.Editor editor = sharedpreferences.edit(); if (newAccount == null) { editor.putString(PREF_USER_TOKEN, null); editor.putString(PREF_USER_INSTANCE, null); editor.putString(PREF_USER_ID, null); - editor.apply(); + editor.commit(); Intent loginActivity = new Intent(activity, LoginActivity.class); activity.startActivity(loginActivity); activity.finish(); } else { + currentAccount = newAccount; editor.putString(PREF_USER_TOKEN, newAccount.token); editor.putString(PREF_USER_INSTANCE, newAccount.instance); editor.putString(PREF_USER_ID, newAccount.user_id); BaseMainActivity.currentUserID = newAccount.user_id; BaseMainActivity.currentToken = newAccount.token; BaseMainActivity.currentInstance = newAccount.instance; - editor.apply(); + editor.commit(); Intent changeAccount = new Intent(activity, MainActivity.class); changeAccount.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); activity.startActivity(changeAccount); @@ -1325,31 +1307,6 @@ public class Helper { imm.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT); } - //Enum that described actions to replace inside a toot content - public enum PatternType { - MENTION, - MENTION_LONG, - TAG, - GROUP - } - - public enum NotifType { - FOLLLOW, - MENTION, - BOOST, - FAV, - POLL, - STATUS, - BACKUP, - STORE, - TOOT - } - - - public interface OnAttachmentCopied { - void onAttachmentCopied(Attachment attachment); - } - /** * Sends notification with intent * @@ -1501,7 +1458,6 @@ public class Helper { notificationManager.notify(notificationId, summaryNotification); } - public static void transfertIfExist(Context context) { File dbFile = context.getDatabasePath(OLD_DB_NAME); if (!dbFile.exists()) { @@ -1525,7 +1481,6 @@ public class Helper { context.deleteDatabase(OLD_DB_NAME); } - public static String dateDiffFull(Date dateToot) { SimpleDateFormat df = (SimpleDateFormat) DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.MEDIUM, Locale.getDefault()); try { @@ -1566,16 +1521,29 @@ public class Helper { return "@fedilab_fetch_more_" + uuid; } - public static BaseAccount getCurrentAccount(Context context) { - if (currentAccount == null) { - try { - currentAccount = new Account(context).getUniqAccount(MainActivity.currentUserID, MainActivity.currentInstance); - } catch (DBException e) { - e.printStackTrace(); - } - } - return currentAccount; + + //Enum that described actions to replace inside a toot content + public enum PatternType { + MENTION, + MENTION_LONG, + TAG, + GROUP } + public enum NotifType { + FOLLLOW, + MENTION, + BOOST, + FAV, + POLL, + STATUS, + BACKUP, + STORE, + TOOT + } + + public interface OnAttachmentCopied { + void onAttachmentCopied(Attachment attachment); + } } diff --git a/app/src/main/java/app/fedilab/android/helper/MediaHelper.java b/app/src/main/java/app/fedilab/android/helper/MediaHelper.java index 1f93a004..8d3c29a9 100644 --- a/app/src/main/java/app/fedilab/android/helper/MediaHelper.java +++ b/app/src/main/java/app/fedilab/android/helper/MediaHelper.java @@ -15,6 +15,7 @@ package app.fedilab.android.helper; * see . */ import static android.content.Context.DOWNLOAD_SERVICE; +import static app.fedilab.android.BaseMainActivity.currentAccount; import static app.fedilab.android.helper.Helper.notify_user; import android.app.Activity; @@ -162,7 +163,7 @@ public class MediaHelper { Uri uri = Uri.fromFile(backupFile); intent.setDataAndType(uri, mime); if (!share) { - notify_user(context, Helper.NOTIFICATION_MEDIA, Helper.getCurrentAccount(context), intent, BitmapFactory.decodeResource(context.getResources(), + notify_user(context, Helper.NOTIFICATION_MEDIA, currentAccount, intent, BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_launcher), Helper.NotifType.STORE, context.getString(R.string.save_over), context.getString(R.string.download_from, fileName)); Toasty.success(context, context.getString(R.string.save_over), Toasty.LENGTH_LONG).show(); } else { diff --git a/app/src/main/java/app/fedilab/android/helper/PinnedTimelineHelper.java b/app/src/main/java/app/fedilab/android/helper/PinnedTimelineHelper.java index c7abba16..9cd46d86 100644 --- a/app/src/main/java/app/fedilab/android/helper/PinnedTimelineHelper.java +++ b/app/src/main/java/app/fedilab/android/helper/PinnedTimelineHelper.java @@ -14,6 +14,7 @@ package app.fedilab.android.helper; * You should have received a copy of the GNU General Public License along with Fedilab; if not, * see . */ +import static app.fedilab.android.BaseMainActivity.currentAccount; import static app.fedilab.android.ui.pageadapter.FedilabPageAdapter.BOTTOM_TIMELINE_COUNT; import android.content.Context; @@ -261,7 +262,7 @@ public class PinnedTimelineHelper { int toRemove = 0; try { //If some menu items have been hidden we should not create tab for them - bottomMenuDb = new BottomMenu(context).getAllBottomMenu(Helper.getCurrentAccount(context)); + bottomMenuDb = new BottomMenu(context).getAllBottomMenu(currentAccount); if (bottomMenuDb != null) { List menuItemList = bottomMenuDb.bottom_menu; if (menuItemList != null) { diff --git a/app/src/main/java/app/fedilab/android/helper/SpannableHelper.java b/app/src/main/java/app/fedilab/android/helper/SpannableHelper.java index 10964b16..2b31b7db 100644 --- a/app/src/main/java/app/fedilab/android/helper/SpannableHelper.java +++ b/app/src/main/java/app/fedilab/android/helper/SpannableHelper.java @@ -15,6 +15,7 @@ package app.fedilab.android.helper; * see . */ +import static app.fedilab.android.BaseMainActivity.currentAccount; import static app.fedilab.android.helper.Helper.USER_AGENT; import static app.fedilab.android.helper.Helper.convertDpToPixel; import static app.fedilab.android.helper.Helper.urlPattern; @@ -379,7 +380,7 @@ public class SpannableHelper { Matcher matcherLink = link.matcher(url); if (matcherLink.find() && !url.contains("medium.com")) { if (matcherLink.group(3) != null && Objects.requireNonNull(matcherLink.group(3)).length() > 0) { //It's a toot - CrossActionHelper.fetchRemoteStatus(context, Helper.getCurrentAccount(context), url, new CrossActionHelper.Callback() { + CrossActionHelper.fetchRemoteStatus(context, currentAccount, url, new CrossActionHelper.Callback() { @Override public void federatedStatus(Status status) { Intent intent = new Intent(context, ContextActivity.class); @@ -394,7 +395,7 @@ public class SpannableHelper { } }); } else {//It's an account - CrossActionHelper.fetchRemoteAccount(context, Helper.getCurrentAccount(context), status.account, new CrossActionHelper.Callback() { + CrossActionHelper.fetchRemoteAccount(context, currentAccount, status.account, new CrossActionHelper.Callback() { @Override public void federatedStatus(Status status) { @@ -843,7 +844,7 @@ public class SpannableHelper { Matcher matcherLink = link.matcher(url); if (matcherLink.find() && !url.contains("medium.com")) { if (matcherLink.group(3) != null && Objects.requireNonNull(matcherLink.group(3)).length() > 0) { //It's a toot - CrossActionHelper.fetchRemoteStatus(context, Helper.getCurrentAccount(context), url, new CrossActionHelper.Callback() { + CrossActionHelper.fetchRemoteStatus(context, currentAccount, url, new CrossActionHelper.Callback() { @Override public void federatedStatus(Status status) { Intent intent = new Intent(context, ContextActivity.class); diff --git a/app/src/main/java/app/fedilab/android/ui/drawer/ComposeAdapter.java b/app/src/main/java/app/fedilab/android/ui/drawer/ComposeAdapter.java index 9248e438..9391019e 100644 --- a/app/src/main/java/app/fedilab/android/ui/drawer/ComposeAdapter.java +++ b/app/src/main/java/app/fedilab/android/ui/drawer/ComposeAdapter.java @@ -15,6 +15,7 @@ package app.fedilab.android.ui.drawer; * see . */ +import static app.fedilab.android.BaseMainActivity.currentAccount; import static app.fedilab.android.BaseMainActivity.emojis; import static app.fedilab.android.BaseMainActivity.instanceInfo; import static app.fedilab.android.activities.ComposeActivity.MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE; @@ -421,8 +422,8 @@ public class ComposeAdapter extends RecyclerView.Adapter attachmentList = statusList.get(position).media_attachments; if (attachmentList != null && attachmentList.size() > 0) { holder.binding.sensitiveMedia.setVisibility(View.VISIBLE); - holder.binding.sensitiveMedia.setChecked(Helper.getCurrentAccount(context).mastodon_account.source.sensitive); - statusList.get(position).sensitive = Helper.getCurrentAccount(context).mastodon_account.source.sensitive; + holder.binding.sensitiveMedia.setChecked(currentAccount.mastodon_account.source.sensitive); + statusList.get(position).sensitive = currentAccount.mastodon_account.source.sensitive; holder.binding.sensitiveMedia.setOnCheckedChangeListener((buttonView, isChecked) -> statusList.get(position).sensitive = isChecked); int mediaPosition = 0; for (Attachment attachment : attachmentList) { @@ -1070,8 +1071,8 @@ public class ComposeAdapter extends RecyclerView.Adapter 0) { statusDraft.visibility = statusList.get(position - 1).visibility; - } else if (Helper.getCurrentAccount(context).mastodon_account != null && Helper.getCurrentAccount(context).mastodon_account.source != null) { - statusDraft.visibility = Helper.getCurrentAccount(context).mastodon_account.source.privacy; + } else if (currentAccount.mastodon_account != null && currentAccount.mastodon_account.source != null) { + statusDraft.visibility = currentAccount.mastodon_account.source.privacy; } else { statusDraft.visibility = "public"; } diff --git a/app/src/main/java/app/fedilab/android/ui/drawer/NotificationAdapter.java b/app/src/main/java/app/fedilab/android/ui/drawer/NotificationAdapter.java index 0d214545..526427ad 100644 --- a/app/src/main/java/app/fedilab/android/ui/drawer/NotificationAdapter.java +++ b/app/src/main/java/app/fedilab/android/ui/drawer/NotificationAdapter.java @@ -58,8 +58,8 @@ public class NotificationAdapter extends RecyclerView.Adapter notificationList) { this.notificationList = notificationList; @@ -254,11 +254,6 @@ public class NotificationAdapter extends RecyclerView.Adapter private final List statusList; private final boolean minified; private final Timeline.TimeLineEnum timelineType; - private Context context; public FetchMoreCallBack fetchMoreCallBack; + private Context context; public StatusAdapter(List statuses, Timeline.TimeLineEnum timelineType, boolean minified) { this.statusList = statuses; @@ -1818,10 +1818,6 @@ public class StatusAdapter extends RecyclerView.Adapter } } - public interface FetchMoreCallBack { - void onClick(String min_id, String fetchmoreId); - } - @Override public int getItemCount() { return statusList.size(); @@ -1838,6 +1834,10 @@ public class StatusAdapter extends RecyclerView.Adapter } } + public interface FetchMoreCallBack { + void onClick(String min_id, String fetchmoreId); + } + public static class StatusViewHolder extends RecyclerView.ViewHolder { DrawerStatusBinding binding; DrawerStatusHiddenBinding bindingHidden; diff --git a/app/src/main/java/app/fedilab/android/ui/fragment/settings/FragmentInterfaceSettings.java b/app/src/main/java/app/fedilab/android/ui/fragment/settings/FragmentInterfaceSettings.java index d1da7a79..1a66b9f9 100644 --- a/app/src/main/java/app/fedilab/android/ui/fragment/settings/FragmentInterfaceSettings.java +++ b/app/src/main/java/app/fedilab/android/ui/fragment/settings/FragmentInterfaceSettings.java @@ -28,13 +28,14 @@ import es.dmoral.toasty.Toasty; public class FragmentInterfaceSettings extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener { + boolean recreate; + @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { addPreferencesFromResource(R.xml.pref_interface); createPref(); } - boolean recreate; private void createPref() { getPreferenceScreen().removeAll(); addPreferencesFromResource(R.xml.pref_interface); diff --git a/app/src/main/java/app/fedilab/android/ui/fragment/settings/FragmentThemingSettings.java b/app/src/main/java/app/fedilab/android/ui/fragment/settings/FragmentThemingSettings.java index 234161c9..25205867 100644 --- a/app/src/main/java/app/fedilab/android/ui/fragment/settings/FragmentThemingSettings.java +++ b/app/src/main/java/app/fedilab/android/ui/fragment/settings/FragmentThemingSettings.java @@ -15,6 +15,7 @@ package app.fedilab.android.ui.fragment.settings; * see . */ import static android.app.Activity.RESULT_OK; +import static app.fedilab.android.BaseMainActivity.currentAccount; import android.Manifest; import android.annotation.SuppressLint; @@ -570,7 +571,7 @@ public class FragmentThemingSettings extends PreferenceFragmentCompat implements Uri uri = Uri.parse("file://" + fullPath); intentOpen.setDataAndType(uri, "text/csv"); String title = getString(R.string.data_export_theme); - Helper.notify_user(getActivity(), Helper.NOTIFICATION_THEMING, Helper.getCurrentAccount(requireActivity()), intentOpen, BitmapFactory.decodeResource(requireActivity().getResources(), + Helper.notify_user(getActivity(), Helper.NOTIFICATION_THEMING, currentAccount, intentOpen, BitmapFactory.decodeResource(requireActivity().getResources(), R.mipmap.ic_launcher), Helper.NotifType.BACKUP, title, message); } catch (Exception e) { e.printStackTrace(); diff --git a/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonNotification.java b/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonNotification.java index ed43a946..ebd49436 100644 --- a/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonNotification.java +++ b/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonNotification.java @@ -60,11 +60,11 @@ import app.fedilab.android.viewmodel.mastodon.NotificationsVM; public class FragmentMastodonNotification extends Fragment implements NotificationAdapter.FetchMoreCallBack { + private static final int NOTIFICATION_PRESENT = -1; + private static final int NOTIFICATION__AT_THE_BOTTOM = -2; private FragmentPaginationBinding binding; private NotificationsVM notificationsVM; private boolean flagLoading; - private static final int NOTIFICATION_PRESENT = -1; - private static final int NOTIFICATION__AT_THE_BOTTOM = -2; private List notificationList; private NotificationAdapter notificationAdapter; private final BroadcastReceiver receive_action = new BroadcastReceiver() { @@ -177,7 +177,6 @@ public class FragmentMastodonNotification extends Fragment implements Notificati } - @Override public void onResume() { super.onResume(); @@ -510,6 +509,26 @@ public class FragmentMastodonNotification extends Fragment implements Notificati super.onPause(); } + @Override + public void onClick(String min_id, String id) { + //Fetch more has been pressed + min_id_fetch_more = min_id; + Notification notification = null; + int position = 0; + for (Notification currentNotification : this.notificationList) { + if (currentNotification.id.compareTo(id) == 0) { + notification = currentNotification; + break; + } + position++; + } + if (notification != null) { + this.notificationList.remove(position); + notificationAdapter.notifyItemRemoved(position); + } + route(FragmentMastodonTimeline.DIRECTION.TOP, true); + } + public enum NotificationTypeEnum { @SerializedName("ALL") @@ -537,25 +556,4 @@ public class FragmentMastodonNotification extends Fragment implements Notificati return value; } } - - - @Override - public void onClick(String min_id, String id) { - //Fetch more has been pressed - min_id_fetch_more = min_id; - Notification notification = null; - int position = 0; - for (Notification currentNotification : this.notificationList) { - if (currentNotification.id.compareTo(id) == 0) { - notification = currentNotification; - break; - } - position++; - } - if (notification != null) { - this.notificationList.remove(position); - notificationAdapter.notifyItemRemoved(position); - } - route(FragmentMastodonTimeline.DIRECTION.TOP, true); - } } \ No newline at end of file diff --git a/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentScheduled.java b/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentScheduled.java index 5d1b1798..132aaebc 100644 --- a/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentScheduled.java +++ b/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentScheduled.java @@ -14,6 +14,8 @@ package app.fedilab.android.ui.fragment.timeline; * You should have received a copy of the GNU General Public License along with Fedilab; if not, * see . */ +import static app.fedilab.android.BaseMainActivity.currentAccount; + import android.os.Bundle; import android.os.Handler; import android.os.Looper; @@ -80,7 +82,7 @@ public class FragmentScheduled extends Fragment implements StatusScheduledAdapte } else if (type == Timeline.TimeLineEnum.SCHEDULED_TOOT_CLIENT) { new Thread(() -> { try { - List scheduledDrafts = new StatusDraft(requireActivity()).geStatusDraftScheduledList(Helper.getCurrentAccount(requireActivity())); + List scheduledDrafts = new StatusDraft(requireActivity()).geStatusDraftScheduledList(currentAccount); Handler mainHandler = new Handler(Looper.getMainLooper()); binding.loader.setVisibility(View.GONE); Runnable myRunnable = () -> { @@ -105,7 +107,7 @@ public class FragmentScheduled extends Fragment implements StatusScheduledAdapte } else if (type == Timeline.TimeLineEnum.SCHEDULED_BOOST) { new Thread(() -> { try { - List scheduledBoosts = new ScheduledBoost(requireActivity()).getScheduled(Helper.getCurrentAccount(requireActivity())); + List scheduledBoosts = new ScheduledBoost(requireActivity()).getScheduled(currentAccount); Handler mainHandler = new Handler(Looper.getMainLooper()); Runnable myRunnable = () -> { binding.loader.setVisibility(View.GONE); diff --git a/app/src/main/java/app/fedilab/android/viewmodel/mastodon/ReorderVM.java b/app/src/main/java/app/fedilab/android/viewmodel/mastodon/ReorderVM.java index 05387752..6a2ecccd 100644 --- a/app/src/main/java/app/fedilab/android/viewmodel/mastodon/ReorderVM.java +++ b/app/src/main/java/app/fedilab/android/viewmodel/mastodon/ReorderVM.java @@ -14,6 +14,8 @@ package app.fedilab.android.viewmodel.mastodon; * You should have received a copy of the GNU General Public License along with Fedilab; if not, * see . */ +import static app.fedilab.android.BaseMainActivity.currentAccount; + import android.app.Application; import android.os.Handler; import android.os.Looper; @@ -68,7 +70,7 @@ public class ReorderVM extends AndroidViewModel { new Thread(() -> { Pinned pinned = null; try { - pinned = new Pinned(getApplication().getApplicationContext()).getAllPinned(Helper.getCurrentAccount(getApplication().getApplicationContext())); + pinned = new Pinned(getApplication().getApplicationContext()).getAllPinned(currentAccount); } catch (DBException e) { e.printStackTrace(); } @@ -86,7 +88,7 @@ public class ReorderVM extends AndroidViewModel { new Thread(() -> { BottomMenu bottomMenu = null; try { - bottomMenu = new BottomMenu(getApplication().getApplicationContext()).getAllBottomMenu(Helper.getCurrentAccount(getApplication().getApplicationContext())); + bottomMenu = new BottomMenu(getApplication().getApplicationContext()).getAllBottomMenu(currentAccount); } catch (DBException e) { e.printStackTrace(); } diff --git a/app/src/main/java/app/fedilab/android/viewmodel/mastodon/TopBarVM.java b/app/src/main/java/app/fedilab/android/viewmodel/mastodon/TopBarVM.java index 0ae8c3ab..fc8fd4dc 100644 --- a/app/src/main/java/app/fedilab/android/viewmodel/mastodon/TopBarVM.java +++ b/app/src/main/java/app/fedilab/android/viewmodel/mastodon/TopBarVM.java @@ -14,6 +14,8 @@ package app.fedilab.android.viewmodel.mastodon; * You should have received a copy of the GNU General Public License along with Fedilab; if not, * see . */ +import static app.fedilab.android.BaseMainActivity.currentAccount; + import android.app.Application; import android.os.Handler; import android.os.Looper; @@ -25,7 +27,7 @@ import androidx.lifecycle.MutableLiveData; import app.fedilab.android.client.entities.app.Pinned; import app.fedilab.android.exception.DBException; -import app.fedilab.android.helper.Helper; + public class TopBarVM extends AndroidViewModel { @@ -42,7 +44,7 @@ public class TopBarVM extends AndroidViewModel { Handler mainHandler = new Handler(Looper.getMainLooper()); Pinned pinnedTimeline = null; try { - pinnedTimeline = pinned.getPinned(Helper.getCurrentAccount(getApplication().getApplicationContext())); + pinnedTimeline = pinned.getPinned(currentAccount); } catch (DBException e) { e.printStackTrace(); }