import { PlayerData, GameResult } from '../core/types'; // Storage keys const STORAGE_KEYS = { PLAYER_DATA: '@games_library_player_data', GAME_RESULTS: '@games_library_game_results', SETTINGS: '@games_library_settings', CACHE: '@games_library_cache' }; // Simple in-memory storage fallback class MemoryStorage { private data = new Map(); async getItem(key: string): Promise { return this.data.get(key) || null; } async setItem(key: string, value: string): Promise { this.data.set(key, value); } async removeItem(key: string): Promise { this.data.delete(key); } async clear(): Promise { this.data.clear(); } async getAllKeys(): Promise { return Array.from(this.data.keys()); } } // Storage interface export interface StorageService { getPlayerData(): Promise; savePlayerData(data: PlayerData): Promise; getGameResults(): Promise; saveGameResult(result: GameResult): Promise; getSettings(): Promise>; saveSettings(settings: Record): Promise; clearAll(): Promise; } // Default storage implementation export class DefaultStorageService implements StorageService { private storage: MemoryStorage; constructor() { this.storage = new MemoryStorage(); } async getPlayerData(): Promise { try { const data = await this.storage.getItem(STORAGE_KEYS.PLAYER_DATA); return data ? JSON.parse(data) : null; } catch (error) { console.warn('Failed to get player data:', error); return null; } } async savePlayerData(data: PlayerData): Promise { try { await this.storage.setItem(STORAGE_KEYS.PLAYER_DATA, JSON.stringify(data)); } catch (error) { console.warn('Failed to save player data:', error); } } async getGameResults(): Promise { try { const data = await this.storage.getItem(STORAGE_KEYS.GAME_RESULTS); return data ? JSON.parse(data) : []; } catch (error) { console.warn('Failed to get game results:', error); return []; } } async saveGameResult(result: GameResult): Promise { try { const results = await this.getGameResults(); results.push(result); await this.storage.setItem(STORAGE_KEYS.GAME_RESULTS, JSON.stringify(results)); } catch (error) { console.warn('Failed to save game result:', error); } } async getSettings(): Promise> { try { const data = await this.storage.getItem(STORAGE_KEYS.SETTINGS); return data ? JSON.parse(data) : {}; } catch (error) { console.warn('Failed to get settings:', error); return {}; } } async saveSettings(settings: Record): Promise { try { await this.storage.setItem(STORAGE_KEYS.SETTINGS, JSON.stringify(settings)); } catch (error) { console.warn('Failed to save settings:', error); } } async clearAll(): Promise { try { await this.storage.clear(); } catch (error) { console.warn('Failed to clear storage:', error); } } } // Export default instance export const storageService = new DefaultStorageService();