import 'package:shared_preferences/shared_preferences.dart'; /// Resultado do quiz, sempre com os dois indicadores juntos — nunca faz /// sentido guardar/ler um sem o outro. class QuizResultData { const QuizResultData({ required this.signs, required this.signsMax, required this.factors, required this.factorsMax, }); final int signs; final int signsMax; final int factors; final int factorsMax; } class QuizPrefs { static const String _kSeenQuizKey = 'seen_oral_quiz_v1'; static const String _kSignsKey = 'last_oral_quiz_signs_v2'; static const String _kSignsMaxKey = 'last_oral_quiz_signs_max_v2'; static const String _kFactorsKey = 'last_oral_quiz_factors_v2'; static const String _kFactorsMaxKey = 'last_oral_quiz_factors_max_v2'; static String _scopeKey(String base, String? scopeId) { final id = (scopeId ?? '').trim(); if (id.isEmpty) return base; return '${base}_$id'; } static Future hasSeenQuiz() async { final prefs = await SharedPreferences.getInstance(); return prefs.getBool(_kSeenQuizKey) ?? false; } static Future markQuizSeen() async { final prefs = await SharedPreferences.getInstance(); await prefs.setBool(_kSeenQuizKey, true); } static Future saveLastResult(QuizResultData result) async { await saveLastResultForScope(scopeId: null, result: result); } static Future saveLastResultForUser({ required String userId, required QuizResultData result, }) async { await saveLastResultForScope(scopeId: userId, result: result); } static Future saveLastResultForScope({ required String? scopeId, required QuizResultData result, }) async { final prefs = await SharedPreferences.getInstance(); await prefs.setInt(_scopeKey(_kSignsKey, scopeId), result.signs); await prefs.setInt(_scopeKey(_kSignsMaxKey, scopeId), result.signsMax); await prefs.setInt(_scopeKey(_kFactorsKey, scopeId), result.factors); await prefs.setInt( _scopeKey(_kFactorsMaxKey, scopeId), result.factorsMax, ); } static Future getLastResult() => getLastResultForScope(null); static Future getLastResultForUser(String userId) => getLastResultForScope(userId); static Future getLastResultForScope( String? scopeId, ) async { final prefs = await SharedPreferences.getInstance(); final signs = prefs.getInt(_scopeKey(_kSignsKey, scopeId)); final signsMax = prefs.getInt(_scopeKey(_kSignsMaxKey, scopeId)); final factors = prefs.getInt(_scopeKey(_kFactorsKey, scopeId)); final factorsMax = prefs.getInt(_scopeKey(_kFactorsMaxKey, scopeId)); if (signs == null || signsMax == null || factors == null || factorsMax == null) { return null; } return QuizResultData( signs: signs, signsMax: signsMax, factors: factors, factorsMax: factorsMax, ); } }