refactor: proper layer archtecture

This commit is contained in:
idubnori
2025-12-10 01:06:07 +09:00
parent f874c12bee
commit 7473b959dc
12 changed files with 392 additions and 176 deletions

View File

@@ -56,7 +56,8 @@ class ViewerBottomBar extends ConsumerWidget {
source: ActionSource.viewer,
);
final quickActionTypes = ActionButtonBuilder.buildQuickActionTypes(
final quickActionService = ref.watch(quickActionServiceProvider);
final quickActionTypes = quickActionService.buildQuickActionTypes(
buttonContext,
quickActionOrder: quickActionOrder,
);
@@ -76,9 +77,10 @@ class ViewerBottomBar extends ConsumerWidget {
});
}
final actions = quickActionTypes
.map((type) => GestureDetector(onLongPress: openConfigurator, child: type.buildButton(buttonContext)))
.toList(growable: false);
final actions = ActionButtonBuilder.buildQuickActions(
buttonContext,
quickActionTypes: quickActionTypes,
).map((widget) => GestureDetector(onLongPress: openConfigurator, child: widget)).toList(growable: false);
return IgnorePointer(
ignoring: opacity < 255,

View File

@@ -3,6 +3,7 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_reorderable_grid_view/widgets/reorderable_builder.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/domain/services/quick_action.service.dart';
import 'package:immich_mobile/providers/infrastructure/viewer_quick_action_order.provider.dart';
import 'package:immich_mobile/utils/action_button.utils.dart';
import 'package:immich_mobile/utils/action_button_visuals.dart';
@@ -41,7 +42,7 @@ class _QuickActionConfiguratorState extends ConsumerState<QuickActionConfigurato
void _resetToDefault() {
setState(() {
_order = List<ActionButtonType>.from(ActionButtonBuilder.defaultQuickActionOrder);
_order = List<ActionButtonType>.from(QuickActionService.defaultQuickActionOrder);
_hasLocalChanges = true;
});
}
@@ -49,9 +50,7 @@ class _QuickActionConfiguratorState extends ConsumerState<QuickActionConfigurato
void _cancel() => Navigator.of(context).pop();
Future<void> _save() async {
final normalized = ActionButtonBuilder.normalizeQuickActionOrder(_order);
await ref.read(viewerQuickActionOrderProvider.notifier).setOrder(normalized);
await ref.read(viewerQuickActionOrderProvider.notifier).setOrder(_order);
_hasLocalChanges = false;
if (mounted) {
Navigator.of(context).pop();
@@ -69,8 +68,8 @@ class _QuickActionConfiguratorState extends ConsumerState<QuickActionConfigurato
if (!_hasLocalChanges && !listEquals(_order, currentOrder)) {
_order = List<ActionButtonType>.from(currentOrder);
}
final normalizedSelection = ActionButtonBuilder.normalizeQuickActionOrder(_order);
final hasChanges = !listEquals(currentOrder, normalizedSelection);
final hasChanges = !listEquals(currentOrder, _order);
return SafeArea(
child: Padding(
@@ -91,7 +90,7 @@ class _QuickActionConfiguratorState extends ConsumerState<QuickActionConfigurato
const SizedBox(height: 8),
Text(
'quick_actions_settings_description'.tr(
namedArgs: {'count': ActionButtonBuilder.defaultQuickActionLimit.toString()},
namedArgs: {'count': QuickActionService.defaultQuickActionLimit.toString()},
),
style: theme.textTheme.bodyMedium,
textAlign: TextAlign.center,