syncLocalEntriesWithFirestore method

Future<void> syncLocalEntriesWithFirestore(
  1. UserCredential userCredential
)

Syncs the latest 10 remote entries to local storage on first login.

This is useful when the local DB is empty (e.g., after a fresh install).

Implementation

Future<void> syncLocalEntriesWithFirestore(
  UserCredential userCredential,
) async {
  final userId = userCredential.user!.uid;

  final localEntries = await LocalDiaryDatabase().getAllEntries(
    userId: userId,
  );
  if (localEntries.isEmpty) {
    final snapshot =
        await FirebaseFirestore.instance
            .collection("Users")
            .doc(userId)
            .collection("diary_entries")
            .orderBy("date", descending: true)
            .limit(10)
            .get();

    for (final doc in snapshot.docs) {
      final data = doc.data();
      final entry = DiaryEntry.fromMap(doc.id, data);

      await _localDb.insertEntry(entry, userId, data['location'] ?? '');
    }
  }
}