import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:onsolgo/core/constants.dart'; class AchievementManager { static Future unlock(String uid, String achId) async { final ref = FirebaseFirestore.instance.collection('users').doc(uid).collection('achievements').doc(achId); final doc = await ref.get(); if (!doc.exists) { await ref.set({'unlockedAt': FieldValue.serverTimestamp()}); } } static Future incrementStat(String uid, String field, {int amount = 1}) async { final userRef = FirebaseFirestore.instance.collection('users').doc(uid); await userRef.update({field: FieldValue.increment(amount)}); final snap = await userRef.get(); final d = snap.data() as Map; // Threshold Checks if (field == 'pagesRead') { int p = safeInt(d['pagesRead']); if (p >= 10) unlock(uid, "page_turner_1"); if (p >= 50) unlock(uid, "page_turner_2"); if (p >= 200) unlock(uid, "page_turner_3"); } if (field == 'chaptersRead') { int c = safeInt(d['chaptersRead']); if (c >= 1) unlock(uid, "chapter_complete_1"); if (c >= 10) unlock(uid, "chapter_complete_2"); if (c >= 50) unlock(uid, "chapter_complete_3"); } } }