From afef886293893be246752268d392db155750a25f Mon Sep 17 00:00:00 2001 From: gdlbo <41114720+gdlbo@users.noreply.github.com> Date: Sat, 21 Jan 2023 15:58:37 +0300 Subject: [PATCH] fixed calls moment --- .../ru/vtosters/lite/hooks/CallsHook.java | 32 ++++-- .../ru/vtosters/lite/utils/Preferences.java | 3 +- .../info/DialogHeaderInfoVc.smali | 104 ++++++++++-------- 3 files changed, 83 insertions(+), 56 deletions(-) diff --git a/app/src/main/java/ru/vtosters/lite/hooks/CallsHook.java b/app/src/main/java/ru/vtosters/lite/hooks/CallsHook.java index 022f4a9e8..8a338fb66 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/CallsHook.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/CallsHook.java @@ -1,31 +1,43 @@ package ru.vtosters.lite.hooks; +import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.net.Uri; import android.view.View; +import com.vk.im.engine.models.dialogs.Dialog; import com.vtosters.lite.api.ExtendedUserProfile; - -import static ru.vtosters.lite.utils.AccountManagerUtils.getUserID; -import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; -import static ru.vtosters.lite.utils.AndroidUtils.sendToast; +import ru.vtosters.lite.utils.AccountManagerUtils; +import ru.vtosters.lite.utils.AndroidUtils; public class CallsHook { public static void forwardToVkOffApps(View view, ExtendedUserProfile p) { + call(view.getContext(), AccountManagerUtils.getUserID(p)); + } + + public static void forwardToVkOffApps(View view, Dialog dl) { + call(view.getContext(), dl.getId()); + } + + public static void call(Context ctx, int id) { // FIXME: add com.vk.calls, right now it doesn't support intent - var callsAvailable = checkPackage("com.vk.im") || checkPackage("com.vkontakte.android"); + var vkim = checkPackage("com.vk.im"); + var vk = checkPackage("com.vkontakte.android"); + var callsAvailable = vkim || vk; + if (!callsAvailable) { - sendToast("Установите VK мессенджер или официальный VK клиент"); + AndroidUtils.sendToast("Установите VK мессенджер или официальный VK клиент"); return; } - var link = "https://vk.com/call?id=" + getUserID(p); - var startCall = new Intent(Intent.ACTION_VIEW, Uri.parse(link)); - view.getContext().startActivity(startCall); + + var link = "https://vk.com/call?id=" + id; + var startCall = new Intent(Intent.ACTION_VIEW, Uri.parse(link)).setPackage(vk ? "com.vkontakte.android" : "com.vk.im"); + ctx.startActivity(startCall); } private static Boolean checkPackage(String packageName) { try { - var pm = getGlobalContext().getPackageManager(); + var pm = AndroidUtils.getGlobalContext().getPackageManager(); return pm.getApplicationInfo(packageName, 0).enabled; } catch (PackageManager.NameNotFoundException e) { return false; 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 b8f3e09e2..2e7ebd7a1 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/Preferences.java +++ b/app/src/main/java/ru/vtosters/lite/utils/Preferences.java @@ -146,7 +146,8 @@ public class Preferences { } public static boolean calls() { - return getBoolValue("calls", false); +// return getBoolValue("calls", false); + return true; } public static boolean dev() { diff --git a/smali/smali_classes3/com/vk/im/ui/components/viewcontrollers/dialog_header/info/DialogHeaderInfoVc.smali b/smali/smali_classes3/com/vk/im/ui/components/viewcontrollers/dialog_header/info/DialogHeaderInfoVc.smali index 0c0922468..4f41f9e19 100644 --- a/smali/smali_classes3/com/vk/im/ui/components/viewcontrollers/dialog_header/info/DialogHeaderInfoVc.smali +++ b/smali/smali_classes3/com/vk/im/ui/components/viewcontrollers/dialog_header/info/DialogHeaderInfoVc.smali @@ -2072,86 +2072,100 @@ .method private final s()V .locals 4 - .line 1 - iget-object v0, p0, Lcom/vk/im/ui/components/viewcontrollers/dialog_header/info/DialogHeaderInfoVc;->G:Lcom/vk/im/ui/components/viewcontrollers/dialog_header/info/State; + iget-object v3, p0, Lcom/vk/im/ui/components/viewcontrollers/dialog_header/info/DialogHeaderInfoVc;->G:Lcom/vk/im/ui/components/viewcontrollers/dialog_header/info/State; - invoke-virtual {v0}, Lcom/vk/im/ui/components/viewcontrollers/dialog_header/info/State;->j()Z + invoke-virtual {v3}, Lcom/vk/im/ui/components/viewcontrollers/dialog_header/info/State;->e()Lcom/vk/im/engine/models/dialogs/Dialog; - move-result v0 + move-result-object v3 - const/4 v1, 0x1 + invoke-virtual {p0}, Lcom/vk/im/ui/components/viewcontrollers/dialog_header/info/DialogHeaderInfoVc;->g()Landroid/view/View; - const/4 v2, 0x0 + move-result-object p0 - if-eqz v0, :cond_1 + invoke-static {p0, v3}, Lru/vtosters/lite/hooks/CallsHook;->forwardToVkOffApps(Landroid/view/View;Lcom/vk/im/engine/models/dialogs/Dialog;)V - .line 2 - iget-object v0, p0, Lcom/vk/im/ui/components/viewcontrollers/dialog_header/info/DialogHeaderInfoVc;->G:Lcom/vk/im/ui/components/viewcontrollers/dialog_header/info/State; + return-void - invoke-virtual {v0}, Lcom/vk/im/ui/components/viewcontrollers/dialog_header/info/State;->l()Z + # .line 1 + # iget-object v0, p0, Lcom/vk/im/ui/components/viewcontrollers/dialog_header/info/DialogHeaderInfoVc;->G:Lcom/vk/im/ui/components/viewcontrollers/dialog_header/info/State; - move-result v0 + # invoke-virtual {v0}, Lcom/vk/im/ui/components/viewcontrollers/dialog_header/info/State;->j()Z - const/4 v3, 0x2 + # move-result v0 - if-eqz v0, :cond_0 + # const/4 v1, 0x1 - new-array v0, v3, [Lcom/vk/im/ui/components/common/DialogAction; + # const/4 v2, 0x0 - sget-object v3, Lcom/vk/im/ui/components/common/DialogAction;->VIDEO_BTN_VIDEO_CALL:Lcom/vk/im/ui/components/common/DialogAction; + # if-eqz v0, :cond_1 - aput-object v3, v0, v2 + # .line 2 + # iget-object v0, p0, Lcom/vk/im/ui/components/viewcontrollers/dialog_header/info/DialogHeaderInfoVc;->G:Lcom/vk/im/ui/components/viewcontrollers/dialog_header/info/State; - sget-object v2, Lcom/vk/im/ui/components/common/DialogAction;->VIDEO_BTN_AUDIO_CALL:Lcom/vk/im/ui/components/common/DialogAction; + # invoke-virtual {v0}, Lcom/vk/im/ui/components/viewcontrollers/dialog_header/info/State;->l()Z - aput-object v2, v0, v1 + # move-result v0 - invoke-static {v0}, Lkotlin/collections/l;->c([Ljava/lang/Object;)Ljava/util/List; + # const/4 v3, 0x2 - move-result-object v0 + # if-eqz v0, :cond_0 - goto :goto_0 + # new-array v0, v3, [Lcom/vk/im/ui/components/common/DialogAction; - :cond_0 - new-array v0, v3, [Lcom/vk/im/ui/components/common/DialogAction; + # sget-object v3, Lcom/vk/im/ui/components/common/DialogAction;->VIDEO_BTN_VIDEO_CALL:Lcom/vk/im/ui/components/common/DialogAction; - .line 3 - sget-object v3, Lcom/vk/im/ui/components/common/DialogAction;->AUDIO_BTN_AUDIO_CALL:Lcom/vk/im/ui/components/common/DialogAction; + # aput-object v3, v0, v2 - aput-object v3, v0, v2 + # sget-object v2, Lcom/vk/im/ui/components/common/DialogAction;->VIDEO_BTN_AUDIO_CALL:Lcom/vk/im/ui/components/common/DialogAction; - sget-object v2, Lcom/vk/im/ui/components/common/DialogAction;->AUDIO_BTN_VIDEO_CALL:Lcom/vk/im/ui/components/common/DialogAction; + # aput-object v2, v0, v1 - aput-object v2, v0, v1 + # invoke-static {v0}, Lkotlin/collections/l;->c([Ljava/lang/Object;)Ljava/util/List; - invoke-static {v0}, Lkotlin/collections/l;->c([Ljava/lang/Object;)Ljava/util/List; + # move-result-object v0 - move-result-object v0 + # goto :goto_0 - .line 4 - :goto_0 - iget-object v1, p0, Lcom/vk/im/ui/components/viewcontrollers/dialog_header/info/DialogHeaderInfoVc;->E:Lcom/vk/im/ui/components/viewcontrollers/dialog_actions_delegate/popup/DialogActionsVcByPopup; + # :cond_0 + # new-array v0, v3, [Lcom/vk/im/ui/components/common/DialogAction; - new-instance v2, Lcom/vk/im/ui/components/viewcontrollers/dialog_header/info/DialogHeaderInfoVc$onMenuCallClick$1; + # .line 3 + # sget-object v3, Lcom/vk/im/ui/components/common/DialogAction;->AUDIO_BTN_AUDIO_CALL:Lcom/vk/im/ui/components/common/DialogAction; - invoke-direct {v2, p0}, Lcom/vk/im/ui/components/viewcontrollers/dialog_header/info/DialogHeaderInfoVc$onMenuCallClick$1;->(Lcom/vk/im/ui/components/viewcontrollers/dialog_header/info/DialogHeaderInfoVc;)V + # aput-object v3, v0, v2 - invoke-virtual {v1, v0, v2}, Lcom/vk/im/ui/components/viewcontrollers/dialog_actions_delegate/popup/DialogActionsVcByPopup;->a(Ljava/util/List;Lkotlin/jvm/b/Functions2;)V + # sget-object v2, Lcom/vk/im/ui/components/common/DialogAction;->AUDIO_BTN_VIDEO_CALL:Lcom/vk/im/ui/components/common/DialogAction; - goto :goto_1 + # aput-object v2, v0, v1 - .line 5 - :cond_1 - iget-object v0, p0, Lcom/vk/im/ui/components/viewcontrollers/dialog_header/info/DialogHeaderInfoVc;->b:Lcom/vk/im/ui/components/viewcontrollers/dialog_header/info/DialogHeaderInfoVcCallback; + # invoke-static {v0}, Lkotlin/collections/l;->c([Ljava/lang/Object;)Ljava/util/List; - if-eqz v0, :cond_2 + # move-result-object v0 - const/4 v3, 0x0 + # .line 4 + # :goto_0 + # iget-object v1, p0, Lcom/vk/im/ui/components/viewcontrollers/dialog_header/info/DialogHeaderInfoVc;->E:Lcom/vk/im/ui/components/viewcontrollers/dialog_actions_delegate/popup/DialogActionsVcByPopup; - invoke-static {v0, v2, v1, v3}, Lcom/vk/im/ui/components/viewcontrollers/dialog_header/info/DialogHeaderInfoVcCallback$a;->a(Lcom/vk/im/ui/components/viewcontrollers/dialog_header/info/DialogHeaderInfoVcCallback;ZILjava/lang/Object;)V + # new-instance v2, Lcom/vk/im/ui/components/viewcontrollers/dialog_header/info/DialogHeaderInfoVc$onMenuCallClick$1; - :cond_2 - :goto_1 + # invoke-direct {v2, p0}, Lcom/vk/im/ui/components/viewcontrollers/dialog_header/info/DialogHeaderInfoVc$onMenuCallClick$1;->(Lcom/vk/im/ui/components/viewcontrollers/dialog_header/info/DialogHeaderInfoVc;)V + + # invoke-virtual {v1, v0, v2}, Lcom/vk/im/ui/components/viewcontrollers/dialog_actions_delegate/popup/DialogActionsVcByPopup;->a(Ljava/util/List;Lkotlin/jvm/b/Functions2;)V + + # goto :goto_1 + + # .line 5 + # :cond_1 + # iget-object v0, p0, Lcom/vk/im/ui/components/viewcontrollers/dialog_header/info/DialogHeaderInfoVc;->b:Lcom/vk/im/ui/components/viewcontrollers/dialog_header/info/DialogHeaderInfoVcCallback; + + # if-eqz v0, :cond_2 + + # const/4 v3, 0x0 + + # invoke-static {v0, v2, v1, v3}, Lcom/vk/im/ui/components/viewcontrollers/dialog_header/info/DialogHeaderInfoVcCallback$a;->a(Lcom/vk/im/ui/components/viewcontrollers/dialog_header/info/DialogHeaderInfoVcCallback;ZILjava/lang/Object;)V + + # :cond_2 + # :goto_1 return-void .end method