-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathmocking_manager.dart
More file actions
48 lines (35 loc) · 1.45 KB
/
mocking_manager.dart
File metadata and controls
48 lines (35 loc) · 1.45 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
import 'package:app/access/mocking/mocking_repository.dart';
/// Service that manages everything related to mocking.
abstract interface class MockingManager {
factory MockingManager(MockingRepository mockingRepository) = _MockingManager;
/// Gets whether mocking is enabled.
bool get isMockingEnabled;
/// Gets whether mocking configuration has been changed via [setIsMockingEnabled].
bool get hasConfigurationBeenChanged;
/// Sets whether mocking should be enabled on next app launch.
Future<void> setIsMockingEnabled(bool isMockingEnabled);
/// Initializes the mocking manager.
Future<void> initialize();
}
/// Implementation of [MockingManager].
/// This class is responsible for managing the mocking configuration.
final class _MockingManager implements MockingManager {
final MockingRepository _mockingRepository;
late bool _initialIsMockingEnabled;
_MockingManager(this._mockingRepository);
@override
bool hasConfigurationBeenChanged = false;
@override
late bool isMockingEnabled;
@override
Future<void> initialize() async {
_initialIsMockingEnabled = await _mockingRepository.isMockingEnabled();
isMockingEnabled = _initialIsMockingEnabled;
}
@override
Future<void> setIsMockingEnabled(bool isMockingEnabled) async {
await _mockingRepository.setMocking(isMockingEnabled);
this.isMockingEnabled = isMockingEnabled;
hasConfigurationBeenChanged = isMockingEnabled != _initialIsMockingEnabled;
}
}