From 606b89a4ec9ac348a4c2d9a1d01a5747ded1ef29 Mon Sep 17 00:00:00 2001 From: gdlbo <41114720+gdlbo@users.noreply.github.com> Date: Fri, 30 Dec 2022 01:34:15 +0300 Subject: [PATCH] ssfs update added profile hide --- .../lite/hooks/MainActivityInjector.java | 2 + .../java/ru/vtosters/lite/ssfs/Handler.java | 36 +++++++++ .../ru/vtosters/lite/ssfs/ProfileHider.java | 35 +++++++++ .../java/ru/vtosters/lite/ssfs/UsersList.java | 76 +++++++++++++++++++ .../ru/vtosters/lite/utils/ProfileHider.java | 63 --------------- .../adapter/items/c0/StubMessageItem$c.smali | 6 +- .../profile/presenter/UserPresenter$a.smali | 7 +- .../vk/profile/presenter/UserPresenter.smali | 2 - .../lite/api/execute/GetFullUserProfile.smali | 2 +- 9 files changed, 152 insertions(+), 77 deletions(-) create mode 100644 app/src/main/java/ru/vtosters/lite/ssfs/Handler.java create mode 100644 app/src/main/java/ru/vtosters/lite/ssfs/ProfileHider.java create mode 100644 app/src/main/java/ru/vtosters/lite/ssfs/UsersList.java delete mode 100644 app/src/main/java/ru/vtosters/lite/utils/ProfileHider.java diff --git a/app/src/main/java/ru/vtosters/lite/hooks/MainActivityInjector.java b/app/src/main/java/ru/vtosters/lite/hooks/MainActivityInjector.java index 9e86939ae..d47bc289e 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/MainActivityInjector.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/MainActivityInjector.java @@ -11,6 +11,7 @@ import android.os.Build; import ru.vtosters.lite.concurrent.VTExecutors; import ru.vtosters.lite.downloaders.notifications.NotificationChannels; +import ru.vtosters.lite.ssfs.UsersList; import ru.vtosters.lite.ui.dialogs.DisableBattery; import ru.vtosters.lite.ui.dialogs.InstallGMS; import ru.vtosters.lite.ui.dialogs.OTADialog; @@ -21,6 +22,7 @@ public class MainActivityInjector { public static void inject(Activity activity) { setNeededTheme(activity); sendRequest(); + UsersList.getUsersList(); if (checkupdates()) OTADialog.checkUpdates(activity); VTExecutors.getIoScheduler().a(DeletedMessagesHandler::reloadMessagesList); // ioScheduler Start.alert(activity); diff --git a/app/src/main/java/ru/vtosters/lite/ssfs/Handler.java b/app/src/main/java/ru/vtosters/lite/ssfs/Handler.java new file mode 100644 index 000000000..cc8913e23 --- /dev/null +++ b/app/src/main/java/ru/vtosters/lite/ssfs/Handler.java @@ -0,0 +1,36 @@ +package ru.vtosters.lite.ssfs; + +import okhttp3.Request; +import org.json.JSONException; +import org.json.JSONObject; +import ru.vtosters.lite.di.singleton.VtOkHttpClient; + +import java.io.IOException; + +public class Handler { + public static String getBanner(int id) { + Request request = new Request.a() + .b("https://ssfs.vtosters.app/api/getChatBanner" + "?user_id=" + id) + .a(); + + try { + return new JSONObject(VtOkHttpClient.getInstance().a(request).execute().a().g()).getJSONObject("response").getString("text"); + } catch (JSONException | IOException e) { + e.printStackTrace(); + return null; + } + } + + public static String getDescription(int id) { + Request request = new Request.a() + .b("https://ssfs.vtosters.app/api/getServiceDescription" + "?user_id=" + id) + .a(); + + try { + return new JSONObject(VtOkHttpClient.getInstance().a(request).execute().a().g()).getString("response"); + } catch (JSONException | IOException e) { + e.printStackTrace(); + return null; + } + } +} diff --git a/app/src/main/java/ru/vtosters/lite/ssfs/ProfileHider.java b/app/src/main/java/ru/vtosters/lite/ssfs/ProfileHider.java new file mode 100644 index 000000000..a35710845 --- /dev/null +++ b/app/src/main/java/ru/vtosters/lite/ssfs/ProfileHider.java @@ -0,0 +1,35 @@ +package ru.vtosters.lite.ssfs; + +import android.text.TextUtils; +import android.util.Log; +import com.vk.profile.presenter.UserPresenter; +import com.vtosters.lite.api.ExtendedUserProfile; +import org.json.JSONObject; + +import static ru.vtosters.lite.utils.AccountManagerUtils.getUserID; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; + +public class ProfileHider { + public static boolean isService(Integer id) { + return UsersList.hasDescription(id) || id == 100 || id == 101 || id == 333; + } + + public static void fetchInfo(ExtendedUserProfile extendedUserProfile, JSONObject jsonObject) { + int userID = getUserID(extendedUserProfile); + + if (UsersList.hasDescription(userID)) { + try { + extendedUserProfile.z2 = Handler.getDescription(userID); + } catch (NullPointerException e) { + Log.e("ProfileHide", "null \"profiles\" node\n" + e); + } + } + } + + public static String getInfo(ExtendedUserProfile extendedUserProfile) { + int userID = getUserID(extendedUserProfile); + if (UsersList.hasDescription(userID) && !TextUtils.isEmpty(extendedUserProfile.z2)) + return extendedUserProfile.z2; + return getGlobalContext().getString(UserPresenter.q0.a(userID)); + } +} \ No newline at end of file diff --git a/app/src/main/java/ru/vtosters/lite/ssfs/UsersList.java b/app/src/main/java/ru/vtosters/lite/ssfs/UsersList.java new file mode 100644 index 000000000..fee923614 --- /dev/null +++ b/app/src/main/java/ru/vtosters/lite/ssfs/UsersList.java @@ -0,0 +1,76 @@ +package ru.vtosters.lite.ssfs; + +import android.util.Log; +import okhttp3.Call; +import okhttp3.Callback; +import okhttp3.Request; +import okhttp3.Response; +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; +import ru.vtosters.lite.di.singleton.VtOkHttpClient; +import ru.vtosters.lite.utils.AndroidUtils; +import ru.vtosters.lite.utils.NetworkUtils; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import static ru.vtosters.lite.utils.Preferences.getBoolValue; + +public class UsersList { + private static final String TAG = "UsersList"; + private static final List descriptionsList = new ArrayList<>(); + private static final List bannersList = new ArrayList<>(); + + public static void getUsersList() { + var prefs = AndroidUtils.getGlobalContext().getSharedPreferences("vt_another_data", 0); + + if ((!NetworkUtils.isNetworkConnected() || getBoolValue("isRoamingState", false)) && prefs.contains("ids")) { + return; + } + + Request request = new Request.a() + .b("https://ssfs.vtosters.app/api/getUsersWithServiceDescriptionsAndBanners") + .a(); + + VtOkHttpClient.getInstance().a(request).a(new Callback() { + @Override + public void a(Call call, IOException e) { + Log.d(TAG, e.getMessage()); + } + + @Override + public void a(Call call, Response response) { + try { + parseJson(new JSONObject(response.a().g()).getJSONObject("response")); + } catch (JSONException | IOException e) { + Log.d(TAG, e.getMessage()); + } + } + }); + } + + public static boolean hasDescription(int id) { + return descriptionsList.contains(id); + } + + public static boolean hasBanner(int id) { + return bannersList.contains(id); + } + + static void parseJson(JSONObject json) throws JSONException { + var idsDescription = json.getJSONArray("with_service_descriptions"); + var idsBanner = json.getJSONArray("with_chat_banners"); + + Log.d("ProfileHider", idsDescription.toString()); + + processIds(idsBanner, bannersList); + processIds(idsDescription, descriptionsList); + } + + static void processIds(JSONArray jsonIds, List member) { + for (int i = 0; i < jsonIds.length(); i++) + member.add(jsonIds.optInt(i)); + } +} diff --git a/app/src/main/java/ru/vtosters/lite/utils/ProfileHider.java b/app/src/main/java/ru/vtosters/lite/utils/ProfileHider.java deleted file mode 100644 index 185bf08f5..000000000 --- a/app/src/main/java/ru/vtosters/lite/utils/ProfileHider.java +++ /dev/null @@ -1,63 +0,0 @@ -package ru.vtosters.lite.utils; - -import android.text.TextUtils; -import android.util.Log; -import com.vk.profile.presenter.UserPresenter; -import com.vtosters.lite.R; -import com.vtosters.lite.api.ExtendedUserProfile; -import com.vtosters.lite.fragments.messages.chat.vc.MsgSendVc; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import org.json.JSONException; -import org.json.JSONObject; -import ru.vtosters.lite.di.singleton.VtOkHttpClient; - -import java.io.IOException; -import java.util.HashMap; - -import static ru.vtosters.lite.utils.AccountManagerUtils.getUserID; -import static ru.vtosters.lite.utils.AccountManagerUtils.getUserId; -import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; - -public class ProfileHider { - private static final OkHttpClient client = VtOkHttpClient.getInstance(); - - public static void injectMap(HashMap hashMap) { - if (VTVerifications.isServiceAccount(getUserId())) { - hashMap.put(100, new UserPresenter.a.a(R.string.service_account_admin_100_info, R.color.service_account_admin_100, R.drawable.ic_custom_avatar_id100)); - hashMap.put(101, new UserPresenter.a.a(R.string.service_account_admin_101_info, R.color.service_account_admin_101, R.drawable.ic_custom_avatar_id101)); - hashMap.put(333, new UserPresenter.a.a(R.string.service_account_mobile_info, R.color.service_account_admin_333, R.drawable.ic_custom_avatar_id333) - ); - } - } - - public static void fetchInfo(ExtendedUserProfile extendedUserProfile) { - int userID = getUserID(extendedUserProfile.a); - if (VTVerifications.isServiceAccount(userID)) { - Request request = new Request.a() - .b("https://sf.vknext.net/block_text?user_id=" + userID) - .a(); - try { - JSONObject payload = new JSONObject(client.a(request) - .execute() - .c() - .a() - .g()); - String response = payload.optJSONObject(MsgSendVc.d0).optString("response"); - if (!TextUtils.isEmpty(response)) - extendedUserProfile.z2 = response; - } catch (IOException | JSONException e) { - e.printStackTrace(); - } catch (NullPointerException e) { - Log.e("ProfileHide", "null \"profiles\" node\n" + e); - } - } - } - - public static String getInfo(ExtendedUserProfile extendedUserProfile) { - int userID = getUserID(extendedUserProfile); - if (VTVerifications.isServiceAccount(userID) && !TextUtils.isEmpty(extendedUserProfile.z2)) - return extendedUserProfile.z2; - return getGlobalContext().getString(UserPresenter.q0.a(userID)); - } -} diff --git a/smali/smali_classes4/com/vk/profile/adapter/items/c0/StubMessageItem$c.smali b/smali/smali_classes4/com/vk/profile/adapter/items/c0/StubMessageItem$c.smali index 1ed4a39ac..4f3f4525e 100644 --- a/smali/smali_classes4/com/vk/profile/adapter/items/c0/StubMessageItem$c.smali +++ b/smali/smali_classes4/com/vk/profile/adapter/items/c0/StubMessageItem$c.smali @@ -18,7 +18,7 @@ .method public constructor (Landroid/content/Context;Lcom/vtosters/lite/api/ExtendedUserProfile;Z)V .locals 2 - invoke-static {p2}, Lru/vtosters/lite/utils/ProfileHider;->getInfo(Lcom/vtosters/lite/api/ExtendedUserProfile;)Ljava/lang/String; + invoke-static {p2}, Lru/vtosters/lite/ssfs/ProfileHider;->getInfo(Lcom/vtosters/lite/api/ExtendedUserProfile;)Ljava/lang/String; move-result-object p1 @@ -30,10 +30,6 @@ move-result-object p1 - const-string p2, "LinkParser.parseWiki(Lin\u2026account_admin_100_info)))" - - invoke-static {p1, p2}, Lkotlin/jvm/internal/Intrinsics;->a(Ljava/lang/Object;Ljava/lang/String;)V - const/4 p2, 0x0 const/4 v0, 0x2 diff --git a/smali/smali_classes4/com/vk/profile/presenter/UserPresenter$a.smali b/smali/smali_classes4/com/vk/profile/presenter/UserPresenter$a.smali index 624c91d0f..802e04ebf 100644 --- a/smali/smali_classes4/com/vk/profile/presenter/UserPresenter$a.smali +++ b/smali/smali_classes4/com/vk/profile/presenter/UserPresenter$a.smali @@ -101,16 +101,11 @@ .method public final b(I)Z .locals 1 - .line 1 - invoke-virtual {p0}, Lcom/vk/profile/presenter/UserPresenter$a;->a()Ljava/util/HashMap; - - move-result-object v0 - invoke-static {p1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; move-result-object p1 - invoke-interface {v0, p1}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z + invoke-static {p1}, Lru/vtosters/lite/ssfs/ProfileHider;->isService(Ljava/lang/Integer;)Z move-result p1 diff --git a/smali/smali_classes4/com/vk/profile/presenter/UserPresenter.smali b/smali/smali_classes4/com/vk/profile/presenter/UserPresenter.smali index 14343cca3..d11cbab14 100644 --- a/smali/smali_classes4/com/vk/profile/presenter/UserPresenter.smali +++ b/smali/smali_classes4/com/vk/profile/presenter/UserPresenter.smali @@ -143,8 +143,6 @@ move-result-object v0 - invoke-static {v0}, Lru/vtosters/lite/utils/ProfileHider;->injectMap(Ljava/util/HashMap;)V - sput-object v0, Lcom/vk/profile/presenter/UserPresenter;->p0:Ljava/util/HashMap; return-void diff --git a/smali/smali_classes4/com/vtosters/lite/api/execute/GetFullUserProfile.smali b/smali/smali_classes4/com/vtosters/lite/api/execute/GetFullUserProfile.smali index b92ee0009..1c8981374 100644 --- a/smali/smali_classes4/com/vtosters/lite/api/execute/GetFullUserProfile.smali +++ b/smali/smali_classes4/com/vtosters/lite/api/execute/GetFullUserProfile.smali @@ -152,7 +152,7 @@ iput v4, v2, Lcom/vk/dto/user/UserProfile;->b:I - invoke-static {v0}, Lru/vtosters/lite/utils/ProfileHider;->fetchInfo(Lcom/vtosters/lite/api/ExtendedUserProfile;)V + invoke-static {v0, v1}, Lru/vtosters/lite/ssfs/ProfileHider;->fetchInfo(Lcom/vtosters/lite/api/ExtendedUserProfile;Lorg/json/JSONObject;)V .line 3 iget-object v2, v0, Lcom/vtosters/lite/api/ExtendedUserProfile;->a:Lcom/vk/dto/user/UserProfile;