diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/AccountsFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/AccountsFragment.java new file mode 100644 index 000000000..e74e9c06b --- /dev/null +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/AccountsFragment.java @@ -0,0 +1,53 @@ +package ru.vtosters.lite.ui.fragments; + +import static ru.vtosters.lite.utils.Helper.GetPreferences; +import static ru.vtosters.lite.utils.Helper.getUserLastName; + +import android.os.Bundle; + +import com.vk.audio.AudioMessageUtils; +import com.vk.core.f.FileUtils; +import com.vk.imageloader.VKImageLoader; +import com.vtosters.lite.fragments.MaterialPreferenceToolbarFragment; +import com.vtosters.lite.im.ImEngineProvider; + +import ru.vtosters.lite.tgs.TGRoot; +import ru.vtosters.lite.ui.PreferencesUtil; +import ru.vtosters.lite.utils.AccountManager; +import ru.vtosters.lite.utils.Helper; + +public class AccountsFragment extends MaterialPreferenceToolbarFragment { + + @Override + public void b(Bundle bundle) { + super.b(bundle); + + int vtosterXml = Helper.GetContext().getResources().getIdentifier("empty", "xml", Helper.GetContext().getPackageName()); + this.a(vtosterXml); + + PreferencesUtil.addPreferenceCategory(this, "Аккаунты"); + + PreferencesUtil.addListPreference(this, "account", "", "Выберите аккаунт", new CharSequence[]{ + AccountManager.getName(""), AccountManager.getName("1") + }, new String[]{ + "", "1" + }); + + a("account").b(AccountManager.getCurrentAccountName()); + + a("account").a((preference, o) -> { + VKImageLoader.b(); + ImEngineProvider.a().h(); + AudioMessageUtils.j(); + FileUtils.l(); + //Helper.restarting(); TODO Implement a soft restart for activities and fragments or hard restart after applying changes + return true; + }); + } + + @Override + public int aq() { + return Helper.GetContext().getResources().getIdentifier("sett_account", "string", Helper.GetContext().getPackageName()); + } + +} diff --git a/app/src/main/java/ru/vtosters/lite/utils/AccountManager.java b/app/src/main/java/ru/vtosters/lite/utils/AccountManager.java new file mode 100644 index 000000000..0e9421404 --- /dev/null +++ b/app/src/main/java/ru/vtosters/lite/utils/AccountManager.java @@ -0,0 +1,34 @@ +package ru.vtosters.lite.utils; + +import static android.content.Context.MODE_PRIVATE; + +import android.content.SharedPreferences; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class AccountManager { + public static SharedPreferences getCurrentAccount() { + String Value = ru.vtosters.lite.utils.Helper.GetPreferences().getString("account", ""); + return Helper.GetContext().getSharedPreferences("pref_account_manager" + Value, MODE_PRIVATE); + } + + public static String getCurrentAccountName() { + String Value = ru.vtosters.lite.utils.Helper.GetPreferences().getString("account", ""); + return getName(Value); + } + + public static SharedPreferences getNeededAccount(String str) { + return Helper.GetContext().getSharedPreferences("pref_account_manager" + str, MODE_PRIVATE); + } + + public static String getName(String str) { + Pattern pattern = Pattern.compile(".*\"name\":\\{.*?:\"(.*?)\"\\}.*"); + Matcher matcher = pattern.matcher(getNeededAccount(str).getString("key_vk_account", "")); + if (matcher.find()) { + String group = matcher.group(1); + return group; + } + return "err"; + } +} diff --git a/smali/smali/com/vtosters/lite/auth/VKAccountManager.smali b/smali/smali/com/vtosters/lite/auth/VKAccountManager.smali index f53aea95a..650bb499b 100644 --- a/smali/smali/com/vtosters/lite/auth/VKAccountManager.smali +++ b/smali/smali/com/vtosters/lite/auth/VKAccountManager.smali @@ -587,6 +587,12 @@ .method public static e()Landroid/content/SharedPreferences; .locals 3 + invoke-static {}, Lru/vtosters/lite/utils/AccountManager;->getCurrentAccount()Landroid/content/SharedPreferences; + + move-result-object v0 + + return-object v0 + .line 184 sget-object v0, Lcom/vk/core/util/AppContextHolder;->a:Landroid/content/Context; diff --git a/smali/smali_classes2/com/vtosters/lite/fragments/SettingsListFragment$b.smali b/smali/smali_classes2/com/vtosters/lite/fragments/SettingsListFragment$b.smali index ec109bac5..adc8e6123 100644 --- a/smali/smali_classes2/com/vtosters/lite/fragments/SettingsListFragment$b.smali +++ b/smali/smali_classes2/com/vtosters/lite/fragments/SettingsListFragment$b.smali @@ -122,6 +122,35 @@ if-eqz v5, :cond_7 + new-instance v5, Lcom/vtosters/lite/fragments/SettingsListFragment$a; + + const v6, 0x7f08063e + + iget-object v7, p0, Lcom/vtosters/lite/fragments/SettingsListFragment$b;->a:Lcom/vtosters/lite/fragments/SettingsListFragment; + + invoke-static {v7}, Lcom/vtosters/lite/fragments/SettingsListFragment;->a(Lcom/vtosters/lite/fragments/SettingsListFragment;)I + + move-result v7 + + # const v8, 0x7f110fef + + # invoke-static {v8}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; + + # move-result-object v8 + + const-string v8, "Мультиаккаунт" + + const-class v9, Lru/vtosters/lite/ui/fragments/AccountsFragment; + + invoke-direct {v5, v6, v7, v8, v9}, Lcom/vtosters/lite/fragments/SettingsListFragment$a;->(IILjava/lang/Object;Ljava/lang/Class;)V + + invoke-static {v4, v5}, Lcom/vtosters/lite/ui/holder/RecyclerSectionAdapter$a;->a(ILjava/lang/Object;)Lcom/vtosters/lite/ui/holder/RecyclerSectionAdapter$a; + + move-result-object v5 + + invoke-virtual {v0, v5}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z + + new-instance v5, Lcom/vtosters/lite/fragments/SettingsListFragment$a; const v6, 0x7f0802d3