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/widgets/routine_dialogs/ac_dialog.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/models/device_functions.dart'; class DeviceDialogHelper { static Future?> showDeviceDialog( BuildContext context, Map data, { required bool removeComparetors, }) async { final functions = data['functions'] as List; try { final result = await _getDialogForDeviceType( context, data['productType'], data, functions, removeComparetors: removeComparetors, ); if (result != null) { return result; } } catch (e) { debugPrint('Error: $e'); } return null; } static Future?> _getDialogForDeviceType(BuildContext context, String productType, Map data, List functions, {required bool removeComparetors}) async { final routineBloc = context.read(); final deviceSelectedFunctions = routineBloc.state.selectedFunctions[data['uniqueCustomId']] ?? []; 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); default: return null; } } }