diff --git a/lib/features/app_layout/bloc/home_cubit.dart b/lib/features/app_layout/bloc/home_cubit.dart index f33713f..f61d8e9 100644 --- a/lib/features/app_layout/bloc/home_cubit.dart +++ b/lib/features/app_layout/bloc/home_cubit.dart @@ -10,11 +10,9 @@ import 'package:syncrow_app/features/app_layout/model/space_model.dart'; import 'package:syncrow_app/features/app_layout/view/widgets/app_bar_home_dropdown.dart'; import 'package:syncrow_app/features/auth/model/user_model.dart'; import 'package:syncrow_app/features/dashboard/view/dashboard_view.dart'; -import 'package:syncrow_app/features/devices/bloc/ceiling_bloc/ceiling_sensor_state.dart'; import 'package:syncrow_app/features/devices/bloc/devices_cubit.dart'; import 'package:syncrow_app/features/devices/model/device_model.dart'; import 'package:syncrow_app/features/devices/model/room_model.dart'; -import 'package:syncrow_app/features/devices/model/smart_door_model.dart'; import 'package:syncrow_app/features/devices/model/status_model.dart'; import 'package:syncrow_app/features/devices/view/widgets/curtains/curtain_view.dart'; import 'package:syncrow_app/features/devices/view/widgets/devices_view_body.dart'; diff --git a/lib/features/devices/bloc/three_gang_bloc/three_gang_bloc.dart b/lib/features/devices/bloc/three_gang_bloc/three_gang_bloc.dart index b8550a7..b6a566c 100644 --- a/lib/features/devices/bloc/three_gang_bloc/three_gang_bloc.dart +++ b/lib/features/devices/bloc/three_gang_bloc/three_gang_bloc.dart @@ -261,9 +261,7 @@ class ThreeGangBloc extends Bloc { emit(LoadingNewSate(threeGangModel: deviceStatus)); int seconds = 0; try { - // The CupertinoTimerPicker widget increments by 60 minutes when the hours are increased. - int min = event.duration.inMinutes - event.duration.inHours * 60; - seconds = (event.duration.inHours * 60 * 60) + (min * 60); + seconds = event.duration.inSeconds; final response = await DevicesAPI.controlDevice( DeviceControlModel(deviceId: threeGangId, code: event.deviceCode, value: seconds), threeGangId); diff --git a/lib/features/devices/view/widgets/three_gang/timer_screen.dart b/lib/features/devices/view/widgets/three_gang/timer_screen.dart index 2be189f..a45d632 100644 --- a/lib/features/devices/view/widgets/three_gang/timer_screen.dart +++ b/lib/features/devices/view/widgets/three_gang/timer_screen.dart @@ -54,6 +54,8 @@ class TimerScreen extends StatelessWidget { countNum = state.remainingTime; } else if (state is TimerRunComplete) { countNum = 0; + } else if (state is LoadingNewSate) { + countNum = 0; } return PopScope( canPop: false, diff --git a/lib/features/menu/view/widgets/manage_home/assign_devices.dart b/lib/features/menu/view/widgets/manage_home/assign_devices.dart index 9372129..51b5710 100644 --- a/lib/features/menu/view/widgets/manage_home/assign_devices.dart +++ b/lib/features/menu/view/widgets/manage_home/assign_devices.dart @@ -6,6 +6,7 @@ import 'package:syncrow_app/features/menu/bloc/manage_unit_bloc/manage_unit_even import 'package:syncrow_app/features/menu/bloc/manage_unit_bloc/manage_unit_state.dart'; import 'package:syncrow_app/features/shared_widgets/default_scaffold.dart'; import 'package:syncrow_app/generated/assets.dart'; +import 'package:syncrow_app/utils/helpers/snack_bar.dart'; class AssignDeviceView extends StatelessWidget { final String unitId; @@ -16,77 +17,81 @@ class AssignDeviceView extends StatelessWidget { Widget build(BuildContext context) { return BlocProvider( create: (context) => ManageUnitBloc()..add(FetchDevicesByRoomIdEvent(roomId: roomId)), - child: BlocConsumer( - listener: (context, state) {}, - builder: (context, state) { - return DefaultScaffold( - title: 'Space Setting', - child: state is LoadingState - ? const Center(child: RefreshProgressIndicator()) - : state is FetchDeviceByRoomIdState - ? Container( - width: MediaQuery.sizeOf(context).width, - height: MediaQuery.sizeOf(context).height, - child: GridView.builder( - gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( - crossAxisCount: 2, - crossAxisSpacing: 10.0, - mainAxisSpacing: 10.0, - childAspectRatio: 1.0, + child: BlocConsumer(listener: (context, state) { + if (state is FetchDeviceByRoomIdState) { + if (state.allDevices.isEmpty) { + CustomSnackBar.displaySnackBar('No devices available for this user'); + Navigator.of(context).pop(); + } + } + }, builder: (context, state) { + return DefaultScaffold( + title: 'Space Setting', + child: state is LoadingState + ? const Center(child: RefreshProgressIndicator()) + : state is FetchDeviceByRoomIdState + ? Container( + width: MediaQuery.sizeOf(context).width, + height: MediaQuery.sizeOf(context).height, + child: GridView.builder( + gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 2, + crossAxisSpacing: 10.0, + mainAxisSpacing: 10.0, + childAspectRatio: 1.0, + ), + itemCount: state.allDevices.length, + itemBuilder: (context, index) { + return Container( + width: MediaQuery.sizeOf(context).width, + padding: const EdgeInsets.all(16), + decoration: ShapeDecoration( + color: Colors.white, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(20), + ), ), - itemCount: state.allDevices.length, - itemBuilder: (context, index) { - return Container( - width: MediaQuery.sizeOf(context).width, - padding: const EdgeInsets.all(16), - decoration: ShapeDecoration( - color: Colors.white, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(20), - ), - ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - SvgPicture.asset( - state.allDevices[index].icon!, - fit: BoxFit.contain, - ), - GestureDetector( - onTap: () { - if (state.roomDevicesId[ - state.allDevices[index].uuid!] ?? - false == false) { - BlocProvider.of(context).add( - AssignRoomEvent( - deviceId: - state.allDevices[index].uuid ?? - '', - roomId: roomId)); - } - }, - child: SvgPicture.asset( - state.roomDevicesId[ - state.allDevices[index].uuid!] ?? - false - ? Assets.blueCheckboxIcon - : Assets.emptyCheckboxIcon, - width: 22, - height: 22, - )) - ], + SvgPicture.asset( + state.allDevices[index].icon!, + fit: BoxFit.contain, ), - Text(state.allDevices[index].name ?? ''), + GestureDetector( + onTap: () { + if (state.roomDevicesId[ + state.allDevices[index].uuid!] ?? + false == false) { + BlocProvider.of(context).add( + AssignRoomEvent( + deviceId: + state.allDevices[index].uuid ?? '', + roomId: roomId)); + } + }, + child: SvgPicture.asset( + state.roomDevicesId[ + state.allDevices[index].uuid!] ?? + false + ? Assets.blueCheckboxIcon + : Assets.emptyCheckboxIcon, + width: 22, + height: 22, + )) ], ), - ); - }), - ) - : Container()); - })); + Text(state.allDevices[index].name ?? ''), + ], + ), + ); + }), + ) + : Container()); + })); } } diff --git a/lib/features/menu/view/widgets/manage_home/room_screen.dart b/lib/features/menu/view/widgets/manage_home/room_screen.dart index f4947c6..3f4f0a8 100644 --- a/lib/features/menu/view/widgets/manage_home/room_screen.dart +++ b/lib/features/menu/view/widgets/manage_home/room_screen.dart @@ -54,7 +54,8 @@ class RoomsView extends StatelessWidget { return GestureDetector( onTap: () { // BlocProvider.of(context).add( - // FetchDevicesByRoomIdEvent(roomId: roomId)); + // FetchDevicesByRoomIdEvent( + // roomId: state.roomsList[index].id ?? '')); Navigator.of(context).push( MaterialPageRoute( builder: (context) => AssignDeviceView(