Implementation of domain verification

This commit is contained in:
gdlbo
2023-01-16 17:42:03 +03:00
parent 7de0d9a269
commit acf3a77fe7
2 changed files with 47 additions and 4 deletions
@@ -9,8 +9,6 @@ import com.aefyr.tsg.g2.TelegramStickersPack;
import com.aefyr.tsg.g2.TelegramStickersService;
import com.vk.about.AboutAppFragment;
import com.vk.balance.BalanceFragment;
import com.vk.core.fragments.FragmentImpl;
import com.vk.navigation.Navigator;
import com.vk.notifications.settings.NotificationsSettingsFragment;
import com.vk.webapp.fragments.PrivacyFragment;
import com.vtosters.lite.MainActivity;
@@ -28,8 +26,6 @@ import ru.vtosters.lite.concurrent.VTExecutors;
import ru.vtosters.lite.hooks.ui.SystemThemeChangerHook;
import ru.vtosters.lite.ssfs.Utils;
import ru.vtosters.lite.ui.PreferenceFragmentUtils;
import ru.vtosters.lite.ui.components.DockBarEditorManager;
import ru.vtosters.lite.ui.components.SuperAppEditorManager;
import ru.vtosters.lite.ui.dialogs.OTADialog;
import ru.vtosters.lite.ui.fragments.tgstickers.StickersFragment;
import ru.vtosters.lite.utils.*;
@@ -126,6 +122,8 @@ public class VTSettings extends MaterialPreferenceToolbarFragment implements Tel
this.addPreferencesFromResource(R.xml.empty);
// AndroidUtils.checkLinksVerified(this.requireActivity());
var accountSwitcher = PreferenceFragmentUtils.addPreference(
getPreferenceScreen(),
"account_switcher",
@@ -2,12 +2,19 @@ package ru.vtosters.lite.utils;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.content.pm.verify.domain.DomainVerificationManager;
import android.content.pm.verify.domain.DomainVerificationUserState;
import android.content.res.Resources;
import android.net.Uri;
import android.os.Build;
import android.preference.PreferenceManager;
import android.provider.Settings;
import android.util.Log;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.StringRes;
@@ -18,9 +25,12 @@ import com.vk.core.util.ToastUtils;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Locale;
import java.util.Map;
import java.util.Objects;
import com.vtosters.lite.fragments.SettingsListFragment;
import com.vtosters.lite.general.fragments.WebViewFragment;
import ru.vtosters.lite.R;
import ru.vtosters.lite.hooks.DateHook;
public class AndroidUtils {
@@ -140,6 +150,41 @@ public class AndroidUtils {
new WebViewFragment.g(url).l().m().h().j().a(activity);
}
public static void checkLinksVerified(Activity activity) {
if (Build.VERSION.SDK_INT < 31) return;
DomainVerificationManager manager = activity.getSystemService(DomainVerificationManager.class);
DomainVerificationUserState userState;
try {
userState = manager.getDomainVerificationUserState(getPackageName());
} catch (PackageManager.NameNotFoundException ignore) {
return;
}
boolean hasUnverified = false;
Map<String, Integer> hostToStateMap = userState.getHostToStateMap();
if (hostToStateMap.containsKey("vk.com")) {
Integer stateValue = hostToStateMap.get("vk.com");
hasUnverified = stateValue != null && stateValue != DomainVerificationUserState.DOMAIN_STATE_VERIFIED && stateValue != DomainVerificationUserState.DOMAIN_STATE_SELECTED;
}
if (hasUnverified) {
// TODO Make cute dialog or snackbar for this
try {
Intent intent = new Intent(Settings.ACTION_APP_OPEN_BY_DEFAULT_SETTINGS, Uri.parse("package:" + getPackageName()));
activity.startActivity(intent);
} catch (Throwable t1) {
try {
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS, Uri.parse("package:" + getPackageName()));
activity.startActivity(intent);
} catch (Throwable ignored) {}
}
}
}
public static String MD5(String s) {
try {
var md = MessageDigest.getInstance("MD5");