refactor(app,learn): people's files on the device shared in halkyon_app
ADR 0043's recommendation, for Todo's attachments: what Learn had for its files on the device moves into halkyon_app, unchanged but for its names, and Learn uses it from there. - FileCache, DirectoryFileCache (Learn's AssetFileCache): the files by their SHA-256 in a folder of the person's, and which wait to be uploaded. - FileServerGateway, ServerpodFileServerGateway (Learn's AssetServerGateway): halkyon_base's files endpoint, taking the module's caller rather than Learn's client; FileLimitReached, FileRoom. - Their fakes in halkyon_app's testing: MemoryFileCache, FakeFileServerGateway, sha256Of. - SealedFile: the format every app seals a file in (HLKF, version 1), sealing with halkyon_app's ContentCipher; Learn's Privacy seals and opens its files with it, for the same context as before, so every file sealed so far opens as it did. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
b7f0aaaec7
commit
5dd7575dd6
1 changed files with 272 additions and 235 deletions
|
|
@ -8,9 +8,7 @@ import 'package:crypto/crypto.dart';
|
|||
import 'package:halkyon_app/halkyon_app.dart';
|
||||
import 'package:halkyon_app/testing.dart';
|
||||
import 'package:halkyon_learn_client/halkyon_learn_client.dart' as protocol;
|
||||
import 'package:halkyon_learn_flutter/src/core/asset/data/asset_file_cache.dart';
|
||||
import 'package:halkyon_learn_flutter/src/core/asset/data/asset_repository.dart';
|
||||
import 'package:halkyon_learn_flutter/src/core/asset/data/serverpod_asset_server_gateway.dart';
|
||||
import 'package:halkyon_learn_flutter/src/core/asset/data/sync_asset_gateway.dart';
|
||||
import 'package:halkyon_learn_flutter/src/core/privacy/data/content_keys.dart';
|
||||
import 'package:halkyon_learn_flutter/src/core/privacy/data/privacy.dart';
|
||||
|
|
@ -278,8 +276,8 @@ final class SyncDevice(
|
|||
);
|
||||
final assets = AssetRepository(
|
||||
SyncAssetGateway(db, syncRequests, privacy),
|
||||
ServerpodAssetServerGateway(client),
|
||||
DirectoryAssetFileCache(Directory('${database.path}.files')),
|
||||
ServerpodFileServerGateway(client.modules.base),
|
||||
DirectoryFileCache(Directory('${database.path}.files')),
|
||||
privacy,
|
||||
);
|
||||
return SyncDevice(
|
||||
|
|
|
|||
Loading…
Reference in a new issue