Repository navigation
Expand file tree
/
Copy pathfixtures.dart
More file actions
66 lines (62 loc) · 1.94 KB
/
Copy pathfixtures.dart
File metadata and controls
66 lines (62 loc) · 1.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import '../domain/contracts/contracts.dart';
import '../domain/models/models.dart';
import 'fixture_controls.dart';
import 'fixture_library.dart';
import 'fixture_repositories.dart';
import 'fixture_scenarios.dart';
import 'fixture_source.dart';
export 'fixture_controls.dart';
export 'fixture_library.dart';
export 'fixture_repositories.dart';
export 'fixture_scenarios.dart';
export 'fixture_source.dart';
/// Owned by the future dev composition root. Production must not import this.
final class FixtureEnvironment {
FixtureEnvironment({
FixtureScenario scenario = FixtureScenario.shortChapter,
int seed = 20260907,
}) {
source = FixtureNovelSource(
scenario: scenario,
data: FixtureData(seed: seed),
);
novels = FixtureNovelRepository(source);
images = FixtureImageRepository(source);
}
late final FixtureNovelSource source;
late final FixtureNovelRepository novels;
late final FixtureImageRepository images;
final library = FixtureLibraryRepository();
final settings = FixtureSettingsStore();
bool _closed = false;
Future<void> close() async {
if (_closed) return;
_closed = true;
images.close();
await Future.wait([novels.close(), library.close()]);
}
}
final class FixtureSettingsStore implements SettingsStore {
ReaderSettings _settings = ReaderSettings();
final controls = FixtureControls();
@override
Future<Result<ReaderSettings>> load({
required CancellationToken cancellation,
}) async {
final failure = await controls.before(Operation.settingsRead, cancellation);
return failure == null ? Success(_settings) : Failure(failure);
}
@override
Future<Result<void>> save(
ReaderSettings settings, {
required CancellationToken cancellation,
}) async {
final failure = await controls.before(
Operation.settingsWrite,
cancellation,
);
if (failure != null) return Failure(failure);
_settings = settings;
return const Success(null);
}
}