diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/VTSettings.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/VTSettings.java index e3cd2866d..114b7d96b 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/VTSettings.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/VTSettings.java @@ -2,9 +2,6 @@ package ru.vtosters.lite.ui.fragments; import static bruhcollective.itaysonlab.libvkx.client.LibVKXClient.isIntegrationEnabled; import static ru.vtosters.lite.f0x1d.VTVerifications.vtverif; -import static ru.vtosters.lite.ui.fragments.multiaccount.MultiAccountManager.getCurrentAccount; -import static ru.vtosters.lite.ui.fragments.multiaccount.MultiAccountManager.withRegex; -import static ru.vtosters.lite.ui.fragments.multiaccount.MultiAccountManager.workingAccounts; import static ru.vtosters.lite.utils.About.getBuildNumber; import static ru.vtosters.lite.utils.About.getCommitLink; import static ru.vtosters.lite.utils.CacheUtils.humanReadableByteCountBin; @@ -55,7 +52,6 @@ import ru.vtosters.lite.ui.PreferencesUtil; import ru.vtosters.lite.ui.dialogs.OTADialog; import ru.vtosters.lite.ui.fragments.dockbar.DockBarFragment; import ru.vtosters.lite.ui.fragments.dockbar.DockBarManager; -import ru.vtosters.lite.ui.fragments.multiaccount.MultiAccountFragment; import ru.vtosters.lite.ui.fragments.tgstickers.StickersFragment; import ru.vtosters.lite.utils.CacheUtils; import ru.vtosters.lite.utils.Globals; @@ -81,7 +77,6 @@ public class VTSettings extends MaterialPreferenceToolbarFragment { String interfacesumm = getValAsString("vtlinterfacesumm", shortinfo()); String proxysumm = getValAsString("vtlproxysumm", !getPrefsValue("proxy").equals("noproxy")); String othersumm = getValAsString("vtlothersumm", vtverif()); - String multiaccsumm = getMultiAccsumm(); String ssfs = getSSFSsumm(); String about = "Commit: " + getBuildNumber(); @@ -91,18 +86,11 @@ public class VTSettings extends MaterialPreferenceToolbarFragment { if (vkme()) { PreferencesUtil.addPreferenceDrawable(this, "", name, id, drawableFromUrl(avatarUrl), preference -> { Context context = getContext(); - Intent a2 = new Navigator(MultiAccountFragment.class).b(context); + Intent a2 = new Navigator(SettingsAccountFragment.class).b(context); context.startActivity(a2); return false; }); } else { - PreferencesUtil.addPreference(this, "", Globals.getString("accounts"), multiaccsumm, "ic_user_24", preference -> { - Context context = getContext(); - Intent a2 = new Navigator(MultiAccountFragment.class).b(context); - context.startActivity(a2); - return false; - }); - PreferencesUtil.addPreferenceCategory(this, Globals.getString("vtsettdarktheme")); } @@ -391,12 +379,6 @@ public class VTSettings extends MaterialPreferenceToolbarFragment { return Globals.getString("vtltgssumm") + ": " + TelegramStickersService.getInstance(Globals.getContext()).getPacksListReference().size(); } - public static String getMultiAccsumm() { - if(disableSettingsSumms() || workingAccounts() <= 1) return ""; - - return Globals.getString("vtlmultiaccsumm") + ": " + workingAccounts(); - } - @Override public int T4() { return getIdentifier("notification_settings", "string"); diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/multiaccount/MultiAccontItem.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/multiaccount/MultiAccontItem.java deleted file mode 100644 index 4e776ea77..000000000 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/multiaccount/MultiAccontItem.java +++ /dev/null @@ -1,13 +0,0 @@ -package ru.vtosters.lite.ui.fragments.multiaccount; - -class MultiAccountItem { - public String nickname; - public String imageUrl; - public int index; - - public MultiAccountItem(String name, String imageUrl, int index) { - this.nickname = name; - this.imageUrl = imageUrl; - this.index = index; - } -} diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/multiaccount/MultiAccountAdapter.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/multiaccount/MultiAccountAdapter.java deleted file mode 100644 index c40b13fdc..000000000 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/multiaccount/MultiAccountAdapter.java +++ /dev/null @@ -1,182 +0,0 @@ -package ru.vtosters.lite.ui.fragments.multiaccount; - -import static ru.vtosters.lite.utils.Globals.convertDpToPixel; -import static ru.vtosters.lite.utils.Globals.getContext; -import static ru.vtosters.lite.utils.Globals.getResources; -import static ru.vtosters.lite.utils.Globals.getString; -import static ru.vtosters.lite.utils.Globals.isNetworkConnected; -import static ru.vtosters.lite.utils.Globals.restartApplication; -import static ru.vtosters.lite.utils.Themes.getTextAttr; -import static ru.vtosters.lite.utils.Themes.recolorDrawable; - -import android.content.Context; -import android.content.SharedPreferences; -import android.graphics.Typeface; -import android.graphics.drawable.Drawable; -import android.text.TextUtils; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageButton; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.recyclerview.widget.RecyclerView; - -import com.vk.audio.AudioMessageUtils; -import com.vk.auth.api.VKAccount; -import com.vk.core.util.AppContextHolder; -import com.vk.imageloader.VKImageLoader; -import com.vk.imageloader.view.VKCircleImageView; -import com.vk.pushes.PushSubscriber; -import com.vtosters.lite.R; -import com.vtosters.lite.auth.VKAccountManager; -import com.vtosters.lite.im.ImEngineProvider; - -import java.util.List; - -public class MultiAccountAdapter extends RecyclerView.a { - - private final List mAccounts = MultiAccountManager.buildList(); - - @Override - public MultiAccountViewHolder b(ViewGroup parent, int viewType) { - RelativeLayout layout = new RelativeLayout(parent.getContext()); - layout.setPadding( - convertDpToPixel(12), - convertDpToPixel(6), - convertDpToPixel(6), - convertDpToPixel(6) - ); - - VKCircleImageView avatar = new VKCircleImageView(parent.getContext()); - avatar.setId(1); - RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams( - convertDpToPixel(48), - convertDpToPixel(48) - ); - params.addRule(RelativeLayout.ALIGN_PARENT_LEFT); - params.addRule(RelativeLayout.CENTER_VERTICAL); - layout.addView(avatar, params); - - TextView nickname = new TextView(parent.getContext()); - nickname.setId(2); - nickname.setPaddingRelative( - convertDpToPixel(12), - 0, - 0, - 0 - ); - nickname.setEllipsize(TextUtils.TruncateAt.END); - nickname.setSingleLine(true); - nickname.setTextSize(15.0f); - nickname.setTextColor(getTextAttr()); - nickname.setTypeface(Typeface.create("sans-serif-medium", Typeface.NORMAL)); - RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(-2, -2); - params1.addRule(RelativeLayout.CENTER_VERTICAL); - params1.addRule(RelativeLayout.RIGHT_OF, 1); - layout.addView(nickname, params1); - - ImageButton action = new ImageButton(parent.getContext()); - action.setId(3); - action.setBackgroundResource(com.vtosters.lite.R.drawable.rounded_list_selector); - Drawable drawable = recolorDrawable(getResources().getDrawable(R.drawable.ic_list_remove)); - action.setImageDrawable(drawable); - RelativeLayout.LayoutParams params2 = new RelativeLayout.LayoutParams( - convertDpToPixel(48), - convertDpToPixel(48) - ); - params2.addRule(RelativeLayout.CENTER_VERTICAL); - params2.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); - layout.addView(action, params2); - - return new MultiAccountViewHolder(layout); - } - - @Override - public void a(MultiAccountViewHolder holder, int pos) { - holder.bind(pos == 0 ? null : mAccounts.get(pos - 1), pos); - } - - @Override - public int au_() { - return mAccounts.size() + 1; - } - - static class MultiAccountViewHolder extends RecyclerView.x { - - private final RelativeLayout mContainer; - private final VKCircleImageView mAvatar; - private final TextView mNickname; - private final ImageButton mAction; - - public MultiAccountViewHolder(View view) { - super(view); - - mContainer = (RelativeLayout) view; - mAvatar = view.findViewById(1); - mNickname = view.findViewById(2); - mAction = view.findViewById(3); - } - - public void bind(MultiAccountItem item, int pos) { - if (pos == 0) { - mNickname.setText(getString("add_another_account")); - mContainer.setOnClickListener(v -> { - MultiAccountManager.addAccount(); - - VKImageLoader.b(); - ImEngineProvider.a().h(); - AudioMessageUtils.j(); - FileUtils.l(); - VKAccount b = VKAccountManager.b(); - PushSubscriber.a.a(b.b(), b.c()); - AppContextHolder.a.getSharedPreferences("gcm", 0).edit().clear().apply(); - SharedPreferences prefs = getContext().getSharedPreferences("stickers", Context.MODE_PRIVATE); - prefs.edit().clear().commit(); - restartApplication(); - }); - Drawable drawable = recolorDrawable(getResources().getDrawable(R.drawable.ic_list_add)); - mAction.setImageDrawable(drawable); - mAction.setClickable(false); - } else { - mContainer.setOnClickListener(v -> { - MultiAccountManager.switchAccount(item.index); - - VKImageLoader.b(); - ImEngineProvider.a().h(); - AudioMessageUtils.j(); - FileUtils.l(); - VKAccount b = VKAccountManager.b(); - PushSubscriber.a.a(b.b(), b.c()); - AppContextHolder.a.getSharedPreferences("gcm", 0).edit().clear().apply(); - SharedPreferences prefs = getContext().getSharedPreferences("stickers", Context.MODE_PRIVATE); - prefs.edit().clear().commit(); - restartApplication(); - - }); - - if (isNetworkConnected()) - mAvatar.a(item.imageUrl); - else - mAvatar.a(R.drawable.vkim_ic_placeholder_user_square_64dp); - - mNickname.setText(item.nickname); - - mAction.setOnClickListener(v -> { - MultiAccountManager.deleteAccount(item.index); - - VKImageLoader.b(); - ImEngineProvider.a().h(); - AudioMessageUtils.j(); - FileUtils.l(); - VKAccount b = VKAccountManager.b(); - PushSubscriber.a.a(b.b(), b.c()); - AppContextHolder.a.getSharedPreferences("gcm", 0).edit().clear().apply(); - SharedPreferences prefs = getContext().getSharedPreferences("stickers", Context.MODE_PRIVATE); - prefs.edit().clear().commit(); - restartApplication(); - }); - } - } - } -} diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/multiaccount/MultiAccountFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/multiaccount/MultiAccountFragment.java deleted file mode 100644 index 9344c08a8..000000000 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/multiaccount/MultiAccountFragment.java +++ /dev/null @@ -1,43 +0,0 @@ -package ru.vtosters.lite.ui.fragments.multiaccount; - -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.LinearLayout; - -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.vk.core.fragments.FragmentImpl.a; - -import me.grishka.appkit.fragments.ToolbarFragment; - -public class MultiAccountFragment extends ToolbarFragment { - - private RecyclerView mRecyclerView; - private MultiAccountAdapter mAdapter; - - @Override - public View d(LayoutInflater layoutInflater, ViewGroup viewGroup, Bundle bundle) { - - LinearLayout layout = new LinearLayout(n()); - - mRecyclerView = new RecyclerView(n()); - mRecyclerView.setLayoutManager(new LinearLayoutManager(n())); - mAdapter = new MultiAccountAdapter(); - mRecyclerView.setAdapter(mAdapter); - layout.addView(mRecyclerView, new LinearLayout.LayoutParams(-1, -1)); - - return layout; - } - - @Override - public void a(View arg0, Bundle arg1) { - o_(true); - - super.a(arg0, arg1); - - a(getString("accounts")); - } -} 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 deleted file mode 100644 index 9ca869e2e..000000000 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/multiaccount/MultiAccountManager.java +++ /dev/null @@ -1,116 +0,0 @@ -package ru.vtosters.lite.ui.fragments.multiaccount; - -import static ru.vtosters.lite.utils.Globals.getContext; -import static ru.vtosters.lite.utils.Globals.getPreferences; - -import android.content.Context; -import android.content.SharedPreferences; - -import java.io.File; -import java.util.ArrayList; -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() { - SharedPreferences OldPrefs = getContext().getSharedPreferences("pref_account_manager", Context.MODE_PRIVATE); - String OldPrefsValue = OldPrefs.getString("key_vk_account", ""); - SharedPreferences NewPrefs = getContext().getSharedPreferences("pref_account_manager0", Context.MODE_PRIVATE); - SharedPreferences.Editor editor = NewPrefs.edit(); - editor.putString("key_vk_account", OldPrefsValue); - 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() { - int account = getPreferences().getInt("account", 0); - return getContext().getSharedPreferences("pref_account_manager" + (account != 0 ? account : ""), Context.MODE_PRIVATE); - } - - public static int getAccountPrefsCount() { - File[] prefs = new File(getContext().getFilesDir().getParent(), "shared_prefs") - .listFiles((dir, name) -> { - return name.matches("pref_account_manager\\d+\\.xml"); - }); - return prefs != null ? prefs.length : 0; - } - - public static String withRegex(String base, String regex, String def) { - Pattern pattern = Pattern.compile(regex); - Matcher matcher = pattern.matcher(base); - if (matcher.find()) { - return matcher.group(1); - } - return def; - } - - public static List buildList() { - List list = new ArrayList<>(); - for (int i = 0; i <= workingAccounts(); i++) { - SharedPreferences prefs = getContext().getSharedPreferences("pref_account_manager" + i, Context.MODE_PRIVATE); - String keyVKAccount = prefs.getString("key_vk_account", ""); - if (!keyVKAccount.isEmpty()) { - String name = withRegex(keyVKAccount, ".*\"name\":\\{.*?:\"(.*?)\"\\}.*", ""); - String avatarUrl = withRegex(keyVKAccount, ".*\"photo\":\\{.*?:\"(.*?)\"\\}.*", "https://vk.com/images/camera_200.png") - .replace("\\/", "/"); - list.add(new MultiAccountItem( - name, avatarUrl, i - )); - } - } - return list; - } - - public static int workingAccounts() { - int count = 0; - for (int i = 0; i <= getAccountPrefsCount(); i++) { - SharedPreferences prefs = getContext().getSharedPreferences("pref_account_manager" + i, Context.MODE_PRIVATE); - String keyVKAccount = prefs.getString("key_vk_account", ""); - if (!keyVKAccount.isEmpty()) { - ++count; - } - } - return count; - } - - public static boolean switchAccount(int i) { - int account = getPreferences().getInt("account", 0); - if (account == i) return false; - - getPreferences().edit().putInt("account", i).commit(); - return true; - } - - public static void addAccount() { - getPreferences().edit().putInt("account", workingAccounts() + 1).commit(); - } - - public static void deleteAccount(int i) { - int account = getPreferences().getInt("account", 0); - SharedPreferences prefs = getContext().getSharedPreferences("pref_account_manager" + i, Context.MODE_PRIVATE); - 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) { - 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/app/src/main/java/ru/vtosters/lite/utils/Preferences.java b/app/src/main/java/ru/vtosters/lite/utils/Preferences.java index 4ea6c409e..3e5e1203e 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/Preferences.java +++ b/app/src/main/java/ru/vtosters/lite/utils/Preferences.java @@ -4,7 +4,6 @@ import static android.os.Build.VERSION; import static java.lang.Long.MAX_VALUE; import static ru.vtosters.lite.f0x1d.VTVerifications.hasPrometheus; import static ru.vtosters.lite.f0x1d.VTVerifications.isVerified; -import static ru.vtosters.lite.ui.fragments.multiaccount.MultiAccountManager.migrate; import static ru.vtosters.lite.utils.CacheUtils.getInstance; import static ru.vtosters.lite.utils.DeletedMessagesHandler.reloadMessagesList; import static ru.vtosters.lite.utils.Globals.fixGapps;