93 lines
2.6 KiB
C#
93 lines
2.6 KiB
C#
|
|
using IchniOnline.Online.Models;
|
|||
|
|
using TapSDK.Login;
|
|||
|
|
using UnityEngine;
|
|||
|
|
|
|||
|
|
namespace IchniOnline.Online.Logic
|
|||
|
|
{
|
|||
|
|
/// <summary>
|
|||
|
|
/// 登录缓存的读写管理器。所有方法均为静态,可在任意位置调用。
|
|||
|
|
/// 使用 ES3 进行本地持久化。
|
|||
|
|
/// </summary>
|
|||
|
|
public static class LoginCacheManager
|
|||
|
|
{
|
|||
|
|
private const string ES3_KEY = "Ichni_LoginCache";
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 本地是否存在有效的登录缓存
|
|||
|
|
/// </summary>
|
|||
|
|
public static bool HasCachedLogin
|
|||
|
|
{
|
|||
|
|
get
|
|||
|
|
{
|
|||
|
|
if (!ES3.KeyExists(ES3_KEY)) return false;
|
|||
|
|
var data = ES3.Load<LoginCacheData>(ES3_KEY);
|
|||
|
|
return data != null && data.IsValid;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 获取缓存的登录数据,无缓存返回 null
|
|||
|
|
/// </summary>
|
|||
|
|
public static LoginCacheData CachedData
|
|||
|
|
{
|
|||
|
|
get
|
|||
|
|
{
|
|||
|
|
if (!ES3.KeyExists(ES3_KEY)) return null;
|
|||
|
|
return ES3.Load<LoginCacheData>(ES3_KEY);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 将 TapTap 登录结果写入本地缓存
|
|||
|
|
/// </summary>
|
|||
|
|
public static void SaveFromTapTapAccount(TapTapAccount account)
|
|||
|
|
{
|
|||
|
|
if (account == null)
|
|||
|
|
{
|
|||
|
|
Debug.LogWarning("[LoginCacheManager] account 为 null,跳过缓存");
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
var data = new LoginCacheData(
|
|||
|
|
account.openId,
|
|||
|
|
account.unionId,
|
|||
|
|
account.name,
|
|||
|
|
account.avatar,
|
|||
|
|
account.email
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
ES3.Save(ES3_KEY, data);
|
|||
|
|
Debug.Log($"[LoginCacheManager] 已缓存登录数据,openId={data.openId}");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 写入模拟数据(供编辑器工具使用)
|
|||
|
|
/// </summary>
|
|||
|
|
public static void SaveMockData()
|
|||
|
|
{
|
|||
|
|
var data = new LoginCacheData(
|
|||
|
|
"mock_openid_001",
|
|||
|
|
"mock_unionid_001",
|
|||
|
|
"MockUser",
|
|||
|
|
"",
|
|||
|
|
"mock@test.com"
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
ES3.Save(ES3_KEY, data);
|
|||
|
|
Debug.Log($"[LoginCacheManager] 已写入模拟缓存数据");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 清除本地登录缓存
|
|||
|
|
/// </summary>
|
|||
|
|
public static void Clear()
|
|||
|
|
{
|
|||
|
|
if (ES3.KeyExists(ES3_KEY))
|
|||
|
|
{
|
|||
|
|
ES3.DeleteKey(ES3_KEY);
|
|||
|
|
Debug.Log("[LoginCacheManager] 已清除登录缓存");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|