From d7ff250faf04bdf106195a296095afe049935248 Mon Sep 17 00:00:00 2001 From: gdlbo <41114720+gdlbo@users.noreply.github.com> Date: Fri, 6 May 2022 13:43:42 +0300 Subject: [PATCH] Undelete feature + fixes --- .../lite/ui/fragments/OtherFragment.java | 2 + .../multiaccount/MultiAccountAdapter.java | 9 +++++ .../lite/utils/DeletedMessagesHandler.java | 4 +- .../ru/vtosters/lite/utils/Preferences.java | 2 + smali/res/xml/preferences_activity.xml | 5 +++ .../delegates/messages/MsgDbReader.smali | 2 + .../internal/longpoll/a/MsgDeleteLpTask.smali | 37 +++++++++++++++++-- 7 files changed, 56 insertions(+), 5 deletions(-) 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 aa6a9bf26..2c4bb9232 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 @@ -74,6 +74,8 @@ public class OtherFragment extends MaterialPreferenceToolbarFragment { @Override // android.support.v7.preference.Preference.c public boolean a(Preference preference) { + SharedPreferences prefs = getContext().getSharedPreferences("stickers", Context.MODE_PRIVATE); + prefs.edit().clear().commit(); VKImageLoader.b(); ImEngineProvider.a().h(); AudioMessageUtils.j(); 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 index 82ec816bf..8d9dc009c 100644 --- 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 @@ -1,12 +1,15 @@ 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.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.support.v7.widget.RecyclerView; @@ -127,6 +130,8 @@ public class MultiAccountAdapter extends RecyclerView.a sDeletedMessagesList = new ArrayList<>(); - private static final String DELETED_PREFIX = "\uD83D\uDDD1 "; + private static final String DELETED_PREFIX = "[Удалено] "; private static SQLiteDatabase sVKSQLiteDatabase; private static int sBodyIndex = -1; @@ -45,7 +45,7 @@ public class DeletedMessagesHandler { } public static boolean hook() { - return BooleanFalse("hook_deleted_messages"); + return BooleanFalse("undeletemsg"); } public static void setBodyDBParser(Msg msg) { 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 90cdf109b..286feea7c 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/Preferences.java +++ b/app/src/main/java/ru/vtosters/lite/utils/Preferences.java @@ -1,6 +1,7 @@ package ru.vtosters.lite.utils; import static ru.vtosters.lite.ui.fragments.multiaccount.MultiAccountManager.migrate; +import static ru.vtosters.lite.utils.DeletedMessagesHandler.reloadMessagesList; import static ru.vtosters.lite.utils.Globals.fixGapps; import static ru.vtosters.lite.utils.Globals.getContext; import static ru.vtosters.lite.utils.Globals.getPreferences; @@ -27,6 +28,7 @@ public class Preferences { fixGapps(); setProxy(); migrate(); + reloadMessagesList(); registerActivities(application); } diff --git a/smali/res/xml/preferences_activity.xml b/smali/res/xml/preferences_activity.xml index 8bde1844d..e482f64fd 100644 --- a/smali/res/xml/preferences_activity.xml +++ b/smali/res/xml/preferences_activity.xml @@ -54,6 +54,11 @@ + f(I)V + invoke-static {v0}, Lru/vtosters/lite/utils/DeletedMessagesHandler;->setBodyDBParser(Lcom/vk/im/engine/models/messages/Msg;)V + return-object v0 :pswitch_data_0 diff --git a/smali/smali_classes3/com/vk/im/engine/internal/longpoll/a/MsgDeleteLpTask.smali b/smali/smali_classes3/com/vk/im/engine/internal/longpoll/a/MsgDeleteLpTask.smali index 9bc17546f..f13929204 100644 --- a/smali/smali_classes3/com/vk/im/engine/internal/longpoll/a/MsgDeleteLpTask.smali +++ b/smali/smali_classes3/com/vk/im/engine/internal/longpoll/a/MsgDeleteLpTask.smali @@ -61,8 +61,17 @@ # virtual methods .method protected b(Lcom/vk/im/engine/internal/longpoll/LongPollChanges;)V - .locals 2 + .locals 4 + invoke-static {}, Lru/vtosters/lite/utils/DeletedMessagesHandler;->hook()Z + + move-result v0 + + if-eqz v0, :cond_7 + + return-void + + :cond_7 const-string v0, "out" invoke-static {p1, v0}, Lkotlin/jvm/internal/Intrinsics;->b(Ljava/lang/Object;Ljava/lang/String;)V @@ -83,8 +92,19 @@ .end method .method protected b(Lcom/vk/im/engine/internal/longpoll/LongPollEntityInfo;Lcom/vk/im/engine/internal/longpoll/LongPollEntityMissed;)V - .locals 1 + .locals 4 + invoke-static {p0}, Lru/vtosters/lite/utils/DeletedMessagesHandler;->hookDeletedMessageId(Lcom/vk/im/engine/internal/longpoll/a/MsgDeleteLpTask;)V + + invoke-static {}, Lru/vtosters/lite/utils/DeletedMessagesHandler;->hook()Z + + move-result v0 + + if-eqz v0, :cond_a + + return-void + + :cond_a const-string v0, "lpInfo" invoke-static {p1, v0}, Lkotlin/jvm/internal/Intrinsics;->b(Ljava/lang/Object;Ljava/lang/String;)V @@ -120,8 +140,19 @@ .end method .method protected c(Lcom/vk/im/engine/internal/longpoll/LongPollEntityInfo;)V - .locals 3 + .locals 5 + invoke-static {}, Lru/vtosters/lite/utils/DeletedMessagesHandler;->hook()Z + + move-result v0 + + if-eqz v0, :cond_a + + invoke-static {p0}, Lru/vtosters/lite/utils/DeletedMessagesHandler;->updateDialog(Lcom/vk/im/engine/internal/longpoll/a/MsgDeleteLpTask;)V + + return-void + + :cond_a const-string v0, "lpInfo" invoke-static {p1, v0}, Lkotlin/jvm/internal/Intrinsics;->b(Ljava/lang/Object;Ljava/lang/String;)V