From 41ab384e1f88506f059b5e5f3199b8790f2aa68b Mon Sep 17 00:00:00 2001 From: Vologhat <47892605+Vologhat@users.noreply.github.com> Date: Mon, 2 May 2022 18:07:04 +0300 Subject: [PATCH] fix #204 (null pointer while account deleting) --- .../multiaccount/MultiAccountManager.java | 24 ++++++++++++++++--- .../com/vtosters/lite/AuthActivity.smali | 2 ++ 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/multiaccount/MultiAccountManager.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/multiaccount/MultiAccountManager.java index f3d8908ad..784e77510 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/multiaccount/MultiAccountManager.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/multiaccount/MultiAccountManager.java @@ -12,6 +12,8 @@ import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; +import ru.vtosters.lite.utils.Globals; + public class MultiAccountManager { public static void migrate() { @@ -20,7 +22,15 @@ public class MultiAccountManager { SharedPreferences NewPrefs = getContext().getSharedPreferences("pref_account_manager0", Context.MODE_PRIVATE); SharedPreferences.Editor editor = NewPrefs.edit(); editor.putString("key_vk_account", OldPrefsValue); - editor.apply(); + editor.commit(); + } + + public static void migrationRestart() { + SharedPreferences prefs = getPreferences(); + if (prefs.getBoolean("multiaccount_restart", true)) { + prefs.edit().putBoolean("multiaccount_restart", false).commit(); + Globals.restartApplication(); + } } public static SharedPreferences getCurrentAccount() { @@ -80,7 +90,15 @@ public class MultiAccountManager { prefs.edit().clear().commit(); File file = new File(new File(getContext().getFilesDir().getParent(), "shared_prefs"), "pref_account_manager" + i); if (file.exists()) file.delete(); - if (account == i && getAccountPrefsCount() > 0) - switchAccount(buildList().get(0).index); + if (account == i && getAccountPrefsCount() > 0) { + List accounts = buildList(); + if (accounts.size() > 0) + switchAccount(buildList().get(0).index); + else { + getContext().getSharedPreferences("pref_account_manager", Context.MODE_PRIVATE) + .edit().clear().commit(); + Globals.getPreferences().edit().putBoolean("multiaccount_restart", true).commit(); + } + } } } diff --git a/smali/smali_classes4/com/vtosters/lite/AuthActivity.smali b/smali/smali_classes4/com/vtosters/lite/AuthActivity.smali index 2b2fc72ab..c3654ea26 100644 --- a/smali/smali_classes4/com/vtosters/lite/AuthActivity.smali +++ b/smali/smali_classes4/com/vtosters/lite/AuthActivity.smali @@ -500,6 +500,8 @@ :cond_1 invoke-super {p0}, Landroid/support/v4/app/FragmentActivity;->finish()V + invoke-static {}, Lru/vtosters/lite/ui/fragments/multiaccount/MultiAccountManager;->migrationRestart()V + return-void .end method