Files
ichni_Official/Assets/Scripts/Online/Logic/LoginCacheManager.cs
2026-06-15 14:54:30 +08:00

93 lines
2.6 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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] 已清除登录缓存");
}
}
}
}