diff --git a/lib/pages/device_managment/flush_mounted_presence_sensor/factories/flush_mounted_presence_sensor_bloc_factory.dart b/lib/pages/device_managment/flush_mounted_presence_sensor/factories/flush_mounted_presence_sensor_bloc_factory.dart new file mode 100644 index 00000000..537189af --- /dev/null +++ b/lib/pages/device_managment/flush_mounted_presence_sensor/factories/flush_mounted_presence_sensor_bloc_factory.dart @@ -0,0 +1,21 @@ +import 'package:syncrow_web/pages/device_managment/flush_mounted_presence_sensor/bloc/flush_mounted_presence_sensor_bloc.dart'; +import 'package:syncrow_web/services/batch_control_devices_service.dart'; +import 'package:syncrow_web/services/control_device_service.dart'; + +abstract final class FlushMountedPresenceSensorBlocFactory { + const FlushMountedPresenceSensorBlocFactory._(); + + static FlushMountedPresenceSensorBloc create({ + required String deviceId, + }) { + return FlushMountedPresenceSensorBloc( + deviceId: '', + controlDeviceService: DebouncedControlDeviceService( + decoratee: RemoteControlDeviceService(), + ), + batchControlDevicesService: DebouncedBatchControlDevicesService( + decoratee: RemoteBatchControlDevicesService(), + ), + )..add(FlushMountedPresenceSensorFetchStatusEvent()); + } +} diff --git a/lib/pages/device_managment/flush_mounted_presence_sensor/views/flush_mounted_presence_sensor_batch_control_view.dart b/lib/pages/device_managment/flush_mounted_presence_sensor/views/flush_mounted_presence_sensor_batch_control_view.dart index 0ef4cdbc..7f1e726c 100644 --- a/lib/pages/device_managment/flush_mounted_presence_sensor/views/flush_mounted_presence_sensor_batch_control_view.dart +++ b/lib/pages/device_managment/flush_mounted_presence_sensor/views/flush_mounted_presence_sensor_batch_control_view.dart @@ -2,11 +2,10 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:syncrow_web/pages/device_managment/all_devices/models/factory_reset_model.dart'; import 'package:syncrow_web/pages/device_managment/flush_mounted_presence_sensor/bloc/flush_mounted_presence_sensor_bloc.dart'; +import 'package:syncrow_web/pages/device_managment/flush_mounted_presence_sensor/factories/flush_mounted_presence_sensor_bloc_factory.dart'; import 'package:syncrow_web/pages/device_managment/flush_mounted_presence_sensor/models/flush_mounted_presence_sensor_model.dart'; import 'package:syncrow_web/pages/device_managment/shared/batch_control/factory_reset.dart'; import 'package:syncrow_web/pages/device_managment/shared/sensors_widgets/presence_update_data.dart'; -import 'package:syncrow_web/services/batch_control_devices_service.dart'; -import 'package:syncrow_web/services/control_device_service.dart'; import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart'; class FlushMountedPresenceSensorBatchControlView extends StatelessWidget @@ -20,19 +19,10 @@ class FlushMountedPresenceSensorBatchControlView extends StatelessWidget @override Widget build(BuildContext context) { - final isExtraLarge = isExtraLargeScreenSize(context); - final isLarge = isLargeScreenSize(context); - final isMedium = isMediumScreenSize(context); return BlocProvider( - create: (context) => FlushMountedPresenceSensorBloc( + create: (context) => FlushMountedPresenceSensorBlocFactory.create( deviceId: devicesIds.first, - controlDeviceService: DebouncedControlDeviceService( - decoratee: RemoteControlDeviceService(), - ), - batchControlDevicesService: DebouncedBatchControlDevicesService( - decoratee: RemoteBatchControlDevicesService(), - ), - )..add(FlushMountedPresenceSensorFetchStatusEvent()), + ), child: BlocBuilder( builder: (context, state) { @@ -40,8 +30,7 @@ class FlushMountedPresenceSensorBatchControlView extends StatelessWidget state is FlushMountedPresenceSensorDeviceReportsLoadingState) { return const Center(child: CircularProgressIndicator()); } else if (state is FlushMountedPresenceSensorUpdateState) { - return _buildGridView( - context, state.model, isExtraLarge, isLarge, isMedium); + return _buildGridView(context, state.model); } return const Center(child: Text('Error fetching status')); }, @@ -52,10 +41,10 @@ class FlushMountedPresenceSensorBatchControlView extends StatelessWidget Widget _buildGridView( BuildContext context, FlushMountedPresenceSensorModel model, - bool isExtraLarge, - bool isLarge, - bool isMedium, ) { + final isExtraLarge = isExtraLargeScreenSize(context); + final isLarge = isLargeScreenSize(context); + final isMedium = isMediumScreenSize(context); return GridView( padding: const EdgeInsets.symmetric(horizontal: 50), shrinkWrap: true, diff --git a/lib/pages/device_managment/flush_mounted_presence_sensor/views/flush_mounted_presence_sensor_control_view.dart b/lib/pages/device_managment/flush_mounted_presence_sensor/views/flush_mounted_presence_sensor_control_view.dart index dab887b2..bdefa507 100644 --- a/lib/pages/device_managment/flush_mounted_presence_sensor/views/flush_mounted_presence_sensor_control_view.dart +++ b/lib/pages/device_managment/flush_mounted_presence_sensor/views/flush_mounted_presence_sensor_control_view.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:syncrow_web/pages/device_managment/all_devices/models/devices_model.dart'; import 'package:syncrow_web/pages/device_managment/flush_mounted_presence_sensor/bloc/flush_mounted_presence_sensor_bloc.dart'; +import 'package:syncrow_web/pages/device_managment/flush_mounted_presence_sensor/factories/flush_mounted_presence_sensor_bloc_factory.dart'; import 'package:syncrow_web/pages/device_managment/flush_mounted_presence_sensor/models/flush_mounted_presence_sensor_model.dart'; import 'package:syncrow_web/pages/device_managment/shared/sensors_widgets/presence_display_data.dart'; import 'package:syncrow_web/pages/device_managment/shared/sensors_widgets/presence_static_widget.dart'; @@ -9,8 +10,6 @@ import 'package:syncrow_web/pages/device_managment/shared/sensors_widgets/presen import 'package:syncrow_web/pages/device_managment/shared/sensors_widgets/presence_update_data.dart'; import 'package:syncrow_web/pages/device_managment/shared/table/description_view.dart'; import 'package:syncrow_web/pages/device_managment/shared/table/report_table.dart'; -import 'package:syncrow_web/services/batch_control_devices_service.dart'; -import 'package:syncrow_web/services/control_device_service.dart'; import 'package:syncrow_web/utils/constants/assets.dart'; import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart'; @@ -22,19 +21,10 @@ class FlushMountedPresenceSensorControlView extends StatelessWidget @override Widget build(BuildContext context) { - final isExtraLarge = isExtraLargeScreenSize(context); - final isLarge = isLargeScreenSize(context); - final isMedium = isMediumScreenSize(context); return BlocProvider( - create: (context) => FlushMountedPresenceSensorBloc( - deviceId: device.uuid!, - controlDeviceService: DebouncedControlDeviceService( - decoratee: RemoteControlDeviceService(), - ), - batchControlDevicesService: DebouncedBatchControlDevicesService( - decoratee: RemoteBatchControlDevicesService(), - ), - )..add(FlushMountedPresenceSensorFetchStatusEvent()), + create: (context) => FlushMountedPresenceSensorBlocFactory.create( + deviceId: device.uuid ?? '-1', + ), child: BlocBuilder( builder: (context, state) { @@ -42,8 +32,7 @@ class FlushMountedPresenceSensorControlView extends StatelessWidget state is FlushMountedPresenceSensorDeviceReportsLoadingState) { return const Center(child: CircularProgressIndicator()); } else if (state is FlushMountedPresenceSensorUpdateState) { - return _buildGridView( - context, state.model, isExtraLarge, isLarge, isMedium); + return _buildGridView(context, state.model); } else if (state is FlushMountedPresenceSensorDeviceReportsState) { return ReportsTable( report: state.deviceReport, @@ -70,13 +59,7 @@ class FlushMountedPresenceSensorControlView extends StatelessWidget } else if (state is FlushMountedPresenceSensorDeviceReportsFailedState) { final model = context.read().deviceStatus; - return _buildGridView( - context, - model, - isExtraLarge, - isLarge, - isMedium, - ); + return _buildGridView(context, model); } return const Center( child: Text('Error fetching status', textAlign: TextAlign.center), @@ -89,10 +72,10 @@ class FlushMountedPresenceSensorControlView extends StatelessWidget Widget _buildGridView( BuildContext context, FlushMountedPresenceSensorModel model, - bool isExtraLarge, - bool isLarge, - bool isMedium, ) { + final isExtraLarge = isExtraLargeScreenSize(context); + final isLarge = isLargeScreenSize(context); + final isMedium = isMediumScreenSize(context); return GridView( padding: const EdgeInsets.symmetric(horizontal: 50), shrinkWrap: true, @@ -208,12 +191,13 @@ class FlushMountedPresenceSensorControlView extends StatelessWidget minValue: 20, maxValue: 300, steps: 1, - action: (double value) => context.read().add( - FlushMountedPresenceSensorChangeValueEvent( - code: FlushMountedPresenceSensorModel.codeNoneDelay, - value: (value * 10).round(), - ), - ), + action: (double value) => + context.read().add( + FlushMountedPresenceSensorChangeValueEvent( + code: FlushMountedPresenceSensorModel.codeNoneDelay, + value: (value * 10).round(), + ), + ), ), GestureDetector( onTap: () => context.read().add(