todo-app/lib/sync/sync_state_factory_web.dart
Krzysztof kuhy Rudnicki a0d37c4df8
Some checks are pending
dependency freshness / dependencies on newest stable (push) Waiting to run
file-length / file length <= 250 lines (push) Waiting to run
md-naming / markdown naming convention (push) Waiting to run
release-apk / release (APK) (push) Waiting to run
Re-point paths for the ~ reorganisation (home-tidy)
Also bumps Flutter 3.47.3, flutter_secure_storage 11.1.0, idb_shim 2.9.9,
sqflite_common_ffi 2.4.3, very_good_analysis 11 and mcp 2.2.0 so the
freshness gate lets this through; v11 adds async_return_with_no_await, so
the 18 flagged return sites now await explicitly.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AwtowrowDXx6ccmWVPkCaF
2026-09-11 19:49:03 +02:00

28 lines
924 B
Dart

import 'package:crdt_sync/crdt_sync.dart';
import 'package:shared_preferences/shared_preferences.dart';
/// Key holding the revision cache in `SharedPreferences`.
const kSyncStateKey = 'sync.state';
/// Opens the revision cache on web (the Chrome-wrapper desktop build).
///
/// `SharedPreferences` rather than IndexedDB: the payload is two short hashes
/// per peer, so a key-value entry is the whole requirement, and the note
/// log already owns the IndexedDB store.
Future<SyncStateStore> openSyncStateStore() async => PersistedSyncStateStore(
_PrefsPersistence(await SharedPreferences.getInstance()),
);
class _PrefsPersistence implements LogPersistence {
_PrefsPersistence(this._prefs);
final SharedPreferences _prefs;
@override
Future<String?> read() async => _prefs.getString(kSyncStateKey);
@override
Future<void> write(String text) async =>
await _prefs.setString(kSyncStateKey, text);
}