import 'package:shared_preferences/shared_preferences.dart'; import 'package:uuid/uuid.dart'; class GameInfo { final UuidValue? playerID; final String? passphrase; const GameInfo({ required this.playerID, required this.passphrase, }); factory GameInfo.empty() { return const GameInfo(playerID: null, passphrase: null); } factory GameInfo.fromJson(Map json) { final playerid = UuidValue.fromString(json['playerID']); final passphrase = json['passphrase']; return GameInfo(playerID: playerid, passphrase: passphrase); } Map toJson() { String? pid; if (playerID != null) { pid = playerID.toString(); } return { 'playerID': pid, 'passphrase': passphrase, }; } void store() async { final SharedPreferences prefs = await SharedPreferences.getInstance(); await prefs.setString(passphrase!, playerID.toString()); } static Future get(String phrase) async { final SharedPreferences prefs = await SharedPreferences.getInstance(); var playerID = prefs.getString(phrase); if (playerID == null) return null; return GameInfo( playerID: UuidValue.fromString(playerID!), passphrase: phrase); } } class WebsocketMessageIdentifyPlayer { final String playerID; final String? passphrase; const WebsocketMessageIdentifyPlayer({ required this.playerID, required this.passphrase, }); Map toJson() => {'playerID': playerID, 'passphrase': passphrase}; }