using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using TapTap.Common; using TapTap.Login.Internal; using TapTap.Common.Internal.Utils; using System; namespace TapTap.Login { public class TapLogin { public const string TAP_LOGIN_SCOPE_BASIC_INFO = "basic_info"; public const string TAP_LOGIN_SCOPE_PUBLIC_PROFILE = "public_profile"; public const string TAP_LOGIN_SCOPE_USER_FRIENDS = "user_friends"; public const string TAP_LOGIN_SCOPE_EMAIL = "email"; public const string TAP_LOGIN_SCOPE_PHONE = "phone"; public const string TAP_LOGIN_SCOPE_COMPLIANCE = "compliance"; private static HashSet defaultPermissions; public static HashSet DefaultPermissions { get { if (defaultPermissions == null) { defaultPermissions = new HashSet(); } return defaultPermissions; } } private static ITapLoginPlatform platformWrapper; static TapLogin() { platformWrapper = BridgeUtils.CreateBridgeImplementation(typeof(ITapLoginPlatform), "TapTap.Login") as ITapLoginPlatform; } public static void Init(string clientID) { platformWrapper.Init(clientID); TapTapSdk.SDKInitialize(clientID, true); } public static void Init(string clientID, bool isCn, bool roundCorner) { platformWrapper.Init(clientID, isCn, roundCorner); TapTapSdk.SDKInitialize(clientID, isCn); } public static void ChangeConfig(bool roundCorner, bool isPortrait) { platformWrapper.ChangeConfig(roundCorner, isPortrait); } public static Task FetchProfile() { return platformWrapper.FetchProfile(); } public static Task GetProfile() { return platformWrapper.GetProfile(); } public static Task GetAccessToken() { return platformWrapper.GetAccessToken(); } public static Task Login() { var result = platformWrapper.Login(); _ = TriggerTapLogin(result); return result; } public static Task Login(string[] permissions) { var result = platformWrapper.Login(permissions); _ = TriggerTapLogin(result); return result; } public static Task Login(TapLoginPermissionConfig config) { Task result = platformWrapper.Login(config); _ = TriggerTapLogin(result); return result; } public static Task Authorize(string[] permissions = null) { return platformWrapper.Authorize(permissions); } public static void Logout() { platformWrapper.Logout(); EventManager.TriggerEvent(EventConst.OnTapLogout, UnityTDSUser.TAP_AUTH_CHANNEL); } public static Task GetTestQualification() { return platformWrapper.GetTestQualification(); } public static void AppendPermission(string permission) { if (string.IsNullOrWhiteSpace(permission)) { return; } DefaultPermissions.Add(permission); } public static void RemovePermission(string permission) { if (string.IsNullOrWhiteSpace(permission)) { return; } DefaultPermissions.Remove(permission); } private static async Task TriggerTapLogin(Task accessTokenTask) { _ = await accessTokenTask; var profile = await GetProfile(); EventManager.TriggerEvent(EventConst.OnTapLogin, new KeyValuePair(UnityTDSUser.TAP_AUTH_CHANNEL, profile.openid)); } } }