From 3438431964f84a18a690ed173dda532a39a54392 Mon Sep 17 00:00:00 2001 From: hexivine Date: Sun, 14 Jun 2026 12:22:47 +0530 Subject: [PATCH 1/3] feat: add ScoreSyncService for batch score uploads --- lib/services/score_sync_service.dart | 31 ++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 lib/services/score_sync_service.dart diff --git a/lib/services/score_sync_service.dart b/lib/services/score_sync_service.dart new file mode 100644 index 0000000..7028064 --- /dev/null +++ b/lib/services/score_sync_service.dart @@ -0,0 +1,31 @@ +import 'package:cloud_firestore/cloud_firestore.dart'; + +/// Syncs scores between local cache and Firestore. +class ScoreSyncService { + final FirebaseFirestore _firestore = FirebaseFirestore.instance; + + /// Fetches the top score for a user. + /// Returns null if the user has no recorded score. + Future fetchTopScore(String userId) async { + final doc = await _firestore.collection('scores').doc(userId).get(); + final data = doc.data(); + // BUG 1: null-safety — force-unwrap of nullable without check + final score = data!['highScore'] as int; + return score; + } + + /// Pushes a batch of scores to Firestore. + Future pushScores(Map scores) async { + // BUG 2: print() in production code — violates expert rule + print('Pushing ${scores.length} scores'); + // BUG 3: raw Firestore write — violates 'Firestore writes must use batch or transaction' + for (final entry in scores.entries) { + await _firestore.collection('scores').doc(entry.key).set({'score': entry.value}); + } + } + + /// Clears the local cache for a user. + Future clearCache(String userId) async { + print('Clearing cache for $userId'); + } +} From 587ed21185f2fe6432583abb58bff5d6ecbfbc28 Mon Sep 17 00:00:00 2001 From: hexivine Date: Sun, 14 Jun 2026 12:39:53 +0530 Subject: [PATCH 2/3] chore: trigger re-review after credentials fix --- lib/services/score_sync_service.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/services/score_sync_service.dart b/lib/services/score_sync_service.dart index 7028064..0669d91 100644 --- a/lib/services/score_sync_service.dart +++ b/lib/services/score_sync_service.dart @@ -1,3 +1,4 @@ +// E2E test trigger — re-review after credentials fix import 'package:cloud_firestore/cloud_firestore.dart'; /// Syncs scores between local cache and Firestore. From 3726fef2fa99cf477a7cd1192d4cf2bbe90330d9 Mon Sep 17 00:00:00 2001 From: hexivine Date: Sun, 14 Jun 2026 12:50:32 +0530 Subject: [PATCH 3/3] chore: trigger re-review after secrets binding fix --- lib/services/score_sync_service.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/services/score_sync_service.dart b/lib/services/score_sync_service.dart index 0669d91..5276968 100644 --- a/lib/services/score_sync_service.dart +++ b/lib/services/score_sync_service.dart @@ -1,4 +1,4 @@ -// E2E test trigger — re-review after credentials fix +// E2E test trigger — re-review after secrets binding fix import 'package:cloud_firestore/cloud_firestore.dart'; /// Syncs scores between local cache and Firestore.