From 75960a7631ace9e62467ba54dceb4da9a1a07f73 Mon Sep 17 00:00:00 2001 From: gdlbo <41114720+gdlbo@users.noreply.github.com> Date: Fri, 1 Jul 2022 14:24:16 +0300 Subject: [PATCH] Fixes Deleted unused code Fixed some settings Sorted toggles features --- .../lite/ui/fragments/InterfaceFragment.java | 1 - .../lite/ui/fragments/MessagesFragment.java | 1 - .../lite/ui/fragments/ThemesFragment.java | 2 - .../lite/ui/fragments/VTSettings.java | 5 +- .../ui/fragments/dockbar/DockBarManager.java | 7 +- .../ru/vtosters/lite/utils/Base64Utils.java | 6 +- .../lite/utils/DeletedMessagesHandler.java | 71 ++++++++--------- .../java/ru/vtosters/lite/utils/Globals.java | 31 ++------ .../ru/vtosters/lite/utils/JsonInjectors.java | 7 +- .../ru/vtosters/lite/utils/LocaleUtils.java | 56 +++++++++++++ .../java/ru/vtosters/lite/utils/Newsfeed.java | 12 +-- .../vtosters/lite/utils/OnlineFormatter.java | 6 +- .../ru/vtosters/lite/utils/Preferences.java | 78 ------------------- .../java/ru/vtosters/lite/utils/SSFS.java | 2 +- .../ru/vtosters/lite/utils/ServerDialog.java | 6 +- .../ru/vtosters/lite/utils/SettBackup.java | 48 ++++++------ .../java/ru/vtosters/lite/utils/Toggles.java | 3 + smali/assets/crashlytics-build.properties | 11 --- smali/res/xml/preferences_debug.xml | 5 -- smali/res/xml/preferences_interface.xml | 28 ++----- smali/res/xml/preferences_messages.xml | 4 - smali/res/xml/preferences_music.xml | 10 +++ smali/res/xml/preferences_other.xml | 6 ++ smali/res/xml/preferences_themes.xml | 5 ++ .../vk/core/formatters/OnlineFormatter.smali | 2 +- .../delegates/DocAttachViewTypeDelegate.smali | 2 +- .../com/vtosters/lite/VKApplication.smali | 4 +- 27 files changed, 175 insertions(+), 244 deletions(-) create mode 100644 app/src/main/java/ru/vtosters/lite/utils/LocaleUtils.java delete mode 100644 smali/assets/crashlytics-build.properties diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/InterfaceFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/InterfaceFragment.java index 067971df0..c8c214e31 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/InterfaceFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/InterfaceFragment.java @@ -18,7 +18,6 @@ public class InterfaceFragment extends MaterialPreferenceToolbarFragment{ } private void prefs(){ - findPreference("newfeed").setOnPreferenceClickListener(new restart()); findPreference("stories").setOnPreferenceClickListener(new restart()); findPreference("swipe").setOnPreferenceClickListener(new restart()); findPreference("dockcounter").setOnPreferenceClickListener(new restart()); diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/MessagesFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/MessagesFragment.java index ce550849c..9c0a8ee3b 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/MessagesFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/MessagesFragment.java @@ -23,7 +23,6 @@ public class MessagesFragment extends MaterialPreferenceToolbarFragment{ private void prefs(){ findPreference("vkme").setOnPreferenceClickListener(new MessagesFragment.restart()); findPreference("vkme_notifs").setOnPreferenceClickListener(new MessagesFragment.restart()); - findPreference("roundedmsgs").setOnPreferenceClickListener(new MessagesFragment.restart()); findPreference("systememoji").setOnPreferenceClickListener(new MessagesFragment.restart()); } diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/ThemesFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/ThemesFragment.java index 911c82f4c..2d850a90b 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/ThemesFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/ThemesFragment.java @@ -38,8 +38,6 @@ public class ThemesFragment extends MaterialPreferenceToolbarFragment{ private void prefs(){ findPreference("iconvk").setOnPreferenceChangeListener(new a()); - findPreference("darktheme").setOnPreferenceClickListener(new restart()); - findPreference("lighttheme").setOnPreferenceClickListener(new restart()); findPreference("navbar").setOnPreferenceClickListener(new restart()); } 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 aa5d3e123..c5f80b32f 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 @@ -9,7 +9,7 @@ import static ru.vtosters.lite.utils.About.getBuildNumber; import static ru.vtosters.lite.utils.About.getCommitLink; import static ru.vtosters.lite.utils.CacheUtils.humanReadableByteCountBin; import static ru.vtosters.lite.utils.Globals.edit; -import static ru.vtosters.lite.utils.Globals.getAvatarDrawable; +import static ru.vtosters.lite.utils.Globals.getDrawableFromUrl; import static ru.vtosters.lite.utils.Globals.getIdentifier; import static ru.vtosters.lite.utils.Globals.getPrefsValue; import static ru.vtosters.lite.utils.Globals.getUserPhoto; @@ -68,7 +68,6 @@ import ru.vtosters.lite.utils.SSFS; import ru.vtosters.lite.utils.VKUIwrapper; public class VTSettings extends MaterialPreferenceToolbarFragment{ - public static String getValAsString(String stringid, Boolean value){ if(disableSettingsSumms()) return ""; @@ -124,7 +123,7 @@ public class VTSettings extends MaterialPreferenceToolbarFragment{ int vtosterXml = getIdentifier("empty", "xml"); this.addPreferencesFromResource(vtosterXml); - PreferencesUtil.addPreferenceDrawable(this, "", "Аккаунты", getUsername() + (hasVerification() ? Globals.getString("thanksfordonate") : Globals.getString("getdonate")), getAvatarDrawable(getUserPhoto()), preference -> { + PreferencesUtil.addPreferenceDrawable(this, "", "Аккаунты", getUsername() + (hasVerification() ? Globals.getString("thanksfordonate") : Globals.getString("getdonate")), getDrawableFromUrl(getUserPhoto(), "ic_user_circle_outline_28"), preference -> { AuthBridge.logout(); restartApplication(); return false; diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarManager.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarManager.java index d1eb9e4bd..09d39c1bd 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarManager.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarManager.java @@ -3,7 +3,6 @@ package ru.vtosters.lite.ui.fragments.dockbar; import static ru.vtosters.lite.utils.Globals.getContext; import static ru.vtosters.lite.utils.Globals.getString; import static ru.vtosters.lite.utils.Preferences.milkshake; -import static ru.vtosters.lite.utils.Preferences.newfeed; import static ru.vtosters.lite.utils.Preferences.useNewSettings; import static ru.vtosters.lite.utils.Preferences.vkme; import static ru.vtosters.lite.utils.Preferences.vkme_notifs; @@ -91,7 +90,7 @@ public class DockBarManager{ return; } - mSelectedTabs.add(new DockBarTab("tab_news", !milkshake() ? R.drawable.ic_newsfeed_28 : R.drawable.ic_menu_newsfeed_outline_28, R.string.newsfeed, R.id.tab_news, newfeed() ? HomeFragment.class : NewsfeedFragment.class)); + mSelectedTabs.add(new DockBarTab("tab_news", !milkshake() ? R.drawable.ic_newsfeed_28 : R.drawable.ic_menu_newsfeed_outline_28, R.string.newsfeed, R.id.tab_news, milkshake() ? HomeFragment.class : NewsfeedFragment.class)); mSelectedTabs.add(new DockBarTab("tab_discover", !milkshake() ? R.drawable.ic_menu_search_28 : R.drawable.ic_menu_search_outline_28, R.string.search, R.id.tab_discover, DiscoverFragment.class)); mSelectedTabs.add(new DockBarTab("tab_messages", !milkshake() ? R.drawable.ic_message_24 : R.drawable.ic_message_outline_24, R.string.messages, R.id.tab_messages, DialogsFragment.class)); mSelectedTabs.add(new DockBarTab("tab_feedback", !milkshake() ? R.drawable.ic_notification_24 : R.drawable.ic_menu_notification_outline_28, R.string.feedback, R.id.tab_feedback, NotificationsContainerFragment.class)); @@ -127,7 +126,7 @@ public class DockBarManager{ item.getInt("id"), Class.forName(item.getString("fragmentClass")) ); - if(newfeed()){ + if(milkshake()){ if(tab.fragmentClass == NewsfeedFragment.class){ tab.fragmentClass = HomeFragment.class; } else if(tab.fragmentClass == DiscoverFragment.class){ @@ -153,7 +152,7 @@ public class DockBarManager{ item.getInt("id"), Class.forName(item.getString("fragmentClass")) ); - if(newfeed()){ + if(milkshake()){ if(tab.fragmentClass == NewsfeedFragment.class){ tab.fragmentClass = HomeFragment.class; } else if(tab.fragmentClass == DiscoverFragment.class){ diff --git a/app/src/main/java/ru/vtosters/lite/utils/Base64Utils.java b/app/src/main/java/ru/vtosters/lite/utils/Base64Utils.java index 4f3e1c039..a0162a4ca 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/Base64Utils.java +++ b/app/src/main/java/ru/vtosters/lite/utils/Base64Utils.java @@ -5,13 +5,13 @@ import android.util.Base64; /* *Extension of Base64 class for decoding/encoding with flag NO_PADDING */ -public class Base64Utils { +public class Base64Utils{ - public static String decode(String base) { + public static String decode(String base){ return new String(Base64.decode(base, Base64.NO_PADDING)); } - public static String encode(String base) { + public static String encode(String base){ return Base64.encodeToString(base.getBytes(), Base64.NO_PADDING); } } diff --git a/app/src/main/java/ru/vtosters/lite/utils/DeletedMessagesHandler.java b/app/src/main/java/ru/vtosters/lite/utils/DeletedMessagesHandler.java index 0e7c43de8..b6eaadb45 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/DeletedMessagesHandler.java +++ b/app/src/main/java/ru/vtosters/lite/utils/DeletedMessagesHandler.java @@ -8,19 +8,16 @@ import android.annotation.SuppressLint; import android.content.ContentValues; import android.database.Cursor; import android.text.TextUtils; -import android.util.Log; import com.vk.im.engine.ImEnvironment; import com.vk.im.engine.events.OnMsgUpdateEvent; import com.vk.im.engine.internal.longpoll.tasks.MsgDeleteLpTask; import com.vk.im.engine.internal.storage.StorageEnvironment; -import com.vk.im.engine.internal.storage.StorageManager; import com.vk.im.engine.models.messages.Msg; import com.vk.im.engine.models.messages.MsgFromUser; import com.vk.im.engine.models.messages.NestedMsg; import com.vk.libsqliteext.CustomSqliteExtensionsKt; -import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.List; @@ -28,62 +25,62 @@ import io.requery.android.database.sqlite.SQLiteDatabase; import io.requery.android.database.sqlite.SQLiteOpenHelper; import ru.vtosters.lite.encryption.EncryptProvider; -public class DeletedMessagesHandler { +public class DeletedMessagesHandler{ private static List sDeletedMessagesList = new ArrayList<>(); private static SQLiteDatabase sVKSQLiteDatabase; private static int sBodyIndex = -1; private static DeletedMessagesDBHelper sVTDatabase; - public static void reloadMessagesList() { - if (sVTDatabase == null) { + public static void reloadMessagesList(){ + if(sVTDatabase == null){ sVTDatabase = new DeletedMessagesDBHelper(); } sDeletedMessagesList = new ArrayList<>(sVTDatabase.loadAllMessages()); } - public static void grabVKDatabase(StorageEnvironment storageEnvironment) { + public static void grabVKDatabase(StorageEnvironment storageEnvironment){ sVKSQLiteDatabase = storageEnvironment.a(); } - public static boolean hook() { + public static boolean hook(){ return getBoolValue("undeletemsg", true); } - public static void setBodyDBParser(Msg msg) { - if (!(msg instanceof MsgFromUser)) return; + public static void setBodyDBParser(Msg msg){ + if(!(msg instanceof MsgFromUser)) return; - for (Integer integer : sDeletedMessagesList) { + for(Integer integer : sDeletedMessagesList) { MsgFromUser msgFromUser = (MsgFromUser) msg; checkForNestedMsg(msgFromUser.w0()); - if (integer == msg.C1()) { + if(integer == msg.C1()){ editTextOfMsg((MsgFromUser) msg); break; } } } - private static void checkForNestedMsg(List nestedMsgs) { - for (NestedMsg nestedMsg : nestedMsgs) { - if (!nestedMsg.w0().isEmpty()) checkForNestedMsg(nestedMsg.w0()); + private static void checkForNestedMsg(List nestedMsgs){ + for(NestedMsg nestedMsg : nestedMsgs) { + if(!nestedMsg.w0().isEmpty()) checkForNestedMsg(nestedMsg.w0()); nestedMsg.d(EncryptProvider.decryptMessage(nestedMsg.f(), nestedMsg.getFrom().getId())); } } - private static void editTextOfMsg(MsgFromUser msgFromUser) { - if (!msgFromUser.f().startsWith(getPrefixUndelete())) { + private static void editTextOfMsg(MsgFromUser msgFromUser){ + if(!msgFromUser.f().startsWith(getPrefixUndelete())){ msgFromUser.d(getPrefixUndelete() + EncryptProvider.decryptMessage(msgFromUser)); } } - private static String getPrefixUndelete() { + private static String getPrefixUndelete(){ return getPrefsValue("undeletemsg_prefix_value") + " "; } - public static void updateDialog(MsgDeleteLpTask msgDeleteLpTask) throws NoSuchFieldException, IllegalAccessException { - Cursor c = getMessageFromDatabaseById((int )ReflectionUtils.getObjectField(msgDeleteLpTask.getClass(), "d", msgDeleteLpTask)); - if (c == null) return; + public static void updateDialog(MsgDeleteLpTask msgDeleteLpTask) throws NoSuchFieldException, IllegalAccessException{ + Cursor c = getMessageFromDatabaseById(ReflectionUtils.getObjectField(msgDeleteLpTask.getClass(), "d", msgDeleteLpTask)); + if(c == null) return; @SuppressLint("Range") int localId = c.getInt(c.getColumnIndex("local_id")); @@ -94,17 +91,17 @@ public class DeletedMessagesHandler { imEnvironment.a(str, new OnMsgUpdateEvent(str, cint, localId)); } - public static void hookDeletedMessageId(MsgDeleteLpTask msgDeleteLpTask) throws NoSuchFieldException, IllegalAccessException { - if (!hook()) return; + public static void hookDeletedMessageId(MsgDeleteLpTask msgDeleteLpTask) throws NoSuchFieldException, IllegalAccessException{ + if(!hook()) return; var field = msgDeleteLpTask.getClass().getDeclaredField("c"); field.setAccessible(true); var messageId = (int) field.get(msgDeleteLpTask); Cursor c = getMessageFromDatabaseById(messageId); - if (c == null) return; - if (sBodyIndex == -1) sBodyIndex = c.getColumnIndex("body"); - if (TextUtils.isEmpty(c.getString(sBodyIndex))) { + if(c == null) return; + if(sBodyIndex == -1) sBodyIndex = c.getColumnIndex("body"); + if(TextUtils.isEmpty(c.getString(sBodyIndex))){ deleteMessageFromDB(messageId); return; } @@ -113,33 +110,33 @@ public class DeletedMessagesHandler { sVTDatabase.saveDeletedMessage(messageId); } - public static Cursor getMessageFromDatabaseById(int messageId) { + public static Cursor getMessageFromDatabaseById(int messageId){ String query = "SELECT * FROM messages WHERE vk_id = " + messageId; Cursor c = CustomSqliteExtensionsKt.a(sVKSQLiteDatabase, query); - if (!c.moveToFirst()) return null; + if(!c.moveToFirst()) return null; return c; } - public static void deleteMessageFromDB(int messageId) { + public static void deleteMessageFromDB(int messageId){ sVKSQLiteDatabase.execSQL("DELETE FROM messages WHERE vk_id = " + messageId); } - public static class DeletedMessagesDBHelper extends SQLiteOpenHelper { - public DeletedMessagesDBHelper() { + public static class DeletedMessagesDBHelper extends SQLiteOpenHelper{ + public DeletedMessagesDBHelper(){ super(getContext(), "deleted_msgs", null, 1); } @Override - public void onCreate(SQLiteDatabase db) { + public void onCreate(SQLiteDatabase db){ db.execSQL("create table deleted_msgs (id integer primary key, msgId integer)"); } @Override - public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){ } - public void saveDeletedMessage(int msgId) { + public void saveDeletedMessage(int msgId){ SQLiteDatabase sqLiteDatabase = getWritableDatabase(); ContentValues contentValues = new ContentValues(); @@ -149,16 +146,16 @@ public class DeletedMessagesHandler { sqLiteDatabase.close(); } - public List loadAllMessages() { + public List loadAllMessages(){ List msgIdsList = new ArrayList<>(); Cursor cursor = getReadableDatabase().query("deleted_msgs", null, null, null, null, null, null); - if (cursor.moveToFirst()) { + if(cursor.moveToFirst()){ int msgIdIndex = cursor.getColumnIndex("msgId"); do { msgIdsList.add(cursor.getInt(msgIdIndex)); - } while (cursor.moveToNext()); + } while(cursor.moveToNext()); cursor.close(); } diff --git a/app/src/main/java/ru/vtosters/lite/utils/Globals.java b/app/src/main/java/ru/vtosters/lite/utils/Globals.java index 031d63c14..acd4d23ac 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/Globals.java +++ b/app/src/main/java/ru/vtosters/lite/utils/Globals.java @@ -2,8 +2,8 @@ package ru.vtosters.lite.utils; import static androidx.core.content.ContextCompat.getDrawable; import static ru.vtosters.lite.utils.CacheUtils.getInstance; +import static ru.vtosters.lite.utils.LocaleUtils.getLocale; import static ru.vtosters.lite.utils.Preferences.checkupdates; -import static ru.vtosters.lite.utils.Preferences.getLocale; import static ru.vtosters.lite.utils.Preferences.preferences; import static ru.vtosters.lite.utils.ServerDialog.sendRequest; import static ru.vtosters.lite.utils.Themes.isDarkTheme; @@ -88,11 +88,11 @@ public class Globals{ // VKIDProtection.alert(activity); } - public static byte[] readFileFully(File file) throws IOException { + public static byte[] readFileFully(File file) throws IOException{ return readFully(new FileInputStream(file)); } - public static byte[] readFully(InputStream is) throws IOException { + public static byte[] readFully(InputStream is) throws IOException{ ByteArrayOutputStream bos = new ByteArrayOutputStream(); byte[] buffer = new byte[BUFFER_SIZE]; @@ -103,11 +103,11 @@ public class Globals{ return bos.toByteArray(); } - public static void writeToFile(File file, String content) throws IOException { + public static void writeToFile(File file, String content) throws IOException{ writeToFile(file, content.getBytes()); } - public static void writeToFile(File file, byte[] content) throws IOException { + public static void writeToFile(File file, byte[] content) throws IOException{ FileOutputStream fos = new FileOutputStream(file); fos.write(content); } @@ -171,7 +171,7 @@ public class Globals{ return extendedUserProfile.a; } - public static Drawable getDrawableFromUrl(String url){ + public static Drawable getDrawableFromUrl(String url, String nopic){ try { URL aryURI = new URL(url); StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); @@ -183,24 +183,7 @@ public class Globals{ return new BitmapDrawable(getResources(), bmp); } catch (Exception e) { - return null; - } - } - - @SuppressWarnings("deprecation") - public static Drawable getAvatarDrawable(String url){ - try { - URL aryURI = new URL(url); - StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); - StrictMode.setThreadPolicy(policy); - - URLConnection conn = aryURI.openConnection(); - InputStream is = conn.getInputStream(); - Bitmap bmp = BitmapFactory.decodeStream(is); - - return new BitmapDrawable(getResources(), Bitmap.createScaledBitmap(getBitmapClippedCircle(bmp), convertDpToPixel(256), convertDpToPixel(256), true)); - } catch (Exception e) { - return getDrawable(getContext(), getIdentifier("ic_user_circle_outline_28", "drawable")); + return getDrawable(getContext(), getIdentifier(nopic, "drawable")); } } diff --git a/app/src/main/java/ru/vtosters/lite/utils/JsonInjectors.java b/app/src/main/java/ru/vtosters/lite/utils/JsonInjectors.java index cbb361b62..d72fc2d94 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/JsonInjectors.java +++ b/app/src/main/java/ru/vtosters/lite/utils/JsonInjectors.java @@ -1,11 +1,10 @@ package ru.vtosters.lite.utils; -import static ru.vtosters.lite.f0x1d.VTVerifications.isPrometheus; import static ru.vtosters.lite.f0x1d.VTVerifications.isDeveloper; +import static ru.vtosters.lite.f0x1d.VTVerifications.isPrometheus; import static ru.vtosters.lite.f0x1d.VTVerifications.isVerified; import static ru.vtosters.lite.utils.Preferences.getBoolValue; import static ru.vtosters.lite.utils.Preferences.hasVerification; -import static ru.vtosters.lite.utils.Preferences.preferences; import org.json.JSONException; import org.json.JSONObject; @@ -69,8 +68,8 @@ public class JsonInjectors{ public static JSONObject superapp(JSONObject orig) throws JSONException{ var Items = orig.optJSONArray("items"); - if(Items != null) { - for(int i = 0; i < Items.length(); i++){ + if(Items != null){ + for(int i = 0; i < Items.length(); i++) { var items = Items.optJSONObject(i); var type = items.optString("type"); diff --git a/app/src/main/java/ru/vtosters/lite/utils/LocaleUtils.java b/app/src/main/java/ru/vtosters/lite/utils/LocaleUtils.java new file mode 100644 index 000000000..3d2e98cc0 --- /dev/null +++ b/app/src/main/java/ru/vtosters/lite/utils/LocaleUtils.java @@ -0,0 +1,56 @@ +package ru.vtosters.lite.utils; +import static ru.vtosters.lite.utils.Globals.getIdentifier; +import static ru.vtosters.lite.utils.Globals.getPrefsValue; +import static ru.vtosters.lite.utils.Globals.getString; +import static ru.vtosters.lite.utils.Globals.getStringDate; + +import android.annotation.SuppressLint; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Locale; + +public class LocaleUtils{ + public static String getLocale(){ + String string = getPrefsValue("lang_value"); + + if(string.equals("system")){ + return Locale.getDefault().getLanguage(); + } + + return string.isEmpty() ? Locale.getDefault().getLanguage() : string; + } + + public static boolean fulltime(){ + return getPrefsValue("dateformat").equals("noyear") || getPrefsValue("dateformat").equals("full") || getPrefsValue("dateformat").equals("noseconds"); + } + + public static String getDateFormat(){ + switch(getPrefsValue("dateformat")) { + case "noyear": + return getString("fulltime2"); + case "full": + return getString("fulltime"); + default: + return getString("fulltime3"); + } + } + + @SuppressLint("SimpleDateFormat") + public static SimpleDateFormat setDateFormat(){ + return new SimpleDateFormat(getDateFormat()); + } + + public static String getFormattedDate(boolean isFemale, long time){ + SimpleDateFormat date = new SimpleDateFormat(getDateFormat(), Locale.getDefault()); + + if(!fulltime()) return null; + + try { + return getStringDate(isFemale ? getIdentifier("last_seen_profile_f", "string") : getIdentifier("last_seen_profile_m", "string"), date.format(new Date(time))); + } catch (Throwable th) { + th.printStackTrace(); + return null; + } + } +} diff --git a/app/src/main/java/ru/vtosters/lite/utils/Newsfeed.java b/app/src/main/java/ru/vtosters/lite/utils/Newsfeed.java index d54f8395f..39fd50c1f 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/Newsfeed.java +++ b/app/src/main/java/ru/vtosters/lite/utils/Newsfeed.java @@ -11,7 +11,7 @@ import static ru.vtosters.lite.utils.Preferences.copyright_post; import static ru.vtosters.lite.utils.Preferences.dev; import static ru.vtosters.lite.utils.Preferences.friendsrecomm; import static ru.vtosters.lite.utils.Preferences.getBoolValue; -import static ru.vtosters.lite.utils.Preferences.newfeed; +import static ru.vtosters.lite.utils.Preferences.milkshake; import static ru.vtosters.lite.utils.Preferences.postsrecomm; import static ru.vtosters.lite.utils.Preferences.useNewSettings; import static ru.vtosters.lite.utils.Preferences.vkme; @@ -117,7 +117,7 @@ public class Newsfeed{ if(isGroupAds(obj)) return false; return !injectFiltersReposts(obj); - } + } // inject our filters to newsfeed, getpost and discover public static boolean injectFiltersReposts(JSONObject obj){ if(obj.optJSONArray("copy_history") == null) return false; @@ -135,11 +135,9 @@ public class Newsfeed{ } return isBadNew(Array); - } + } // get repost information and inject our text filters private static boolean checkCopyright(JSONObject json) throws JSONException{ - var linkfilter = getPrefsValue("linkfilter"); - if(json.opt("copyright") != null){ var copyright = json.getJSONObject("copyright"); var copyrightlink = copyright.getString("link"); @@ -149,9 +147,7 @@ public class Newsfeed{ return true; } } - return copyright_post(); - } return false; } @@ -250,7 +246,7 @@ public class Newsfeed{ } switch(getPrefsValue("start_values")) { case "newsfeed": - return newfeed() ? HomeFragment.class : NewsfeedFragment.class; + return milkshake() ? HomeFragment.class : NewsfeedFragment.class; case "messenger": return DialogsFragment.class; case "groups": diff --git a/app/src/main/java/ru/vtosters/lite/utils/OnlineFormatter.java b/app/src/main/java/ru/vtosters/lite/utils/OnlineFormatter.java index 5d5c6ae7a..c68365b79 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/OnlineFormatter.java +++ b/app/src/main/java/ru/vtosters/lite/utils/OnlineFormatter.java @@ -2,9 +2,9 @@ package ru.vtosters.lite.utils; import static ru.vtosters.lite.utils.Globals.getString; -public class OnlineFormatter { +public class OnlineFormatter{ public static String getAppName(int appid){ // thanks to egormetlitsky (vk mp3 mod) for helping with online ids - switch (appid) { + switch(appid) { case 2274003: return "Android"; case 6328039: @@ -86,7 +86,7 @@ public class OnlineFormatter { public static String getOnline(int appid){ var appname = getAppName(appid); - if (appname == null) return null; + if(appname == null) return null; return getString("custom_online") + " " + appname; } 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 d4ffaac34..0c4db50f4 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/Preferences.java +++ b/app/src/main/java/ru/vtosters/lite/utils/Preferences.java @@ -7,10 +7,7 @@ import static ru.vtosters.lite.utils.CacheUtils.getInstance; import static ru.vtosters.lite.utils.Globals.edit; import static ru.vtosters.lite.utils.Globals.fixGapps; import static ru.vtosters.lite.utils.Globals.getContext; -import static ru.vtosters.lite.utils.Globals.getIdentifier; import static ru.vtosters.lite.utils.Globals.getPrefsValue; -import static ru.vtosters.lite.utils.Globals.getString; -import static ru.vtosters.lite.utils.Globals.getStringDate; import static ru.vtosters.lite.utils.Globals.getUserId; import static ru.vtosters.lite.utils.Globals.registerActivities; import static ru.vtosters.lite.utils.Newsfeed.setupFilters; @@ -20,7 +17,6 @@ import static ru.vtosters.lite.utils.SignatureChecker.validateAppSignature; import static ru.vtosters.lite.utils.Themes.isDarkTheme; import static ru.vtosters.lite.utils.Themes.systemThemeChanger; -import android.annotation.SuppressLint; import android.app.Application; import android.content.Context; import android.content.SharedPreferences; @@ -32,9 +28,6 @@ import com.vtosters.lite.data.Users; import com.vtosters.lite.fragments.SettingsListFragment; import java.security.NoSuchAlgorithmException; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Locale; import ru.vtosters.lite.ui.fragments.VTSettings; @@ -163,10 +156,6 @@ public class Preferences{ return getBoolValue("VKUI_INJ", true); } - public static boolean benchmark(){ - return getBoolValue("benchmark", false); - } - public static boolean calls(){ return getBoolValue("calls", false); } @@ -175,10 +164,6 @@ public class Preferences{ return getBoolValue("convUsersOnline", false); } - public static boolean darkmode(){ - return getBoolValue("darkmode", true); - } - public static boolean dev(){ return getBoolValue("dev", false); } @@ -195,10 +180,6 @@ public class Preferences{ return getBoolValue("dns", false); } - public static boolean libverify(){ - return getBoolValue("libverify", false); - } - public static boolean dnt(){ return getBoolValue("dnt", true); } @@ -251,10 +232,6 @@ public class Preferences{ return getBoolValue("iconvk", false); } - public static boolean iconvkru(){ - return getBoolValue("iconvkru", false); - } - public static boolean isMusicRestricted(){ return getBoolValue("isMusicRestricted", false); } @@ -263,10 +240,6 @@ public class Preferences{ return getBoolValue("navbar", true); } - public static boolean newfeed(){ - return getBoolValue("newfeed", true); - } - public static boolean offline(){ return getBoolValue("offline", false); } @@ -279,10 +252,6 @@ public class Preferences{ return getBoolValue("postsrecomm", false); } - public static String readstatus(){ - return dnr() ? "messages.markAsRead" : "null"; - } - public static boolean refsfilter(){ return getBoolValue("refsfilter", false); } @@ -340,10 +309,6 @@ public class Preferences{ return getBoolValue("color_grishka", true); } - public static boolean vkme_msg(){ - return getBoolValue("vkme_msg", false); - } - public static boolean vkme_notifs(){ return getBoolValue("vkme_notifs", false); } @@ -373,31 +338,6 @@ public class Preferences{ return isPrometheus(getUserId()); } - public static String getLocale(){ - String string = getPrefsValue("lang_value"); - - if(string.equals("system")){ - return Locale.getDefault().getLanguage(); - } - - return string.isEmpty() ? Locale.getDefault().getLanguage() : string; - } - - public static boolean fulltime(){ - return getPrefsValue("dateformat").equals("noyear") || getPrefsValue("dateformat").equals("full") || getPrefsValue("dateformat").equals("noseconds"); - } - - public static String getDateFormat(){ - switch(getPrefsValue("dateformat")) { - case "noyear": - return getString("fulltime2"); - case "full": - return getString("fulltime"); - default: - return getString("fulltime3"); - } - } - public static long getSizeForDelete(){ switch(getPrefsValue("clearcache")) { case "100mb": @@ -420,22 +360,4 @@ public class Preferences{ if(!getBoolValue("compressPhotos", true)) return 100; return origquality; } - - @SuppressLint("SimpleDateFormat") - public static SimpleDateFormat setDateFormat(){ - return new SimpleDateFormat(getDateFormat()); - } - - public static String getFormattedDate(boolean isFemale, long time){ - SimpleDateFormat date = new SimpleDateFormat(getDateFormat(), Locale.getDefault()); - - if(!fulltime()) return null; - - try { - return getStringDate(isFemale ? getIdentifier("last_seen_profile_f", "string") : getIdentifier("last_seen_profile_m", "string"), date.format(new Date(time))); - } catch (Throwable th) { - th.printStackTrace(); - return null; - } - } } diff --git a/app/src/main/java/ru/vtosters/lite/utils/SSFS.java b/app/src/main/java/ru/vtosters/lite/utils/SSFS.java index 57e98c26c..7bacfa7ac 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/SSFS.java +++ b/app/src/main/java/ru/vtosters/lite/utils/SSFS.java @@ -4,8 +4,8 @@ import static ru.vtosters.lite.utils.About.getBuildNumber; import static ru.vtosters.lite.utils.Globals.getPrefsValue; import static ru.vtosters.lite.utils.Globals.getUserSecret; import static ru.vtosters.lite.utils.Globals.getUserToken; +import static ru.vtosters.lite.utils.LocaleUtils.getLocale; import static ru.vtosters.lite.utils.Preferences.dev; -import static ru.vtosters.lite.utils.Preferences.getLocale; import static ru.vtosters.lite.utils.Preferences.vksans; import static ru.vtosters.lite.utils.Proxy.proxy; import static ru.vtosters.lite.utils.Themes.isDarkTheme; diff --git a/app/src/main/java/ru/vtosters/lite/utils/ServerDialog.java b/app/src/main/java/ru/vtosters/lite/utils/ServerDialog.java index 60fd7d850..3e4180a8e 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/ServerDialog.java +++ b/app/src/main/java/ru/vtosters/lite/utils/ServerDialog.java @@ -23,6 +23,8 @@ import okhttp3.Response; public class ServerDialog{ private static final OkHttpClient client = new OkHttpClient(); + public static Boolean showAlert; + public static Activity activity; private static String title; private static String message; private static String positiveButton; @@ -32,10 +34,6 @@ public class ServerDialog{ private static Boolean cancelable; private static Boolean isNotForVerified; - public static Boolean showAlert; - - public static Activity activity; - public static void sendRequest(){ if(getBoolValue("dialogrecomm", false)) return; diff --git a/app/src/main/java/ru/vtosters/lite/utils/SettBackup.java b/app/src/main/java/ru/vtosters/lite/utils/SettBackup.java index d426ad209..0341ddcb6 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/SettBackup.java +++ b/app/src/main/java/ru/vtosters/lite/utils/SettBackup.java @@ -23,7 +23,7 @@ import java.util.regex.Pattern; public class SettBackup{ - private static SharedPreferences getPrefs() { + private static SharedPreferences getPrefs(){ return getContext().getSharedPreferences("com.vtosters.lite_preferences", Context.MODE_PRIVATE); } @@ -33,14 +33,14 @@ public class SettBackup{ file.delete(); } - public static void backupSettings() { + public static void backupSettings(){ // SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()); var dir = new File(getExternalStoragePublicDirectory(DIRECTORY_DOWNLOADS), "/VTLBackups/"); var file = new File(dir, "Backup_" // + dateFormat.format(new Date()) - + "test" - + ".xml"); + + "test" + + ".xml"); try { file.delete(); FileWriter out = new FileWriter(file); @@ -53,79 +53,79 @@ public class SettBackup{ } } - public static String getPrefContent() throws IOException { + public static String getPrefContent() throws IOException{ File prefsDir = new File(getContext().getFilesDir().getParentFile(), "shared_prefs"); - if (!prefsDir.exists()) + if(!prefsDir.exists()) return null; File pref = new File(prefsDir, "com.vtosters.lite_preferences.xml"); return new String(readFileFully(pref)); } - public static void restoreBackup() throws IOException { + public static void restoreBackup() throws IOException{ SharedPreferences.Editor editor = getPrefs().edit(); File dir = new File(getExternalStoragePublicDirectory(DIRECTORY_DOWNLOADS + "/VTLBackups/").getPath()); File pref = new File(dir, "Backup_test.xml"); Scanner scanner = new Scanner(new String(readFileFully(pref))); - while (scanner.hasNextLine()) { + while(scanner.hasNextLine()) { String line = scanner.nextLine().trim(); - if (line.contains("") || line.contains("")) + if(line.contains("") || line.contains("")) continue; - if (line.startsWith(""); Matcher matcher = pattern.matcher(line); - if (!matcher.find()) continue; + if(!matcher.find()) continue; String name = matcher.group(1); Set set = new HashSet<>(); String _line; - while (!(_line = scanner.nextLine().trim()).equals("")) { + while(!(_line = scanner.nextLine().trim()).equals("")) { set.add(_line.substring(_line.indexOf(">") + 1, _line.lastIndexOf("<"))); } editor.putStringSet(name, set) .commit(); - if (!Preferences.dev()) continue; - Log.d("Prefs", "Append " + name + " : " + set.toString()); - } else if (line.startsWith("<")){ + if(!Preferences.dev()) continue; + Log.d("Prefs", "Append " + name + " : " + set); + } else if(line.startsWith("<")){ Pattern pattern = Pattern.compile("^<(.+) name=\"(.+)\">(.+)$"); Matcher matcher = pattern.matcher(line); String type = "", name = "", value = ""; - if (!matcher.find()) { + if(!matcher.find()){ pattern = Pattern.compile("^<(.+) name=\"(.+?)\" value=\"(.+?)\" />$"); matcher = pattern.matcher(line); - if (!matcher.find()) continue; + if(!matcher.find()) continue; } type = matcher.group(1); name = matcher.group(2); value = matcher.group(3); - if (type.equals("string")) + if(type.equals("string")) editor.putString( name, value ).commit(); - else if (type.equals("boolean")) + else if(type.equals("boolean")) editor.putBoolean( name, Boolean.parseBoolean(value) ).commit(); - else if (type.equals("float")) + else if(type.equals("float")) editor.putFloat( name, Float.parseFloat(value) ).commit(); - else if (type.equals("int")) + else if(type.equals("int")) editor.putInt( name, Integer.parseInt(value) ).commit(); - else if (type.equals("long")) + else if(type.equals("long")) editor.putLong( name, Long.parseLong(value) ).commit(); - if (!Preferences.dev()) continue; + if(!Preferences.dev()) continue; Log.d("Prefs", "Append " + name + " : " + value); } } - if (!Preferences.dev()) return; + if(!Preferences.dev()) return; File prefsDir = new File(getContext().getFilesDir().getParentFile(), "shared_prefs"); File file = new File(prefsDir, "com.vtosters.lite_preferences.xml"); Log.d("TAG", new String(readFileFully(file))); diff --git a/app/src/main/java/ru/vtosters/lite/utils/Toggles.java b/app/src/main/java/ru/vtosters/lite/utils/Toggles.java index 00e5d1498..2e992c4a6 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/Toggles.java +++ b/app/src/main/java/ru/vtosters/lite/utils/Toggles.java @@ -118,6 +118,7 @@ public class Toggles{ case FEATURE_WISHLIST_MY_PROFILE: case FEATURE_MILKSHAKE_FORCE_DISABLED: case FEATURE_MILKSHAKE_ACTIVATION_DISABLED: + case EXPERIMENT_NEWS_DISABLE_CACHE: return true; default: return false; @@ -143,6 +144,8 @@ public class Toggles{ return postsredesign(); case FEATURE_IMAGE_QUALITY_UPGRADE: return getBoolValue("compressPhotos", true); + case FEATURE_MUSIC_STOP_PLAYER_ON_TASK_REMOVAL: + return getBoolValue("musictask", false); default: return true; } diff --git a/smali/assets/crashlytics-build.properties b/smali/assets/crashlytics-build.properties deleted file mode 100644 index a32163e79..000000000 --- a/smali/assets/crashlytics-build.properties +++ /dev/null @@ -1,11 +0,0 @@ -#This file is automatically generated by Crashlytics to uniquely -#identify individual builds of your Android application. -# -#Do NOT modify, delete, or commit to source control! -# -#Fri Mar 20 23:54:55 MSK 2020 -version_name=5.56.1 -package_name=com.vkontakte.android -build_id=11b1e7dc-3974-4ec4-8d5f-da161bcbc268 -version_code=4838 -app_name=VK diff --git a/smali/res/xml/preferences_debug.xml b/smali/res/xml/preferences_debug.xml index e9df03642..2cd9c65a6 100644 --- a/smali/res/xml/preferences_debug.xml +++ b/smali/res/xml/preferences_debug.xml @@ -26,11 +26,6 @@ android:defaultValue="false" android:key="vksans" android:title="@string/debug_experimental_vk_sans_font" /> - - - - - - - - + - + + \ No newline at end of file diff --git a/smali/res/xml/preferences_other.xml b/smali/res/xml/preferences_other.xml index 4a16fca74..69210df7e 100644 --- a/smali/res/xml/preferences_other.xml +++ b/smali/res/xml/preferences_other.xml @@ -44,6 +44,12 @@ android:key="restoreprefs" android:title="Restore prefs" /> + + + + getFormattedDate(ZJ)Ljava/lang/String; + invoke-static {p1, p2, p3}, Lru/vtosters/lite/utils/LocaleUtils;->getFormattedDate(ZJ)Ljava/lang/String; move-result-object v0 diff --git a/smali/smali_classes3/com/vk/im/ui/components/attaches_history/attaches/adapter/delegates/DocAttachViewTypeDelegate.smali b/smali/smali_classes3/com/vk/im/ui/components/attaches_history/attaches/adapter/delegates/DocAttachViewTypeDelegate.smali index 23cc9decc..fcd08cbff 100644 --- a/smali/smali_classes3/com/vk/im/ui/components/attaches_history/attaches/adapter/delegates/DocAttachViewTypeDelegate.smali +++ b/smali/smali_classes3/com/vk/im/ui/components/attaches_history/attaches/adapter/delegates/DocAttachViewTypeDelegate.smali @@ -45,7 +45,7 @@ invoke-direct {p1, v0}, Ljava/text/SimpleDateFormat;->(Ljava/lang/String;)V - invoke-static {}, Lru/vtosters/lite/utils/Preferences;->setDateFormat()Ljava/text/SimpleDateFormat; + invoke-static {}, Lru/vtosters/lite/utils/LocaleUtils;->setDateFormat()Ljava/text/SimpleDateFormat; move-result-object p1 diff --git a/smali/smali_classes4/com/vtosters/lite/VKApplication.smali b/smali/smali_classes4/com/vtosters/lite/VKApplication.smali index 78a2edfca..613fbce7b 100644 --- a/smali/smali_classes4/com/vtosters/lite/VKApplication.smali +++ b/smali/smali_classes4/com/vtosters/lite/VKApplication.smali @@ -3016,7 +3016,7 @@ new-instance v0, Ljava/text/SimpleDateFormat; - invoke-static {}, Lru/vtosters/lite/utils/Preferences;->getDateFormat()Ljava/lang/String; + invoke-static {}, Lru/vtosters/lite/utils/LocaleUtils;->getDateFormat()Ljava/lang/String; move-result-object v3 @@ -3032,7 +3032,7 @@ .param p0, "s" # I .line 17 - invoke-static {}, Lru/vtosters/lite/utils/Preferences;->fulltime()Z + invoke-static {}, Lru/vtosters/lite/utils/LocaleUtils;->fulltime()Z move-result v0