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