forked from phenom/healer-man
Update Healer Man server
This commit is contained in:
1 parent
d869d6b51c
commit
a64b2cb575
4 files changed
+98
-17
No files matched your search
@@ -429,11 +429,25 @@ export function createOfflineSession(): PlayerSession {
|
||||
return { kind: "offline", ownerId: OFFLINE_OWNER_ID, displayName: "Offline" };
|
||||
}
|
||||
|
||||
export function saveSession(session: PlayerSession, storage: StorageLike | null = browserSessionStorage()): void {
|
||||
storage?.setItem(SESSION_KEY, JSON.stringify(session));
|
||||
export function saveSession(
|
||||
session: PlayerSession,
|
||||
storage: StorageLike | null = browserLocalStorage(),
|
||||
transientStorage: StorageLike | null = browserSessionStorage(),
|
||||
): void {
|
||||
const serialized = JSON.stringify(session);
|
||||
try {
|
||||
if (storage) {
|
||||
storage.setItem(SESSION_KEY, serialized);
|
||||
if (transientStorage !== storage) {
|
||||
try { transientStorage?.removeItem(SESSION_KEY); } catch { /* Storage may be disabled. */ }
|
||||
}
|
||||
return;
|
||||
}
|
||||
} catch { /* Fall back to tab-scoped storage when persistent storage is unavailable. */ }
|
||||
try { transientStorage?.setItem(SESSION_KEY, serialized); } catch { /* Storage may be disabled. */ }
|
||||
}
|
||||
|
||||
export function restoreSession(storage: StorageLike | null = browserSessionStorage()): PlayerSession | null {
|
||||
function readStoredSession(storage: StorageLike | null): PlayerSession | null {
|
||||
if (!storage) return null;
|
||||
try {
|
||||
const session = JSON.parse(storage.getItem(SESSION_KEY) ?? "null") as Partial<PlayerSession> | null;
|
||||
@@ -451,8 +465,26 @@ export function restoreSession(storage: StorageLike | null = browserSessionStora
|
||||
}
|
||||
}
|
||||
|
||||
export function clearSession(storage: StorageLike | null = browserSessionStorage()): void {
|
||||
storage?.removeItem(SESSION_KEY);
|
||||
export function restoreSession(
|
||||
storage: StorageLike | null = browserLocalStorage(),
|
||||
transientStorage: StorageLike | null = browserSessionStorage(),
|
||||
): PlayerSession | null {
|
||||
const persistent = readStoredSession(storage);
|
||||
if (persistent) return persistent;
|
||||
if (transientStorage === storage) return null;
|
||||
const transient = readStoredSession(transientStorage);
|
||||
if (transient) saveSession(transient, storage, transientStorage);
|
||||
return transient;
|
||||
}
|
||||
|
||||
export function clearSession(
|
||||
storage: StorageLike | null = browserLocalStorage(),
|
||||
transientStorage: StorageLike | null = browserSessionStorage(),
|
||||
): void {
|
||||
try { storage?.removeItem(SESSION_KEY); } catch { /* Storage may be disabled. */ }
|
||||
if (transientStorage !== storage) {
|
||||
try { transientStorage?.removeItem(SESSION_KEY); } catch { /* Storage may be disabled. */ }
|
||||
}
|
||||
}
|
||||
|
||||
export function listCharacters(ownerId: string, storage: StorageLike | null = browserLocalStorage()): CharacterProfile[] {
|
||||
|
||||
Reference in new issue
Block a user