From 07156f1c6a7b19241441d66e48611a78356176ef Mon Sep 17 00:00:00 2001 From: spiky-s <49979126+spiky-s@users.noreply.github.com> Date: Sun, 5 Mar 2023 16:26:43 +0300 Subject: [PATCH] added VKWebAppGetConfig vkbridge event support (#1134) --- .../ru/vtosters/lite/utils/WebAppUtils.java | 24 +++++++++ smali/assets/vt_ui_accent.css | 6 +-- smali/assets/vt_ui_oled.css | 6 +-- .../com/vk/webapp/VkUiFragment.smali | 3 ++ .../com/vk/webapp/bridges/AndroidBridge.smali | 52 +++++++++++++++++++ .../vk/webapp/bridges/VkUiConnectBridge.smali | 26 ++++++++++ .../internal/data/JsApiMethodType.smali | 23 +++++++- 7 files changed, 133 insertions(+), 7 deletions(-) create mode 100644 app/src/main/java/ru/vtosters/lite/utils/WebAppUtils.java diff --git a/app/src/main/java/ru/vtosters/lite/utils/WebAppUtils.java b/app/src/main/java/ru/vtosters/lite/utils/WebAppUtils.java new file mode 100644 index 000000000..600ad3e3e --- /dev/null +++ b/app/src/main/java/ru/vtosters/lite/utils/WebAppUtils.java @@ -0,0 +1,24 @@ +package ru.vtosters.lite.utils; + +import org.json.JSONObject; +import org.json.JSONException; + +import com.vk.core.ui.themes.VKThemeHelper; +import com.vk.api.base.ApiConfig; +import com.vk.core.preference.Preference; +import b.h.g.g.BuildInfo; + +import ru.vtosters.lite.proxy.api.ApiProxy; + +public class WebAppUtils { + + public static JSONObject getWebAppConfig() throws JSONException { + JSONObject jSONObject = new JSONObject() + .put("scheme", VKThemeHelper.l().b()) + .put("app", "vkclient") + .put("app_id", ApiConfig.a) + .put("appearance", VKThemeHelper.l().a() ? "light" : "dark") + .put("api_host", ApiProxy.linkReplacer(Preference.a().getString("apiHost", "api.vk.com"))); + return jSONObject; + } +} diff --git a/smali/assets/vt_ui_accent.css b/smali/assets/vt_ui_accent.css index 82b5fd501..8039d3e14 100644 --- a/smali/assets/vt_ui_accent.css +++ b/smali/assets/vt_ui_accent.css @@ -5,7 +5,7 @@ background-color: %accent% !important; } -body[scheme=bright_light] { +.vkuibright_light, [scheme=bright_light], body[scheme=bright_light] { --accent: %accent% !important; --action_sheet_action_foreground: %accent% !important; --attach_picker_tab_active_background: %accent% !important; @@ -56,7 +56,7 @@ body[scheme=bright_light] { -body[scheme=space_gray] { +.vkuispace_gray, [scheme=space_gray], body[scheme=space_gray] { --accent: %accent% !important; --action_sheet_action_foreground: %accent% !important; --attach_picker_tab_active_background: %accent% !important; @@ -132,4 +132,4 @@ h1, h2, h3 { .articleView__content_misc_block { background-color: %background_content% !important; color: %text_primary% !important; -} \ No newline at end of file +} diff --git a/smali/assets/vt_ui_oled.css b/smali/assets/vt_ui_oled.css index a765ab4ed..db051b265 100644 --- a/smali/assets/vt_ui_oled.css +++ b/smali/assets/vt_ui_oled.css @@ -43,12 +43,12 @@ body.article_body.article_dark { } /* VK Support fixes */ -[scheme="client_dark"] .CatalogSearch__input, [scheme="space_gray"] .CatalogSearch__input { +[scheme="client_dark"] .CatalogSearch__input, [scheme="space_gray"] .CatalogSearch__input, .vkuispace_gray .CatalogSearch__input{ background: #000000 !important; } /* Generic VKUI */ -body[scheme=space_gray] { +.vkuispace_gray, [scheme=space_gray], body[scheme=space_gray] { /* light background */ --attach_picker_tab_active_icon: #000000 !important; --background_content: #000000 !important; @@ -89,4 +89,4 @@ body[scheme=space_gray] { --search_bar_field_background: #212121 !important; --selection_off_icon: #212121 !important; --panel_tab_active_background: #212121 !important; -} \ No newline at end of file +} diff --git a/smali/smali_classes4/com/vk/webapp/VkUiFragment.smali b/smali/smali_classes4/com/vk/webapp/VkUiFragment.smali index 34c5d6d33..71925231c 100644 --- a/smali/smali_classes4/com/vk/webapp/VkUiFragment.smali +++ b/smali/smali_classes4/com/vk/webapp/VkUiFragment.smali @@ -1982,6 +1982,9 @@ if-eqz v3, :cond_1 .line 10 + + const-string v4, "api_host" + invoke-virtual {v0, v4, v1}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject; .line 11 diff --git a/smali/smali_classes4/com/vk/webapp/bridges/AndroidBridge.smali b/smali/smali_classes4/com/vk/webapp/bridges/AndroidBridge.smali index 987a71f57..37667bd00 100644 --- a/smali/smali_classes4/com/vk/webapp/bridges/AndroidBridge.smali +++ b/smali/smali_classes4/com/vk/webapp/bridges/AndroidBridge.smali @@ -1061,6 +1061,58 @@ return-void .end method +.method public VKWebAppGetConfig(Ljava/lang/String;)V + .locals 7 + .annotation runtime Landroid/webkit/JavascriptInterface; + .end annotation + + .line 1 + sget-object v1, Lcom/vk/webapp/internal/data/JsApiMethodType;->GET_CONFIG:Lcom/vk/webapp/internal/data/JsApiMethodType; + + const-string v3, "VKWebAppGetConfigFailed" + + const/4 v4, 0x0 + + const/16 v5, 0x8 + + const/4 v6, 0x0 + + move-object v0, p0 + + move-object v2, p1 + + invoke-static/range {v0 .. v6}, Lcom/vk/webapp/bridges/AndroidBridge;->a(Lcom/vk/webapp/bridges/AndroidBridge;Lcom/vk/webapp/internal/data/JsApiMethodType;Ljava/lang/String;Ljava/lang/String;ZILjava/lang/Object;)Z + + move-result p1 + + if-nez p1, :cond_0 + + return-void + + .line 2 + :cond_0 + invoke-static {}, Lru/vtosters/lite/utils/WebAppUtils;->getWebAppConfig()Lorg/json/JSONObject; + + move-result-object p1 + + .line 3 + + .line 4 + + .line 5 + sget-object v0, Lcom/vk/webapp/internal/data/JsApiMethodType;->GET_CONFIG:Lcom/vk/webapp/internal/data/JsApiMethodType; + + const-string v1, "result" + + invoke-static {p1, v1}, Lkotlin/jvm/internal/Intrinsics;->a(Ljava/lang/Object;Ljava/lang/String;)V + + const-string v1, "VKWebAppGetConfigResult" + + invoke-virtual {p0, v0, v1, p1}, Lcom/vk/webapp/bridges/AndroidBridge;->a(Lcom/vk/webapp/internal/data/JsApiMethodType;Ljava/lang/String;Lorg/json/JSONObject;)V + + return-void +.end method + .method public VKWebAppShowImages(Ljava/lang/String;)V .locals 11 .annotation runtime Landroid/webkit/JavascriptInterface; diff --git a/smali/smali_classes4/com/vk/webapp/bridges/VkUiConnectBridge.smali b/smali/smali_classes4/com/vk/webapp/bridges/VkUiConnectBridge.smali index bfb2152df..876487c1d 100644 --- a/smali/smali_classes4/com/vk/webapp/bridges/VkUiConnectBridge.smali +++ b/smali/smali_classes4/com/vk/webapp/bridges/VkUiConnectBridge.smali @@ -1782,6 +1782,32 @@ return-void .end method +.method public VKWebAppGetConfig(Ljava/lang/String;)V + .locals 2 + .annotation runtime Landroid/webkit/JavascriptInterface; + .end annotation + + .line 1 + iget-object v0, p0, Lcom/vk/webapp/bridges/VkUiConnectBridge;->m:Lcom/vk/webapp/o/VkUiConnectFragmentDelegate; + + invoke-interface {v0}, Lcom/vk/webapp/o/VkUiConnectFragmentDelegate;->w()Lcom/vk/webapp/helpers/VkAppsAnalytics; + + move-result-object v0 + + sget-object v1, Lcom/vk/webapp/internal/data/JsApiMethodType;->GET_CONFIG:Lcom/vk/webapp/internal/data/JsApiMethodType; + + invoke-virtual {v1}, Lcom/vk/webapp/internal/data/JsApiMethodType;->b()Ljava/lang/String; + + move-result-object v1 + + invoke-virtual {v0, v1}, Lcom/vk/webapp/helpers/VkAppsAnalytics;->a(Ljava/lang/String;)V + + .line 2 + invoke-super {p0, p1}, Lcom/vk/webapp/bridges/AndroidBridge;->VKWebAppGetConfig(Ljava/lang/String;)V + + return-void +.end method + .method public final VKWebAppGetCommunityAuthToken(Ljava/lang/String;)V .locals 9 .annotation runtime Landroid/webkit/JavascriptInterface; diff --git a/smali/smali_classes4/com/vk/webapp/internal/data/JsApiMethodType.smali b/smali/smali_classes4/com/vk/webapp/internal/data/JsApiMethodType.smali index fad5fdf79..567372257 100644 --- a/smali/smali_classes4/com/vk/webapp/internal/data/JsApiMethodType.smali +++ b/smali/smali_classes4/com/vk/webapp/internal/data/JsApiMethodType.smali @@ -30,6 +30,8 @@ .field public static final enum APP_INIT:Lcom/vk/webapp/internal/data/JsApiMethodType; +.field public static final enum GET_CONFIG:Lcom/vk/webapp/internal/data/JsApiMethodType; + .field public static final enum AUTH_BY_EXCHANGE_TOKEN:Lcom/vk/webapp/internal/data/JsApiMethodType; .field public static final enum CLOSE_APP:Lcom/vk/webapp/internal/data/JsApiMethodType; @@ -169,7 +171,7 @@ .method static constructor ()V .locals 6 - const/16 v0, 0x47 + const/16 v0, 0x48 new-array v0, v0, [Lcom/vk/webapp/internal/data/JsApiMethodType; @@ -1492,6 +1494,25 @@ aput-object v1, v0, v2 + new-instance v1, Lcom/vk/webapp/internal/data/JsApiMethodType; + + .line 72 + sget-object v2, Lcom/vk/webapp/internal/data/BackgroundWork;->ALLOWED:Lcom/vk/webapp/internal/data/BackgroundWork; + + const-string v3, "GET_CONFIG" + + const/16 v4, 0x47 + + const-string v5, "VKWebAppGetConfig" + + invoke-direct {v1, v3, v4, v5, v2}, Lcom/vk/webapp/internal/data/JsApiMethodType;->(Ljava/lang/String;ILjava/lang/String;Lcom/vk/webapp/internal/data/BackgroundWork;)V + + sput-object v1, Lcom/vk/webapp/internal/data/JsApiMethodType;->GET_CONFIG:Lcom/vk/webapp/internal/data/JsApiMethodType; + + const/16 v2, 0x47 + + aput-object v1, v0, v2 + sput-object v0, Lcom/vk/webapp/internal/data/JsApiMethodType;->$VALUES:[Lcom/vk/webapp/internal/data/JsApiMethodType; return-void