mirror of
https://github.com/SyncrowIOT/web.git
synced 2025-07-10 15:17:31 +00:00
157 lines
5.9 KiB
Dart
157 lines
5.9 KiB
Dart
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/ceiling_sensor/ceiling_sensor_helper.dart';
|
|
import 'package:syncrow_web/pages/routines/widgets/routine_dialogs/flush_presence_sensor/flush_presence_sensor.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/power_clamp_enargy/energy_clamp_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';
|
|
import 'package:syncrow_web/pages/routines/widgets/routine_dialogs/water_heater/water_heater_presence_sensor.dart';
|
|
|
|
class DeviceDialogHelper {
|
|
static Future<Map<String, dynamic>?> showDeviceDialog({
|
|
required BuildContext context,
|
|
required String dialogType,
|
|
required Map<String, dynamic> data,
|
|
required bool removeComparetors,
|
|
}) async {
|
|
final functions = data['functions'] as List<DeviceFunction>;
|
|
|
|
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<Map<String, dynamic>?> _getDialogForDeviceType({
|
|
required String dialogType,
|
|
required BuildContext context,
|
|
required String productType,
|
|
required Map<String, dynamic> data,
|
|
required List<DeviceFunction> functions,
|
|
required bool removeComparetors,
|
|
}) async {
|
|
final routineBloc = context.read<RoutineBloc>();
|
|
final deviceSelectedFunctions =
|
|
routineBloc.state.selectedFunctions[data['uniqueCustomId']] ?? [];
|
|
|
|
switch (productType) {
|
|
case 'AC':
|
|
return ACHelper.showACFunctionsDialog(
|
|
context: context,
|
|
functions: functions,
|
|
device: data['device'],
|
|
deviceSelectedFunctions: deviceSelectedFunctions,
|
|
uniqueCustomId: data['uniqueCustomId'],
|
|
removeComparetors: removeComparetors,
|
|
dialogType: dialogType,
|
|
);
|
|
|
|
case '1G':
|
|
return OneGangSwitchHelper.showSwitchFunctionsDialog(
|
|
dialogType: dialogType,
|
|
context: context,
|
|
functions: functions,
|
|
device: data['device'],
|
|
deviceSelectedFunctions: deviceSelectedFunctions,
|
|
uniqueCustomId: data['uniqueCustomId'],
|
|
removeComparetors: removeComparetors);
|
|
case '2G':
|
|
return TwoGangSwitchHelper.showSwitchFunctionsDialog(
|
|
dialogType: dialogType,
|
|
context: context,
|
|
functions: functions,
|
|
device: data['device'],
|
|
deviceSelectedFunctions: deviceSelectedFunctions,
|
|
uniqueCustomId: data['uniqueCustomId'],
|
|
removeComparetors: removeComparetors);
|
|
case '3G':
|
|
return ThreeGangSwitchHelper.showSwitchFunctionsDialog(
|
|
dialogType: dialogType,
|
|
context: context,
|
|
functions: functions,
|
|
device: data['device'],
|
|
deviceSelectedFunctions: deviceSelectedFunctions,
|
|
uniqueCustomId: data['uniqueCustomId'],
|
|
removeComparetors: removeComparetors);
|
|
case 'WPS':
|
|
return WallPresenceSensor.showWPSFunctionsDialog(
|
|
dialogType: dialogType,
|
|
context: context,
|
|
functions: functions,
|
|
device: data['device'],
|
|
deviceSelectedFunctions: deviceSelectedFunctions,
|
|
uniqueCustomId: data['uniqueCustomId'],
|
|
removeComparetors: removeComparetors);
|
|
case 'CPS':
|
|
return CeilingSensorHelper.showCeilingSensorDialog(
|
|
context: context,
|
|
functions: functions,
|
|
device: data['device'],
|
|
deviceSelectedFunctions: deviceSelectedFunctions,
|
|
uniqueCustomId: data['uniqueCustomId'],
|
|
dialogType: dialogType,
|
|
);
|
|
case 'GW':
|
|
return GatewayHelper.showGatewayFunctionsDialog(
|
|
context: context,
|
|
functions: functions,
|
|
uniqueCustomId: data['uniqueCustomId'],
|
|
deviceSelectedFunctions: deviceSelectedFunctions,
|
|
device: data['device'],
|
|
dialogType: dialogType,
|
|
);
|
|
case 'NCPS':
|
|
return FlushPresenceSensor.showFlushFunctionsDialog(
|
|
context: context,
|
|
functions: functions,
|
|
uniqueCustomId: data['uniqueCustomId'],
|
|
deviceSelectedFunctions: deviceSelectedFunctions,
|
|
dialogType: dialogType,
|
|
device: data['device'],
|
|
);
|
|
case 'WH':
|
|
return WaterHeaterDialogRoutines.showWHFunctionsDialog(
|
|
context: context,
|
|
functions: functions,
|
|
uniqueCustomId: data['uniqueCustomId'],
|
|
deviceSelectedFunctions: deviceSelectedFunctions,
|
|
dialogType: dialogType,
|
|
device: data['device'],
|
|
);
|
|
|
|
case 'PC':
|
|
return EnergyClampDialog.showEnergyClampFunctionsDialog(
|
|
context: context,
|
|
functions: functions,
|
|
uniqueCustomId: data['uniqueCustomId'],
|
|
deviceSelectedFunctions: deviceSelectedFunctions,
|
|
dialogType: dialogType,
|
|
device: data['device'],
|
|
);
|
|
|
|
default:
|
|
return null;
|
|
}
|
|
}
|
|
}
|