also get rid of java reflection
This commit is contained in:
aliveoutside
2022-08-05 03:03:40 +03:00
parent 1f2200c584
commit be65e6816d
2 changed files with 12 additions and 17 deletions
@@ -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);
@@ -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);