Test validation lancement lavage
This commit is contained in:
@@ -8,6 +8,8 @@ import '../../../core/router/app_router.dart';
|
||||
import '../../../core/theme/app_colors.dart';
|
||||
import '../../../core/theme/machine_status_theme.dart';
|
||||
import '../../../core/widgets/empty_state.dart';
|
||||
import '../../../core/widgets/wash_start_confirmation_dialog.dart';
|
||||
import '../../wallet/data/wallet_repository.dart';
|
||||
import '../../wash/data/wash_repository.dart';
|
||||
import '../data/machine_repository.dart';
|
||||
import '../domain/machine_detail.dart';
|
||||
@@ -25,11 +27,46 @@ class MachineActionScreen extends ConsumerStatefulWidget {
|
||||
class _MachineActionScreenState extends ConsumerState<MachineActionScreen> {
|
||||
bool _isStarting = false;
|
||||
|
||||
Future<void> _confirmAndStartWash(MachineDetail detail) async {
|
||||
final currency = NumberFormat.currency(locale: 'fr_FR', symbol: '€');
|
||||
|
||||
double currentBalance;
|
||||
try {
|
||||
final wallet = await ref.read(walletProvider.future);
|
||||
currentBalance = wallet.currentBalance;
|
||||
} catch (_) {
|
||||
if (mounted) {
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
const SnackBar(
|
||||
content: Text('Impossible de charger votre solde'),
|
||||
backgroundColor: AppColors.error,
|
||||
),
|
||||
);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (!mounted) return;
|
||||
|
||||
final confirmed = await WashStartConfirmationDialog.show(
|
||||
context,
|
||||
machineName: detail.machine.name,
|
||||
currentBalance: currentBalance,
|
||||
price: detail.price,
|
||||
currency: currency,
|
||||
);
|
||||
|
||||
if (confirmed && mounted) {
|
||||
await _startWash(detail);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _startWash(MachineDetail detail) async {
|
||||
setState(() => _isStarting = true);
|
||||
try {
|
||||
await ref.read(washRepositoryProvider).startWashFromMachine(detail.machine.uuid);
|
||||
ref.invalidate(washesProvider);
|
||||
ref.invalidate(walletProvider);
|
||||
ref.invalidate(machineDetailProvider(widget.machineUuid));
|
||||
if (mounted) {
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
@@ -74,7 +111,7 @@ class _MachineActionScreenState extends ConsumerState<MachineActionScreen> {
|
||||
detail: detail,
|
||||
currency: currency,
|
||||
isStarting: _isStarting,
|
||||
onStart: () => _startWash(detail),
|
||||
onStart: () => _confirmAndStartWash(detail),
|
||||
onReserve: () => context.push(AppRoutes.machineBooking(widget.machineUuid)),
|
||||
),
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user