diff --git a/app/src/main/java/ru/vtosters/lite/hooks/MainActivityInjector.java b/app/src/main/java/ru/vtosters/lite/hooks/MainActivityInjector.java index 5a3b4d82d..802494156 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/MainActivityInjector.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/MainActivityInjector.java @@ -2,6 +2,7 @@ package ru.vtosters.lite.hooks; import static ru.vtosters.lite.ui.dialogs.ServerDialog.sendRequest; import static ru.vtosters.lite.utils.CacheUtils.getInstance; +import static ru.vtosters.lite.utils.DeletedMessagesHandler.reloadMessagesList; import static ru.vtosters.lite.utils.Preferences.checkupdates; import static ru.vtosters.lite.utils.ThemesUtils.isDarkTheme; import static ru.vtosters.lite.utils.ThemesUtils.setNeededTheme; @@ -24,6 +25,7 @@ public class MainActivityInjector { ServerDialog.activity = activity; sendRequest(); if (checkupdates()) OTADialog.checkUpdates(activity); + reloadMessagesList(); Start.alert(activity); InstallGMS.alert(activity); DisableBattery.alert(activity); 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 3d79533aa..764243a1f 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/DeletedMessagesHandler.java +++ b/app/src/main/java/ru/vtosters/lite/utils/DeletedMessagesHandler.java @@ -7,9 +7,7 @@ import static ru.vtosters.lite.utils.Preferences.getBoolValue; import android.annotation.SuppressLint; import android.content.ContentValues; import android.database.Cursor; -import android.text.TextUtils; -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; @@ -79,32 +77,27 @@ public class DeletedMessagesHandler { } public static void updateDialog(MsgDeleteLpTask msgDeleteLpTask) throws NoSuchFieldException, IllegalAccessException { - Cursor c = getMessageFromDatabaseById(ReflectionUtils.getObjectField(msgDeleteLpTask.getClass(), "d", msgDeleteLpTask)); - if (c == null) return; + var cursor = getMessageFromDatabaseById(msgDeleteLpTask.d); + if (cursor == null) return; @SuppressLint("Range") - int localId = c.getInt(c.getColumnIndex("local_id")); + int localId = cursor.getInt(cursor.getColumnIndex("local_id")); - String str = DeletedMessagesHandler.class.getSimpleName(); - var imEnvironment = (ImEnvironment) ReflectionUtils.getObjectField(msgDeleteLpTask.getClass(), "b", msgDeleteLpTask); - var cint = (int) ReflectionUtils.getObjectField(msgDeleteLpTask.getClass(), "c", msgDeleteLpTask); - imEnvironment.a(str, new OnMsgUpdateEvent(str, cint, localId)); + var className = DeletedMessagesHandler.class.getSimpleName(); + var imEnvironment = msgDeleteLpTask.b; + var cint = msgDeleteLpTask.c; + imEnvironment.a(className, new OnMsgUpdateEvent(className, cint, localId)); } - public static void hookDeletedMessageId(MsgDeleteLpTask msgDeleteLpTask) throws NoSuchFieldException, IllegalAccessException { + public static void hookDeletedMessageId(MsgDeleteLpTask msgDeleteLpTask) { if (!hook()) return; - var field = msgDeleteLpTask.getClass().getDeclaredField("c"); - field.setAccessible(true); - var messageId = (int) field.get(msgDeleteLpTask); + var messageId = msgDeleteLpTask.d; Cursor c = getMessageFromDatabaseById(messageId); if (c == null) return; + if (sBodyIndex == -1) sBodyIndex = c.getColumnIndex("body"); - if (TextUtils.isEmpty(c.getString(sBodyIndex))) { - deleteMessageFromDB(messageId); - return; - } sDeletedMessagesList.add(messageId); sVTDatabase.saveDeletedMessage(messageId);