Files
notepad/lib/services/sync_service.dart
T

47 lines
1.2 KiB
Dart

import '../models/note.dart';
import '../repositories/local_note_repository.dart';
import '../repositories/remote_note_repository.dart';
class SyncService {
final LocalNoteRepository _local;
final RemoteNoteRepository _remote;
SyncService({
required LocalNoteRepository local,
required RemoteNoteRepository remote,
}) : _local = local,
_remote = remote;
/// Push all local notes to the server, overwriting whatever is there.
Future<void> pushAll() async {
final notes = await _local.getAll();
for (final note in notes) {
try {
await _remote.update(note);
} catch (_) {
// Note doesn't exist on server yet — create it
await _remote.save(note);
}
}
}
/// Pull all notes from the server, overwriting local storage.
Future<void> pullAll() async {
final notes = await _remote.getAll();
for (final note in notes) {
await _local.save(note);
}
}
/// Sync a single note by id — push local version to server.
Future<void> syncNote(String id) async {
final note = await _local.getById(id);
if (note == null) return;
try {
await _remote.update(note);
} catch (_) {
await _remote.save(note);
}
}
}