import 'dart:typed_data'; import 'package:halkyon_learn_flutter/src/core/asset/data/asset_gateway.dart'; /// An [AssetGateway] in memory: ids are `asset-001`, `asset-002`, … in the /// order of creation. class FakeAssetGateway() implements AssetGateway { final _rows = {}; var _next = 1; /// The rows, in the order they were stored. List get rows => [..._rows.values]; /// The rows deleted, in order. final deleted = []; /// Stores [row] as if another device had written it and a sync had /// brought it here. void receiveRemote(AssetRow row) => _rows[row.id] = row; @override Future byId(String id) async => _rows[id]; @override Future bySha256(String sha256) async => _rows.values.where((row) => row.sha256 == sha256).firstOrNull; @override Future insert({ required String sha256, required String mimeType, required int byteSize, required ByteData payload, }) async { final id = 'asset-${'${_next++}'.padLeft(3, '0')}'; _rows[id] = ( id: id, sha256: sha256, mimeType: mimeType, byteSize: byteSize, payload: payload, ); return id; } @override Future delete(String id) async { if (_rows.remove(id) != null) { deleted.add(id); } } }