Skip to content

Commit 7684bd5

Browse files
authored
Merge pull request #594 from yumemi-inc/improve/GH-542/modeling-md-implementation
refactor: docs/MODELING.mdの設計方針に合わせてドメインモデルを更新
2 parents abe0229 + 76c5349 commit 7684bd5

25 files changed

Lines changed: 254 additions & 886 deletions

apps/app/lib/composition_root/use_cases/check_force_update_use_case.dart

Lines changed: 0 additions & 14 deletions
This file was deleted.

apps/app/lib/composition_root/use_cases/check_maintenance_mode_use_case.dart

Lines changed: 0 additions & 14 deletions
This file was deleted.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import 'package:flutter_app/composition_root/repositories/operational_settings_repository.dart';
2+
import 'package:flutter_riverpod/flutter_riverpod.dart';
3+
import 'package:internal_application/operational_settings/get_force_update_policy_use_case.dart';
4+
import 'package:riverpod_annotation/riverpod_annotation.dart';
5+
6+
part 'get_force_update_policy_use_case.g.dart';
7+
8+
@riverpod
9+
GetForceUpdatePolicyUseCase getForceUpdatePolicyUseCase(Ref ref) {
10+
final repository = ref.watch(operationalSettingsRepositoryProvider);
11+
return GetForceUpdatePolicyUseCase(
12+
operationalSettingsRepository: repository,
13+
);
14+
}

apps/app/lib/composition_root/use_cases/check_maintenance_mode_use_case.g.dart renamed to apps/app/lib/composition_root/use_cases/get_force_update_policy_use_case.g.dart

Lines changed: 12 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import 'package:flutter_app/composition_root/repositories/operational_settings_repository.dart';
2+
import 'package:flutter_riverpod/flutter_riverpod.dart';
3+
import 'package:internal_application/operational_settings/get_maintenance_policy_use_case.dart';
4+
import 'package:riverpod_annotation/riverpod_annotation.dart';
5+
6+
part 'get_maintenance_policy_use_case.g.dart';
7+
8+
@riverpod
9+
GetMaintenancePolicyUseCase getMaintenancePolicyUseCase(Ref ref) {
10+
final repository = ref.watch(operationalSettingsRepositoryProvider);
11+
return GetMaintenancePolicyUseCase(
12+
operationalSettingsRepository: repository,
13+
);
14+
}

apps/app/lib/composition_root/use_cases/check_force_update_use_case.g.dart renamed to apps/app/lib/composition_root/use_cases/get_maintenance_policy_use_case.g.dart

Lines changed: 12 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

apps/app/lib/main.dart

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,15 @@ import 'package:flutter/foundation.dart';
44
import 'package:flutter/material.dart';
55
import 'package:flutter/services.dart';
66
import 'package:flutter_app/app_initializer.dart';
7-
import 'package:flutter_app/presentation/providers/force_update_provider.dart';
7+
import 'package:flutter_app/presentation/providers/force_update_policy_notifier_provider.dart';
88
import 'package:flutter_app/presentation/providers/theme_setting_provider.dart';
99
import 'package:flutter_app/router/router.dart';
1010
import 'package:flutter_localizations/flutter_localizations.dart';
1111
import 'package:flutter_riverpod/flutter_riverpod.dart';
1212
import 'package:internal_debug/ui.dart';
1313
import 'package:internal_design_theme/themes.dart';
1414
import 'package:internal_design_ui/i18n.dart';
15+
import 'package:internal_domain_model/operational_settings/operational_settings.dart';
1516
import 'package:internal_domain_model/theme_setting/theme_setting.dart';
1617
import 'package:internal_util_ui/snack_bar_manager.dart';
1718
import 'package:talker_flutter/talker_flutter.dart';
@@ -56,11 +57,16 @@ class MainApp extends ConsumerWidget {
5657
final enableAccessibilityTools =
5758
kDebugMode && ref.watch(enableAccessibilityToolsProvider);
5859

59-
ref.listen(forceUpdateProvider, (_, forceUpdateSettingsState) {
60-
final message = switch (forceUpdateSettingsState) {
60+
ref.listen(forceUpdatePolicyNotifierProvider, (
61+
_,
62+
forceUpdatePolicy,
63+
) {
64+
final message = switch (forceUpdatePolicy) {
6165
AsyncError(:final error) => 'Failed to check for updates: $error',
62-
AsyncData(:final value) =>
63-
value.enabled ? 'Force Update is required.' : null,
66+
AsyncData(:final value) => switch (value) {
67+
ForceUpdateEnabled() => 'Force Update is required.',
68+
ForceUpdateDisabled() => null,
69+
},
6470
_ => null,
6571
};
6672

@@ -69,7 +75,7 @@ class MainApp extends ConsumerWidget {
6975
}
7076

7177
SnackBarManager.showSnackBar(message);
72-
ref.read(forceUpdateProvider.notifier).disable();
78+
ref.read(forceUpdatePolicyNotifierProvider.notifier).disable();
7379
});
7480

7581
return MaterialApp.router(
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import 'dart:async';
2+
3+
import 'package:flutter/foundation.dart';
4+
import 'package:flutter_app/composition_root/use_cases/get_force_update_policy_use_case.dart';
5+
import 'package:internal_domain_model/operational_settings/operational_settings.dart';
6+
import 'package:pub_semver/pub_semver.dart';
7+
import 'package:riverpod_annotation/riverpod_annotation.dart';
8+
9+
part 'force_update_policy_notifier_provider.g.dart';
10+
11+
@Riverpod(keepAlive: true)
12+
class ForceUpdatePolicyNotifier extends _$ForceUpdatePolicyNotifier {
13+
@override
14+
Future<ForceUpdatePolicy> build() {
15+
final useCase = ref.watch(getForceUpdatePolicyUseCaseProvider);
16+
return useCase.call();
17+
}
18+
19+
/// Usage case: When the user can select whether to update or not
20+
void disable() {
21+
unawaited(
22+
update(
23+
(state) => const ForceUpdatePolicy.disabled(),
24+
),
25+
);
26+
}
27+
28+
/// 強制更新を有効にする
29+
///
30+
/// このメソッドはデバッグモードでのみ使用できます。
31+
/// デバッグモードでない場合は、[UnimplementedError] がスローされます。
32+
void debugEnableForceUpdate() {
33+
if (!kDebugMode) {
34+
throw UnimplementedError(
35+
'debugEnableForceUpdate is only available in debug mode',
36+
);
37+
}
38+
39+
unawaited(
40+
update(
41+
(state) => ForceUpdatePolicy.enabled(
42+
minimumVersions: RequiredVersions(
43+
ios: Version.parse('1.0.0'),
44+
android: Version.parse('1.0.0'),
45+
),
46+
),
47+
),
48+
);
49+
}
50+
}

apps/app/lib/presentation/providers/force_update_provider.g.dart renamed to apps/app/lib/presentation/providers/force_update_policy_notifier_provider.g.dart

Lines changed: 14 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

apps/app/lib/presentation/providers/force_update_provider.dart

Lines changed: 0 additions & 61 deletions
This file was deleted.

0 commit comments

Comments
 (0)