[U] Sync n3

This commit is contained in:
2025-01-09 17:25:30 +08:00
parent 81b61f9d15
commit 0332758335
10 changed files with 98 additions and 176 deletions

View File

@@ -14,35 +14,14 @@ namespace tysdk
{
public class AccountInfo
{
#if UNITY_ANDROID
private static Dictionary<string, EAccoutType> accoutTypeMap = new Dictionary<string, EAccoutType>(){
{EAccoutType.hwGoogle.ToString(), EAccoutType.hwGoogle},
{EAccoutType.hwFacebook.ToString(), EAccoutType.hwFacebook},
{"tyGuest", EAccoutType.hwGuest}
};
#else
private static Dictionary<string, EAccoutType> accoutTypeMap = new Dictionary<string, EAccoutType>(){
{"google", EAccoutType.hwGoogle},
{"fb", EAccoutType.hwFacebook},
{"tyGuest", EAccoutType.hwGuest},
{"ios13", EAccoutType.Apple}
};
#endif
public int userId;
public string token;
public string jwtToken;
public string strUserId => userId.ToString();
public string channelstr {
set{
channel = accoutTypeMap[value];
linkedAccout.Add(channel);
}
}
public HashSet<EAccoutType> linkedAccout = new HashSet<EAccoutType>();
public EAccoutType channel {get; private set;}
public EAccoutType channel {get; set;}
public string userName;
public string avatar;
private const string KEY_ACCOUNT_INFO = "KEY_ACCOUNT_INFO";
@@ -54,23 +33,30 @@ namespace tysdk
}
}
public void AddLinkedAccount(string channel)
private static Dictionary<string, EAccoutType> accoutTypeMap = new Dictionary<string, EAccoutType>(){
{"google", EAccoutType.hwGoogle},
{"fb", EAccoutType.hwFacebook},
{"tyGuest", EAccoutType.hwGuest},
{"ios13", EAccoutType.Apple}
};
private static EAccoutType ConvertAccoutType(string accountType)
{
if(accoutTypeMap.TryGetValue(channel, out var accoutType))
if (accoutTypeMap.ContainsKey(accountType))
{
if (!linkedAccout.Contains(accoutType))
{
linkedAccout.Add(accoutType);
}
return accoutTypeMap[accountType];
}
return (EAccoutType)Enum.Parse(typeof(EAccoutType), accountType);
}
public void Save()
{
JObject jInfo = new JObject();
jInfo["channel"] = accoutTypeMap.First(x => x.Value == channel).Key;
jInfo["channel"] = channel.ToString();
jInfo["token"] = token;
jInfo["userId"] = userId;
jInfo["userName"] = userName;
jInfo["avatar"] = avatar;
jInfo["jwtToken"] = jwtToken;
jInfo["linkedAccout"] = string.Join(",", linkedAccout.Select(x => x.ToString()));
PlayerPrefs.SetString(KEY_ACCOUNT_INFO, jInfo.ToString());
@@ -86,14 +72,26 @@ namespace tysdk
if (PlayerPrefs.HasKey(KEY_ACCOUNT_INFO))
{
var jInfo = JObject.Parse(PlayerPrefs.GetString(KEY_ACCOUNT_INFO));
return new AccountInfo()
var accountInfo = new AccountInfo()
{
userId = (int)jInfo["userId"],
token = (string)jInfo["token"],
channelstr = (string)jInfo["channel"],
channel = ConvertAccoutType((string)jInfo["channel"]),
jwtToken = (string)jInfo["jwtToken"],
linkedAccout = jInfo["linkedAccout"].ToString().Split(',').Select(x => (EAccoutType)Enum.Parse(typeof(EAccoutType), x)).ToHashSet()
linkedAccout = jInfo["linkedAccout"].ToString().Split(',').Select(x => ConvertAccoutType(x)).ToHashSet()
};
if(jInfo.TryGetValue("userName", out var userName))
{
accountInfo.userName = (string) userName;
}
if(jInfo.TryGetValue("avatar", out var avatar))
{
accountInfo.avatar = (string)avatar;
}
return accountInfo;
}
else
{
@@ -184,10 +182,15 @@ namespace tysdk
UnityBridgeFunc.UnityLogin(accoutType);
return await taskSource.Task;
var loginInfo = await taskSource.Task;
if(loginInfo.isSuccess)
{
_accountInfo.channel = accoutType;
_accountInfo.AddLinkedAccount(accoutType);
_accountInfo.Save();
}
return loginInfo;
#endif
}
public async Task<LoginInfo> LoginByToken()
@@ -203,7 +206,12 @@ namespace tysdk
UnityBridgeFunc.UnityLoginByTokenFun(accoutInfo.token);
return await taskSource.Task;
var loginInfo = await taskSource.Task;
if(loginInfo.isSuccess)
{
_accountInfo.Save();
}
return loginInfo;
}
public void LoginResult(string json)
@@ -221,7 +229,6 @@ namespace tysdk
var userId = (int)loginData["userId"];
var token = (string)loginData["token"];
var jwtToken = (string)loginData["jwttoken"];
var channelstr = (string)loginData["loginChannelTypeC"];
var savedInfo = AccountInfo.GetSavedAccoutInfo();
if(savedInfo == null || savedInfo.userId != userId)
@@ -229,19 +236,16 @@ namespace tysdk
_accountInfo = new AccountInfo()
{
userId = (int)loginData["userId"],
userName = (string)loginData["userName"],
avatar = (string)loginData["purl"],
token = (string)loginData["token"],
jwtToken = (string)loginData["jwttoken"],
channelstr = (string)loginData["loginChannelTypeC"]
};
_accountInfo.Save();
}
else
{
savedInfo.token = token;
savedInfo.jwtToken = jwtToken;
savedInfo.AddLinkedAccount(channelstr);
savedInfo.Save();
_accountInfo = savedInfo;
}
@@ -290,12 +294,13 @@ namespace tysdk
var result = await taskSource.Task;
if (result.isSuccess)
{
var savedInfo = AccountInfo.GetSavedAccoutInfo();
if(savedInfo != null)
if(_accountInfo == null)
_accountInfo = AccountInfo.GetSavedAccoutInfo();
if(_accountInfo != null)
{
savedInfo.AddLinkedAccount(accoutType);
savedInfo.Save();
_accountInfo = savedInfo;
_accountInfo.AddLinkedAccount(accoutType);
_accountInfo.Save();
}
}
@@ -332,6 +337,17 @@ namespace tysdk
UnityBridgeFunc.LinkAccount(accoutType);
var result = await taskSource.Task;
if (result.isSuccess)
{
if(_accountInfo == null)
_accountInfo = AccountInfo.GetSavedAccoutInfo();
if(_accountInfo != null)
{
_accountInfo.AddLinkedAccount(accoutType);
_accountInfo.Save();
}
}
return result.isSuccess;
}