import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:syncrow_web/pages/routines/bloc/routine_bloc/routine_bloc.dart'; import 'package:syncrow_web/pages/routines/models/device_functions.dart'; import 'package:syncrow_web/pages/routines/widgets/routine_dialogs/ac_dialog.dart'; import 'package:syncrow_web/pages/routines/widgets/routine_dialogs/gateway/gateway_helper.dart'; import 'package:syncrow_web/pages/routines/widgets/routine_dialogs/one_gang_switch_dialog.dart'; import 'package:syncrow_web/pages/routines/widgets/routine_dialogs/three_gang_switch_dialog.dart'; import 'package:syncrow_web/pages/routines/widgets/routine_dialogs/two_gang_switch_dialog.dart'; import 'package:syncrow_web/pages/routines/widgets/routine_dialogs/wall_sensor/wall_presence_sensor.dart'; class DeviceDialogHelper { static Future?> showDeviceDialog({ required BuildContext context, required String dialogType, required Map data, required bool removeComparetors, }) async { final functions = data['functions'] as List; try { final result = await _getDialogForDeviceType( dialogType: dialogType, context: context, productType: data['productType'], data: data, functions: functions, removeComparetors: removeComparetors, ); if (result != null) { return result; } } catch (e) { debugPrint('Error: $e'); } return null; } static Future?> _getDialogForDeviceType({ required String dialogType, required BuildContext context, required String productType, required Map data, required List functions, required bool removeComparetors, }) async { final routineBloc = context.read(); final deviceSelectedFunctions = routineBloc.state.selectedFunctions[data['uniqueCustomId']] ?? []; if (removeComparetors && data['productType'] != 'WPS') { //remove the current temp function in the 'if container' functions.removeAt(3); } switch (productType) { case 'AC': return ACHelper.showACFunctionsDialog( context, functions, data['device'], deviceSelectedFunctions, data['uniqueCustomId'], removeComparetors, ); case '1G': return OneGangSwitchHelper.showSwitchFunctionsDialog( context, functions, data['device'], deviceSelectedFunctions, data['uniqueCustomId'], removeComparetors); case '2G': return TwoGangSwitchHelper.showSwitchFunctionsDialog( context, functions, data['device'], deviceSelectedFunctions, data['uniqueCustomId'], removeComparetors); case '3G': return ThreeGangSwitchHelper.showSwitchFunctionsDialog( context, functions, data['device'], deviceSelectedFunctions, data['uniqueCustomId'], removeComparetors); case 'WPS': return WallPresenceSensor.showWPSFunctionsDialog( dialogType: dialogType, context: context, functions: functions, device: data['device'], deviceSelectedFunctions: deviceSelectedFunctions, uniqueCustomId: data['uniqueCustomId'], removeComparetors: removeComparetors); case 'GW': return GatewayHelper.showGatewayFunctionsDialog( context: context, functions: functions, uniqueCustomId: data['uniqueCustomId'], deviceSelectedFunctions: deviceSelectedFunctions, device: data['device'], ); default: return null; } } }