mirror of
https://github.com/kuhyx/todo-app.git
synced 2026-11-11 16:54:05 +01:00
Some checks are pending
Both desktop writers build the directory by string interpolation
(`Directory('$home/todo')`), which the ~ reorganisation's reference
rewriter cannot see. The first export after the move recreated a stray
~/todo and tripped the home-tidy root allowlist.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AwtowrowDXx6ccmWVPkCaF
39 lines
1.5 KiB
Dart
39 lines
1.5 KiB
Dart
// coverage:ignore-file
|
|
// Real-filesystem platform wiring, extracted verbatim from the
|
|
// `coverage:ignore` block it previously lived in inside capture_screen.dart.
|
|
// It resolves paths from the actual HOME/documents directory, so exercising it
|
|
// under test would write outside the sandbox; tests inject an in-memory
|
|
// LocalBackup instead. Verified by running the app.
|
|
import 'dart:io';
|
|
|
|
import 'package:path_provider/path_provider.dart';
|
|
import 'package:todo/data/note_repository.dart';
|
|
import 'package:todo/sync/local_backup.dart';
|
|
|
|
/// Builds the platform [LocalBackup] on a `dart:io` host (Android).
|
|
///
|
|
/// On mobile this lives in the app's documents directory, where Android Auto
|
|
/// Backup can pick it up.
|
|
LocalBackup createLocalBackup(NoteRepository repository) {
|
|
Future<File> backupFile() async {
|
|
if (Platform.isAndroid || Platform.isIOS) {
|
|
final dir = await getApplicationDocumentsDirectory();
|
|
return File('${dir.path}/todo-backlog.md');
|
|
}
|
|
final home = Platform.environment['HOME'] ?? Directory.current.path;
|
|
// See backlog_export_io.dart: canonical path is ~/src/todo.
|
|
final dir = Directory('$home/src/todo')..createSync(recursive: true);
|
|
return File('${dir.path}/BACKLOG.md');
|
|
}
|
|
|
|
return LocalBackup(
|
|
fetch: repository.listNotes,
|
|
reader: () async {
|
|
final file = await backupFile();
|
|
return file.existsSync() ? await file.readAsString() : null;
|
|
},
|
|
writer: (markdown) async =>
|
|
await (await backupFile()).writeAsString(markdown),
|
|
);
|
|
}
|