move reacting to profile changes after the check for theme change
authorDamyan Ivanov <dam+mobileledger@ktnx.net>
Sat, 16 May 2020 10:55:06 +0000 (13:55 +0300)
committerDamyan Ivanov <dam+mobileledger@ktnx.net>
Sat, 16 May 2020 10:55:06 +0000 (13:55 +0300)
this is because a changed theme will recreate the activity, so there
is no need to do any work that will be done upon the re-creation

app/src/main/java/net/ktnx/mobileledger/ui/activity/MainActivity.java

index dace5c4..bedd3b3 100644 (file)
@@ -410,8 +410,6 @@ public class MainActivity extends ProfileThemedActivity {
      */
     private void onProfileChanged(MobileLedgerProfile profile) {
         boolean haveProfile = profile != null;
-        findViewById(R.id.no_profiles_layout).setVisibility(haveProfile ? View.GONE : View.VISIBLE);
-        findViewById(R.id.pager_layout).setVisibility(haveProfile ? View.VISIBLE : View.VISIBLE);
 
         if (haveProfile)
             setTitle(profile.getName());
@@ -420,20 +418,23 @@ public class MainActivity extends ProfileThemedActivity {
 
         this.profile = profile;
 
-        mProfileListAdapter.notifyDataSetChanged();
-
         int newProfileTheme = haveProfile ? profile.getThemeHue() : -1;
         if (newProfileTheme != Colors.profileThemeId) {
             debug("profiles",
                     String.format(Locale.ENGLISH, "profile theme %d → %d", Colors.profileThemeId,
                             newProfileTheme));
-            MainActivity.this.profileThemeChanged();
             Colors.profileThemeId = newProfileTheme;
+            profileThemeChanged();
             // profileThemeChanged would restart the activity, so no need to reload the
             // data sets below
             return;
         }
 
+        findViewById(R.id.no_profiles_layout).setVisibility(haveProfile ? View.GONE : View.VISIBLE);
+        findViewById(R.id.pager_layout).setVisibility(haveProfile ? View.VISIBLE : View.VISIBLE);
+
+        mProfileListAdapter.notifyDataSetChanged();
+
         drawer.closeDrawers();
 
         Data.transactions.clear();