diff --git a/app/src/main/java/ru/vtosters/hooks/other/Preferences.java b/app/src/main/java/ru/vtosters/hooks/other/Preferences.java
index 3b04c0556..3db2b420c 100644
--- a/app/src/main/java/ru/vtosters/hooks/other/Preferences.java
+++ b/app/src/main/java/ru/vtosters/hooks/other/Preferences.java
@@ -330,7 +330,7 @@ public class Preferences {
}
public static long getSizeForDelete() {
- return switch (Preferences.getPreferences().getString("clearcache", "")) {
+ return switch (Preferences.getPreferences().getString("autoclearcache", "")) {
case "100mb" -> 104857600L;
case "500mb" -> 524288000L;
case "1gb" -> 1073741824L;
diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/DataSettingsFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/DataSettingsFragment.java
index cd72eb5ac..78306f9bd 100644
--- a/app/src/main/java/ru/vtosters/lite/ui/fragments/DataSettingsFragment.java
+++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/DataSettingsFragment.java
@@ -1,21 +1,37 @@
package ru.vtosters.lite.ui.fragments;
+import android.annotation.SuppressLint;
import android.app.Activity;
+import android.content.Context;
import android.content.Intent;
+import android.content.SharedPreferences;
import android.os.Build;
import android.os.Bundle;
+import android.util.TypedValue;
import android.view.View;
import android.view.WindowInsetsController;
+import android.webkit.WebView;
+import android.widget.RadioButton;
+import android.widget.RadioGroup;
import android.widget.Toast;
+import androidx.appcompat.view.ContextThemeWrapper;
+import b.h.g.m.FileUtils;
import com.vk.core.dialogs.alert.VkAlertDialog;
+import com.vk.im.engine.ImEngine1;
+import com.vk.im.engine.ImEngineExt;
+import com.vk.im.ui.providers.audiomsg.ImAudioMsgPlayerProvider;
+import com.vk.im.ui.providers.audiomsg.PlayerActionSources;
+import com.vk.imageloader.VKImageLoader;
+import com.vk.media.player.cache.AutoPlayCacheHolder;
+import com.vk.mediastore.MediaStorage;
+import com.vk.stickers.Stickers;
+import com.vtosters.lite.im.ImEngineProvider;
+import ru.vtosters.hooks.SwitchHook;
import ru.vtosters.hooks.other.Preferences;
import ru.vtosters.hooks.other.ThemesUtils;
import ru.vtosters.lite.ui.PreferenceFragmentUtils;
import ru.vtosters.lite.ui.components.BackupManager;
-import ru.vtosters.lite.utils.AccountManagerUtils;
-import ru.vtosters.lite.utils.AndroidUtils;
-import ru.vtosters.lite.utils.LifecycleUtils;
-import ru.vtosters.lite.utils.VKAccountDB;
+import ru.vtosters.lite.utils.*;
import java.io.IOException;
@@ -58,6 +74,108 @@ public class DataSettingsFragment extends TrackedMaterialPreferenceToolbarFragme
}
}
+ PreferenceFragmentUtils.addPreferenceCategory(getPreferenceScreen(), AndroidUtils.getString("data"));
+
+ PreferenceFragmentUtils.addPreference(
+ getPreferenceScreen(),
+ "currcache",
+ "Размер приложения",
+ "Вес кеша приложения: " + CacheUtils.humanReadableByteCountBin(IOUtils.getDirSize(AndroidUtils.getGlobalContext().getCacheDir())),
+ null,
+ preference -> {
+ new VkAlertDialog.Builder(requireContext())
+ .setTitle("Очистить весь кеш?")
+ .setPositiveButton(requireContext().getString(com.vtosters.lite.R.string.yes), (dialogInterface, i) -> {
+ new WebView(requireContext()).clearCache(true);
+ VKImageLoader.e();
+ ImAudioMsgPlayerProvider.b().e(PlayerActionSources.a);
+ ImAudioMsgPlayerProvider.b().d(PlayerActionSources.a);
+ FileUtils.l();
+ AutoPlayCacheHolder.d.a();
+ MediaStorage.a();
+ updateCacheSize();
+ })
+ .setNegativeButton(requireContext().getString(com.vtosters.lite.R.string.cancel), (dialogInterface, i) -> dialogInterface.dismiss())
+ .show();
+ return false;
+ }
+ );
+
+ PreferenceFragmentUtils.addPreference(
+ getPreferenceScreen(),
+ "",
+ AndroidUtils.getString("clearcache_other_title"),
+ "",
+ null,
+ preference -> {
+ new VkAlertDialog.Builder(getContext())
+ .setTitle(requireContext().getString(com.vtosters.lite.R.string.select_which_clean))
+ .setItems(AndroidUtils.getArray(com.vtosters.lite.R.array.cache_cleaner), (dialog, which) -> {
+ switch (which) {
+ case 0 -> {
+ SharedPreferences prefs2 = getContext().getSharedPreferences("stickers_storage", Context.MODE_PRIVATE);
+ prefs2.edit().clear().commit();
+ new WebView(requireContext()).clearCache(true);
+ VKImageLoader.e();
+ ImEngineProvider.b().a();
+ ImAudioMsgPlayerProvider.b().e(PlayerActionSources.a);
+ ImAudioMsgPlayerProvider.b().d(PlayerActionSources.a);
+ FileUtils.l();
+ Stickers.l.c();
+ ImEngineExt.a(ImEngine1.a());
+ AutoPlayCacheHolder.d.a();
+ MediaStorage.a();
+ }
+ case 1 -> {
+ SharedPreferences prefs2 = getContext().getSharedPreferences("stickers_storage", Context.MODE_PRIVATE);
+ prefs2.edit().clear().commit();
+ Stickers.l.c();
+ }
+ case 2 -> {
+ VKImageLoader.e();
+ ImEngineExt.a(ImEngine1.a());
+ }
+ case 3 -> {
+ AutoPlayCacheHolder.d.a();
+ MediaStorage.a();
+ }
+ case 4 -> {
+ ImEngineProvider.b().a();
+ ImAudioMsgPlayerProvider.b().e(PlayerActionSources.a);
+ ImAudioMsgPlayerProvider.b().d(PlayerActionSources.a);
+ }
+ case 5 -> new WebView(requireContext()).clearCache(true);
+ }
+ Toast.makeText(getContext(), requireContext().getString(com.vtosters.lite.R.string.cache_cleaned), Toast.LENGTH_SHORT).show();
+ updateCacheSize();
+ })
+ .show();
+ return false;
+ }
+ );
+
+ PreferenceFragmentUtils.addPreference(
+ getPreferenceScreen(),
+ "autoclearcache_btn",
+ AndroidUtils.getString("autoclearcache"),
+ "",
+ null,
+ preference -> {
+ cacheAutoCleanDialog();
+ return false;
+ }
+ );
+
+ var pref = Preferences.getPreferences().getString("autoclearcache", "Default");
+ switch (pref) {
+ case "Default" -> findPreference("autoclearcache_btn").setSummary(requireContext().getString(com.vtosters.lite.R.string.cache_disabled));
+ case "100mb" -> findPreference("autoclearcache_btn").setSummary(requireContext().getString(com.vtosters.lite.R.string.cache_100mb));
+ case "500mb" -> findPreference("autoclearcache_btn").setSummary(requireContext().getString(com.vtosters.lite.R.string.cache_500mb));
+ case "1gb" -> findPreference("autoclearcache_btn").setSummary(requireContext().getString(com.vtosters.lite.R.string.cache_1gb));
+ case "2gb" -> findPreference("autoclearcache_btn").setSummary(requireContext().getString(com.vtosters.lite.R.string.cache_2gb));
+ case "5gb" -> findPreference("autoclearcache_btn").setSummary(requireContext().getString(com.vtosters.lite.R.string.cache_5gb));
+ }
+
PreferenceFragmentUtils.addPreferenceCategory(getPreferenceScreen(), AndroidUtils.getString("accounts"));
PreferenceFragmentUtils.addPreference(
@@ -177,4 +295,54 @@ public class DataSettingsFragment extends TrackedMaterialPreferenceToolbarFragme
findPreference("analyticsDisabled").setVisible(Preferences.isValidSignature());
}
+
+ private void updateCacheSize() {
+ findPreference("currcache").setSummary("Вес кеша приложения: " + CacheUtils.humanReadableByteCountBin(IOUtils.getDirSize(AndroidUtils.getGlobalContext().getCacheDir())));
+ }
+
+ @SuppressLint({"CommitPrefEdits", "SetTextI18n"})
+ private void cacheAutoCleanDialog() {
+ String[] cacheText = {null, "100 MB", "500 MB", "1 GB", "2 GB", "5 GB"};
+
+ var val = Preferences.getPreferences().getInt("autoclearcache_size", 0);
+ RadioGroup rg = new RadioGroup(getContext());
+
+ rg.setPadding(AndroidUtils.dp2px(18f), AndroidUtils.dp2px(12f), AndroidUtils.dp2px(18f), 0);
+
+ for (int item = 0; item <= 5; item++) {
+ RadioButton rb = new RadioButton(new ContextThemeWrapper(getContext(), com.vtosters.lite.R.style.Widget_AppCompat_CompoundButton_RadioButton));
+ SwitchHook.setCompoundButton(rb);
+ rg.addView(rb);
+ rb.setId(item);
+ rb.setTextSize(TypedValue.COMPLEX_UNIT_PX, AndroidUtils.dp2px(14f));
+
+ var text = cacheText[item];
+ rb.setText(text != null ? text : AndroidUtils.getString("autoclearcachedisabled"));
+
+ rb.setTextColor(ThemesUtils.getTextAttr());
+ rb.setChecked(val == item);
+ }
+
+ new VkAlertDialog.Builder(getContext())
+ .setTitle(requireContext().getString(com.vtosters.lite.R.string.cache_clean_title))
+ .setMessage(requireContext().getString(com.vtosters.lite.R.string.cache_select_size))
+ .setCancelable(true)
+ .setNegativeButton(requireContext().getString(com.vtosters.lite.R.string.cancel), null)
+ .setView(rg)
+ .setPositiveButton(requireContext().getString(com.vtosters.lite.R.string.save), (dialog, which) -> {
+ var sizes = new String[]{"Default", "100mb", "500mb", "1gb", "2gb", "5gb"};
+ var id = rg.getCheckedRadioButtonId();
+ Preferences.getPreferences().edit()
+ .putInt("autoclearcache_size", id)
+ .putString("autoclearcache", sizes[id])
+ .apply();
+ })
+ .show();
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ updateCacheSize();
+ }
}
diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/OtherFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/OtherFragment.java
index 921d8c7a8..327c8242f 100644
--- a/app/src/main/java/ru/vtosters/lite/ui/fragments/OtherFragment.java
+++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/OtherFragment.java
@@ -111,11 +111,6 @@ public class OtherFragment extends TrackedMaterialPreferenceToolbarFragment {
return true;
});
- findPreference("clearcache").setOnPreferenceClickListener(preference -> {
- cacheCleanDialog();
- return true;
- });
-
findPreference("copyownlink").setOnPreferenceClickListener(preference -> {
copyText("https://vk.com/id" + AccountManagerUtils.getUserId());
ToastUtils.a(requireContext().getString(R.string.link_copied));
@@ -127,11 +122,6 @@ public class OtherFragment extends TrackedMaterialPreferenceToolbarFragment {
return true;
});
- findPreference("autoclearcache").setOnPreferenceClickListener(preference -> {
- cacheAutoCleanDialog();
- return true;
- });
-
findPreference("datasettings").setOnPreferenceClickListener(preference -> {
NavigatorUtils.switchFragment(requireContext(), DataSettingsFragment.class);
return true;
@@ -146,19 +136,6 @@ public class OtherFragment extends TrackedMaterialPreferenceToolbarFragment {
return true;
});
- var pref = Preferences.getPreferences().getString("autoclearcache", "Default");
- switch (pref) {
- case "Default" ->
- findPreference("autoclearcache").setSummary(requireContext().getString(R.string.cache_disabled));
- case "100mb" ->
- findPreference("autoclearcache").setSummary(requireContext().getString(R.string.cache_100mb));
- case "500mb" ->
- findPreference("autoclearcache").setSummary(requireContext().getString(R.string.cache_500mb));
- case "1gb" -> findPreference("autoclearcache").setSummary(requireContext().getString(R.string.cache_1gb));
- case "2gb" -> findPreference("autoclearcache").setSummary(requireContext().getString(R.string.cache_2gb));
- case "5gb" -> findPreference("autoclearcache").setSummary(requireContext().getString(R.string.cache_5gb));
- }
-
var vkAdminTokenPref = findPreference("vk_admin_token");
vkAdminTokenPref.setVisible(Preferences.getPreferences().getBoolean("new_music_downloading_way", false));
if (vkAdminTokenPref.isVisible()) {
@@ -170,93 +147,7 @@ public class OtherFragment extends TrackedMaterialPreferenceToolbarFragment {
}
}
- @SuppressLint({"CommitPrefEdits", "SetTextI18n"})
- private void cacheAutoCleanDialog() {
- String[] cacheText = {null, "100 MB", "500 MB", "1 GB", "2 GB", "5 GB"};
- var val = Preferences.getPreferences().getInt("autoclearcache_size", 0);
- RadioGroup rg = new RadioGroup(getContext());
-
- rg.setPadding(AndroidUtils.dp2px(18f), AndroidUtils.dp2px(12f), AndroidUtils.dp2px(18f), 0);
-
- for (int item = 0; item <= 5; item++) {
- RadioButton rb = new RadioButton(new ContextThemeWrapper(getContext(), com.vtosters.lite.R.style.Widget_AppCompat_CompoundButton_RadioButton));
- SwitchHook.setCompoundButton(rb);
- rg.addView(rb);
- rb.setId(item);
- rb.setTextSize(TypedValue.COMPLEX_UNIT_PX, AndroidUtils.dp2px(14f));
-
- var text = cacheText[item];
- rb.setText(text != null ? text : AndroidUtils.getString("autoclearcachedisabled"));
-
- rb.setTextColor(ThemesUtils.getTextAttr());
- rb.setChecked(val == item);
- }
-
- new VkAlertDialog.Builder(getContext())
- .setTitle(requireContext().getString(R.string.cache_clean_title))
- .setMessage(requireContext().getString(R.string.cache_select_size))
- .setCancelable(true)
- .setNegativeButton(requireContext().getString(R.string.cancel), null)
- .setView(rg)
- .setPositiveButton(requireContext().getString(R.string.save), (dialog, which) -> {
- var sizes = new String[]{"Default", "100mb", "500mb", "1gb", "2gb", "5gb"};
- var id = rg.getCheckedRadioButtonId();
- Preferences.getPreferences().edit()
- .putInt("autoclearcache_size", id)
- .putString("autoclearcache", sizes[id])
- .apply();
- })
- .show();
- }
-
- private void cacheCleanDialog() {
- new VkAlertDialog.Builder(getContext())
- .setTitle(requireContext().getString(R.string.select_which_clean))
- .setItems(AndroidUtils.getArray(R.array.cache_cleaner), (dialog, which) -> {
- switch (which) {
- case 0 -> {
- SharedPreferences prefs2 = getContext().getSharedPreferences("stickers_storage", Context.MODE_PRIVATE);
- prefs2.edit().clear().commit();
- clearWebViewCache();
- VKImageLoader.e();
- ImEngineProvider.b().a();
- ImAudioMsgPlayerProvider.b().e(PlayerActionSources.a);
- ImAudioMsgPlayerProvider.b().d(PlayerActionSources.a);
- FileUtils.l();
- Stickers.l.c();
- ImEngineExt.a(ImEngine1.a());
- AutoPlayCacheHolder.d.a();
- MediaStorage.a();
- }
- case 1 -> {
- SharedPreferences prefs2 = getContext().getSharedPreferences("stickers_storage", Context.MODE_PRIVATE);
- prefs2.edit().clear().commit();
- Stickers.l.c();
- }
- case 2 -> {
- VKImageLoader.e();
- ImEngineExt.a(ImEngine1.a());
- }
- case 3 -> {
- AutoPlayCacheHolder.d.a();
- MediaStorage.a();
- }
- case 4 -> {
- ImEngineProvider.b().a();
- ImAudioMsgPlayerProvider.b().e(PlayerActionSources.a);
- ImAudioMsgPlayerProvider.b().d(PlayerActionSources.a);
- }
- case 5 -> clearWebViewCache();
- }
- Toast.makeText(getContext(), requireContext().getString(R.string.cache_cleaned), Toast.LENGTH_SHORT).show();
- })
- .show();
- }
-
- private void clearWebViewCache() {
- new WebView(requireContext()).clearCache(true);
- }
private void copyText(String src) {
var manager = (ClipboardManager) requireContext().getSystemService(Context.CLIPBOARD_SERVICE);
diff --git a/smali/res/xml/preferences_other.xml b/smali/res/xml/preferences_other.xml
index a8a1b8d0c..e844dc223 100644
--- a/smali/res/xml/preferences_other.xml
+++ b/smali/res/xml/preferences_other.xml
@@ -4,12 +4,6 @@
-
-