mirror of
https://github.com/cyberbread-ru/notepad.git
synced 2026-07-14 12:51:01 +03:00
47 lines
1.2 KiB
Dart
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);
|
|
}
|
|
}
|
|
}
|