From dbdf9fca76ea39befdcd6e97c39cb5ed3a4f7139 Mon Sep 17 00:00:00 2001 From: mohammad Date: Mon, 1 Jul 2024 13:58:24 +0300 Subject: [PATCH] fix this 17. The door lock/create password the screen, save button will create a pass as much the user click on the save button and Fixed the time being displayed incorrectly in DoorDialog --- .../devices/bloc/smart_door_bloc/smart_door_bloc.dart | 9 ++++++--- .../widgets/smart_door/create_temporary_password.dart | 6 ++++-- .../devices/view/widgets/smart_door/door_dialog.dart | 4 ++-- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/lib/features/devices/bloc/smart_door_bloc/smart_door_bloc.dart b/lib/features/devices/bloc/smart_door_bloc/smart_door_bloc.dart index 37c3bf4..d1a310e 100644 --- a/lib/features/devices/bloc/smart_door_bloc/smart_door_bloc.dart +++ b/lib/features/devices/bloc/smart_door_bloc/smart_door_bloc.dart @@ -18,6 +18,7 @@ class SmartDoorBloc extends Bloc { final String deviceId; late SmartDoorModel deviceStatus; static String pageType = ''; + bool isSavingPassword = false; SmartDoorBloc({required this.deviceId}) : super(InitialState()) { on(_fetchSmartDoorStatus); @@ -198,8 +199,9 @@ class SmartDoorBloc extends Bloc { } Future savePassword(SavePasswordEvent event, Emitter emit) async { - if (_validateInputs()) return; + if (_validateInputs() || isSavingPassword) return; try { + isSavingPassword = true; emit(LoadingSaveState()); var res = await DevicesAPI.createPassword( pageType: pageType, @@ -220,9 +222,10 @@ class SmartDoorBloc extends Bloc { Navigator.of(event.context).pop(true); CustomSnackBar.displaySnackBar('Save Successfully'); emit(SaveState()); - } catch (_) {} + } catch (_) {}finally { + isSavingPassword = false; + } } - Future deletePassword(DeletePasswordEvent event, Emitter emit) async { try { emit(LoadingInitialState()); diff --git a/lib/features/devices/view/widgets/smart_door/create_temporary_password.dart b/lib/features/devices/view/widgets/smart_door/create_temporary_password.dart index 1d7e110..117f983 100644 --- a/lib/features/devices/view/widgets/smart_door/create_temporary_password.dart +++ b/lib/features/devices/view/widgets/smart_door/create_temporary_password.dart @@ -47,14 +47,16 @@ class CreateTemporaryPassword extends StatelessWidget { onPressed: () { Navigator.of(context).pop('UpdatePage'); }, - icon: const Icon(Icons.arrow_back)), + icon: const Icon(Icons.arrow_back) + ), actions: [ TextButton( onPressed: () { BlocProvider.of(context) .add(SavePasswordEvent(context: context)); }, - child: const Text('Save')) + child: const Text('Save') + ) ], ), child: state is LoadingInitialState diff --git a/lib/features/devices/view/widgets/smart_door/door_dialog.dart b/lib/features/devices/view/widgets/smart_door/door_dialog.dart index 867cbd1..c194693 100644 --- a/lib/features/devices/view/widgets/smart_door/door_dialog.dart +++ b/lib/features/devices/view/widgets/smart_door/door_dialog.dart @@ -32,12 +32,12 @@ class DoorDialogState extends State { @override Widget build(BuildContext context) { final DateTime effectiveDateTime = - DateTime.fromMillisecondsSinceEpoch(widget.value.effectiveTime * 1000, isUtc: true); + DateTime.fromMillisecondsSinceEpoch(widget.value.effectiveTime * 1000, isUtc: false); String formattedDateEffectiveTime = DateFormat('yyyy-MM-dd').format(effectiveDateTime); String formattedTimeEffectiveTime = DateFormat('HH:mm:ss').format(effectiveDateTime); final DateTime expiredDateTime = - DateTime.fromMillisecondsSinceEpoch(widget.value.invalidTime * 1000, isUtc: true); + DateTime.fromMillisecondsSinceEpoch(widget.value.invalidTime * 1000, isUtc: false); String formattedDateExpiredDateTime = DateFormat('yyyy-MM-dd').format(expiredDateTime); String formattedTimeExpiredDateTime = DateFormat('HH:mm:ss').format(expiredDateTime);