From b4e34e34b1ab246346c0258ab76864ba99688d36 Mon Sep 17 00:00:00 2001 From: gdlbo <41114720+gdlbo@users.noreply.github.com> Date: Sat, 30 Jul 2022 01:13:52 +0300 Subject: [PATCH] dialog pin/unpin system (api) --- .../ru/vtosters/lite/dnr/DNRInjector.java | 58 ++++++++++++++----- 1 file changed, 44 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/ru/vtosters/lite/dnr/DNRInjector.java b/app/src/main/java/ru/vtosters/lite/dnr/DNRInjector.java index 4e99f6dae..11d8029ca 100644 --- a/app/src/main/java/ru/vtosters/lite/dnr/DNRInjector.java +++ b/app/src/main/java/ru/vtosters/lite/dnr/DNRInjector.java @@ -4,27 +4,31 @@ import static ru.vtosters.lite.dnr.DNRModule.hookDNR; import static ru.vtosters.lite.dnr.DNRModule.hookDNT; import static ru.vtosters.lite.dnr.DNRModule.isDnrEnabledFor; import static ru.vtosters.lite.dnr.DNRModule.isDntEnabledFor; +import static ru.vtosters.lite.utils.AccountManagerUtils.getUserToken; import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier; +import static ru.vtosters.lite.utils.AndroidUtils.sendToast; +import android.os.StrictMode; import android.util.Log; +import com.vk.core.network.Network; import com.vk.im.engine.models.dialogs.Dialog; import com.vk.im.ui.components.common.DialogAction; +import java.io.IOException; import java.util.LinkedHashMap; import java.util.List; +import okhttp3.Headers; +import okhttp3.OkHttpClient; +import okhttp3.Request; + public class DNRInjector { public static void inject(Dialog dialog, List list) { int peerId = dialog.getId(); - int startmsgId = dialog.F1(); - if (startmsgId > 1023) { - list.add(DialogAction.valueOf("pinmsg")); - Log.e("DNRInjector", String.valueOf(startmsgId)); - } else { - list.add(DialogAction.valueOf("unpinmsg")); - } + list.add(DialogAction.valueOf("pinmsg")); + list.add(DialogAction.valueOf("unpinmsg")); if (isDnrEnabledFor(peerId)) { list.add(DialogAction.valueOf("DNR_OFF")); @@ -51,19 +55,13 @@ public class DNRInjector { return hashMap; } - public static boolean onClick(Dialog dialog, DialogAction action) { + public static boolean onClick(Dialog dialog, DialogAction action){ var id = dialog.getId(); if (action == DialogAction.valueOf("MARK_AS_READ")) { DNRModule.hookRead(dialog); } - if (action == DialogAction.valueOf("pinmsg")) { - Log.d("DNR", "pinmsg"); - } else if (action == DialogAction.valueOf("unpinmsg")) { - Log.d("DNR", "unpinmsg"); - } - if (action == DialogAction.valueOf("DNR_ON")) { setDnr(dialog, true); return true; @@ -80,9 +78,41 @@ public class DNRInjector { return true; } + if (action == DialogAction.valueOf("pinmsg")) { + pinnedMsg(id, true); + return true; + } else if (action == DialogAction.valueOf("unpinmsg")) { + pinnedMsg(id, false); + return true; + } + return false; } + public static void pinnedMsg(int dialogid, boolean needToBePinned){ + Thread thread = new Thread(() -> { + try { + var request = new Request.a() + .b("https://api.vk.com/method/" + (needToBePinned ? "messages.pinConversation" : "messages.unpinConversation") + "?peer_id=" + dialogid + "&access_token=" + getUserToken() + "&v=5.119") + .a(Headers.a("User-Agent", Network.l.c().a(), "Content-Type", "application/x-www-form-urlencoded; charset=utf-8")) + .a(); + + try { + var response = new OkHttpClient().a(request).execute().a().g(); + Log.d("Pins", response); + } catch (IOException e) { + Log.e("Pins", "Error while pinning message", e); + } + } catch (Exception e) { + e.printStackTrace(); + } + }); + + thread.start(); + + sendToast("Диалог успешно " + (needToBePinned ? "закреплен" : "откреплен")); + } + public static void setDnr(Dialog dialog, boolean value) { hookDNR(dialog.getId()); }