From 30886adc62308bbd4b2601ee67eff91c5fce3a1e Mon Sep 17 00:00:00 2001 From: gdlbo <41114720+gdlbo@users.noreply.github.com> Date: Fri, 16 Sep 2022 18:59:48 +0300 Subject: [PATCH 1/3] fix strange crash --- .../com/vk/profile/ui/BaseProfileFragment.smali | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/smali/smali_classes4/com/vk/profile/ui/BaseProfileFragment.smali b/smali/smali_classes4/com/vk/profile/ui/BaseProfileFragment.smali index fed2a2c28..c4e6d8e9b 100644 --- a/smali/smali_classes4/com/vk/profile/ui/BaseProfileFragment.smali +++ b/smali/smali_classes4/com/vk/profile/ui/BaseProfileFragment.smali @@ -5871,12 +5871,14 @@ .line 1 iget-object v0, p0, Lcom/vk/profile/ui/BaseProfileFragment;->P0:Landroid/view/View; + if-nez v0, :cond_229 + + return-void + + :cond_229 invoke-static {v0}, Lcom/vk/core/ui/themes/VKThemeHelper;->a(Landroid/view/View;)V .line 2 - iget-object v0, p0, Lcom/vk/profile/ui/BaseProfileFragment;->P0:Landroid/view/View; - - .line 3 invoke-virtual {v0}, Landroid/view/View;->getContext()Landroid/content/Context; move-result-object v0 From d1eed0fbd57a2adf7989bc0359efb472750d594d Mon Sep 17 00:00:00 2001 From: aliveoutside <53598473+aliveoutside@users.noreply.github.com> Date: Fri, 16 Sep 2022 23:01:31 +0300 Subject: [PATCH 2/3] do not reapply theme on every config change --- .../vtosters/lite/hooks/ui/SystemThemeChangerHook.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/ru/vtosters/lite/hooks/ui/SystemThemeChangerHook.java b/app/src/main/java/ru/vtosters/lite/hooks/ui/SystemThemeChangerHook.java index 1840860b6..bf55b36e4 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/ui/SystemThemeChangerHook.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/ui/SystemThemeChangerHook.java @@ -6,17 +6,24 @@ import ru.vtosters.lite.utils.Preferences; import ru.vtosters.lite.utils.ThemesUtils; public class SystemThemeChangerHook { + private static int latestTheme = 0; + public static void onThemeChanged(Configuration configuration) { if (Preferences.systemtheme()) { - switch (configuration.uiMode & Configuration.UI_MODE_NIGHT_MASK) { + var theme = configuration.uiMode & Configuration.UI_MODE_NIGHT_MASK; + if (theme == latestTheme) return; + + switch (theme) { case Configuration.UI_MODE_NIGHT_YES: // Night mode is active, we're using dark theme ThemesUtils.applyTheme(ThemesUtils.getDarkTheme()); + latestTheme = theme; break; case Configuration.UI_MODE_NIGHT_NO: case Configuration.UI_MODE_NIGHT_UNDEFINED: // Night mode is not active, we're using light theme ThemesUtils.applyTheme(ThemesUtils.getLightTheme()); + latestTheme = theme; break; } } From 5c95ae3dd06be62cd525552a21c3bffc69caab34 Mon Sep 17 00:00:00 2001 From: gdlbo <41114720+gdlbo@users.noreply.github.com> Date: Sat, 17 Sep 2022 15:13:40 +0300 Subject: [PATCH 3/3] fixCTX --- .../main/java/ru/vtosters/lite/hooks/MessagesHook.java | 10 ++++++++++ .../com/vk/im/ui/fragments/ChatFragment.smali | 8 ++++++++ 2 files changed, 18 insertions(+) diff --git a/app/src/main/java/ru/vtosters/lite/hooks/MessagesHook.java b/app/src/main/java/ru/vtosters/lite/hooks/MessagesHook.java index 2fb860edb..c71148ec0 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/MessagesHook.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/MessagesHook.java @@ -7,6 +7,7 @@ import static ru.vtosters.lite.utils.Preferences.autoalltranslate; import static ru.vtosters.lite.utils.Preferences.autotranslate; import static ru.vtosters.lite.utils.Preferences.savemsgsett; +import android.content.Context; import android.text.TextUtils; import android.view.View; @@ -16,6 +17,7 @@ import java.util.ArrayList; import java.util.regex.Pattern; import ru.vtosters.lite.translators.BaseTranslator; +import ru.vtosters.lite.utils.LifecycleUtils; public class MessagesHook { public static String injectOwnText(String oldText) { @@ -72,6 +74,14 @@ public class MessagesHook { }); } + public static Context fixCTX(Context ctx) { + if (ctx == null){ + return LifecycleUtils.getCurrentActivity(); + } else { + return ctx; + } + } + public static void injRequest(MethodCall.a req) { var time = expireTime(); diff --git a/smali/smali_classes3/com/vk/im/ui/fragments/ChatFragment.smali b/smali/smali_classes3/com/vk/im/ui/fragments/ChatFragment.smali index db66239cc..101c61a3c 100644 --- a/smali/smali_classes3/com/vk/im/ui/fragments/ChatFragment.smali +++ b/smali/smali_classes3/com/vk/im/ui/fragments/ChatFragment.smali @@ -4409,6 +4409,10 @@ move-result-object v6 + invoke-static {v6}, Lru/vtosters/lite/hooks/MessagesHook;->fixCTX(Landroid/content/Context;)Landroid/content/Context; + + move-result-object v6 + iput-object v6, p0, Lcom/vk/im/ui/fragments/ChatFragment;->L:Landroid/content/Context; .line 8 @@ -6119,6 +6123,10 @@ .line 1 iget-object v0, p0, Lcom/vk/im/ui/fragments/ChatFragment;->L:Landroid/content/Context; + invoke-static {v0}, Lru/vtosters/lite/hooks/MessagesHook;->fixCTX(Landroid/content/Context;)Landroid/content/Context; + + move-result-object v0 + const/4 v1, 0x0 if-eqz v0, :cond_1