todo-app/lib/data/repository_factory_web.dart
Krzysztof kuhy Rudnicki 0798f7b1d0 Attach images to notes, stored on dufs and kept offline
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-25 14:11:15 +02:00

31 lines
1.1 KiB
Dart

import 'package:idb_shim/idb_browser.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:todo/data/desktop_backup_client.dart';
import 'package:todo/data/note_repository.dart';
import 'package:todo/data/web_log_persistence.dart';
import 'package:todo/sync/desktop_wrapper.dart';
import 'package:uuid/uuid.dart';
/// Opens the note store in a browser (the desktop app).
///
/// There is no legacy sqlite database in a browser profile, so the migration
/// path is simply absent here rather than skipped at runtime.
Future<NoteRepository> openRepository() async {
final database = await WebLogPersistence.openDatabase(idbFactoryBrowser);
final persistence = WebLogPersistence(
database: database,
backup: DesktopBackupClient(baseUrl: servingWrapperOrigin()),
);
final prefs = await SharedPreferences.getInstance();
var nodeId = prefs.getString(NoteRepository.kNodeId) ?? '';
if (nodeId.isEmpty) {
nodeId = const Uuid().v4();
await prefs.setString(NoteRepository.kNodeId, nodeId);
}
return await NoteRepository.openWith(
persistence: persistence,
nodeId: nodeId,
);
}