You've already forked CC-Framework.BriskGameServer
Add package sync workflow
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using UnityEngine;
|
||||
|
||||
public sealed class BriskPlayerPrefsTokenStore : IBriskTokenStore
|
||||
{
|
||||
private const string KeyPrefix = "BriskSdk.Session.";
|
||||
|
||||
public Task SaveAsync(BriskStoredSession session)
|
||||
{
|
||||
if (session == null)
|
||||
{
|
||||
ClearStoredKeys();
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
SetString("access_token", session.AccessToken);
|
||||
SetString("expires_at", session.ExpiresAt.HasValue ? session.ExpiresAt.Value.ToUnixTimeSeconds().ToString() : null);
|
||||
SetString("player_id", session.PlayerId);
|
||||
SetString("project_account_id", session.ProjectAccountId);
|
||||
SetString("login_provider", session.LoginProvider);
|
||||
SetString("login_user_id", session.LoginUserId);
|
||||
PlayerPrefs.Save();
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
public Task<BriskStoredSession> LoadAsync()
|
||||
{
|
||||
var accessToken = GetString("access_token");
|
||||
if (string.IsNullOrWhiteSpace(accessToken))
|
||||
{
|
||||
return Task.FromResult<BriskStoredSession>(null);
|
||||
}
|
||||
|
||||
DateTimeOffset? expiresAt = null;
|
||||
var expiresAtText = GetString("expires_at");
|
||||
if (long.TryParse(expiresAtText, out var unixSeconds))
|
||||
{
|
||||
expiresAt = DateTimeOffset.FromUnixTimeSeconds(unixSeconds);
|
||||
}
|
||||
|
||||
var session = new BriskStoredSession
|
||||
{
|
||||
AccessToken = accessToken,
|
||||
ExpiresAt = expiresAt,
|
||||
PlayerId = GetString("player_id"),
|
||||
ProjectAccountId = GetString("project_account_id"),
|
||||
LoginProvider = GetString("login_provider"),
|
||||
LoginUserId = GetString("login_user_id")
|
||||
};
|
||||
return Task.FromResult(session);
|
||||
}
|
||||
|
||||
public Task ClearAsync()
|
||||
{
|
||||
ClearStoredKeys();
|
||||
PlayerPrefs.Save();
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
private static void ClearStoredKeys()
|
||||
{
|
||||
PlayerPrefs.DeleteKey(KeyPrefix + "access_token");
|
||||
PlayerPrefs.DeleteKey(KeyPrefix + "expires_at");
|
||||
PlayerPrefs.DeleteKey(KeyPrefix + "player_id");
|
||||
PlayerPrefs.DeleteKey(KeyPrefix + "project_account_id");
|
||||
PlayerPrefs.DeleteKey(KeyPrefix + "login_provider");
|
||||
PlayerPrefs.DeleteKey(KeyPrefix + "login_user_id");
|
||||
}
|
||||
|
||||
private static string GetString(string name)
|
||||
{
|
||||
var key = KeyPrefix + name;
|
||||
return PlayerPrefs.HasKey(key) ? PlayerPrefs.GetString(key) : null;
|
||||
}
|
||||
|
||||
private static void SetString(string name, string value)
|
||||
{
|
||||
var key = KeyPrefix + name;
|
||||
if (string.IsNullOrEmpty(value))
|
||||
{
|
||||
PlayerPrefs.DeleteKey(key);
|
||||
return;
|
||||
}
|
||||
|
||||
PlayerPrefs.SetString(key, value);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user