diff --git a/lib/features/scene/bloc/create_scene/create_scene_bloc.dart b/lib/features/scene/bloc/create_scene/create_scene_bloc.dart index 0c8fec8..39d929d 100644 --- a/lib/features/scene/bloc/create_scene/create_scene_bloc.dart +++ b/lib/features/scene/bloc/create_scene/create_scene_bloc.dart @@ -158,8 +158,8 @@ class CreateSceneBloc extends Bloc try { final response = await SceneApi.getSceneDetails(event.sceneId); if (response.id.isNotEmpty) { - tasksList = List.from(getTaskListFunctionsFromApi( - actions: response.actions, deviceId: response.id)); + tasksList = List.from( + getTaskListFunctionsFromApi(actions: response.actions)); emit(AddSceneTask( tasksList: tasksList, )); diff --git a/lib/features/scene/helper/scene_logic_helper.dart b/lib/features/scene/helper/scene_logic_helper.dart index 4978b19..cda1e50 100644 --- a/lib/features/scene/helper/scene_logic_helper.dart +++ b/lib/features/scene/helper/scene_logic_helper.dart @@ -51,8 +51,8 @@ mixin SceneLogicHelper { actionExecutor: 'delay', executorProperty: CreateSceneExecutorProperty( functionCode: '', - functionValue: task.operationalValues.first.value, - delaySeconds: 0, + functionValue: '', + delaySeconds: task.operationalValues.first.value, ), ); } diff --git a/lib/features/scene/helper/scene_operations_data_helper.dart b/lib/features/scene/helper/scene_operations_data_helper.dart index c1e2079..701419a 100644 --- a/lib/features/scene/helper/scene_operations_data_helper.dart +++ b/lib/features/scene/helper/scene_operations_data_helper.dart @@ -458,11 +458,6 @@ mixin SceneOperationsDataHelper { icon: Assets.assetsAcPower, description: "ON", value: true), SceneOperationalValue( icon: Assets.assetsAcPowerOFF, description: "OFF", value: false), - SceneOperationalValue( - icon: Assets.assetsSceneRefresh, - description: "Reverse Switch", - value: null, - ), ], ), SceneStaticFunction( @@ -477,11 +472,6 @@ mixin SceneOperationsDataHelper { icon: Assets.assetsAcPower, description: "ON", value: true), SceneOperationalValue( icon: Assets.assetsAcPowerOFF, description: "OFF", value: false), - SceneOperationalValue( - icon: Assets.assetsSceneRefresh, - description: "Reverse Switch", - value: null, - ), ], ), SceneStaticFunction( @@ -496,11 +486,6 @@ mixin SceneOperationsDataHelper { icon: Assets.assetsAcPower, description: "ON", value: true), SceneOperationalValue( icon: Assets.assetsAcPowerOFF, description: "OFF", value: false), - SceneOperationalValue( - icon: Assets.assetsSceneRefresh, - description: "Reverse Switch", - value: null, - ), ], ), SceneStaticFunction( @@ -665,18 +650,37 @@ mixin SceneOperationsDataHelper { /// List getTaskListFunctionsFromApi({ required List actions, - required String deviceId, }) { List functions = []; for (var action in actions) { + if (action.entityId == 'delay') { + functions.add( + SceneStaticFunction( + deviceId: action.entityId, + deviceName: 'delay', + deviceIcon: Assets.delay, + icon: Assets.delay, + operationName: 'delay', + functionValue: action.executorProperty.delaySeconds, + code: '', + operationalValues: [ + SceneOperationalValue( + icon: '', + description: "", + value: action.executorProperty.delaySeconds, + ), + ], + ), + ); + } ExecutorProperty executorProperty = action.executorProperty; switch (executorProperty.functionCode) { case 'sensitivity': functions.add( SceneStaticFunction( - deviceId: deviceId, + deviceId: action.entityId, deviceName: 'Presence Sensor', deviceIcon: Assets.assetsIconsSensors, icon: Assets.assetsSensitivityFunction, @@ -741,7 +745,7 @@ mixin SceneOperationsDataHelper { case 'normal_open_switch': functions.add( SceneStaticFunction( - deviceId: deviceId, + deviceId: action.entityId, deviceName: 'WIFI LOCK PRO', deviceIcon: Assets.assetsIconsDoorLock, icon: Assets.assetsIconsDoorLock, @@ -763,7 +767,7 @@ mixin SceneOperationsDataHelper { case 'far_detection': functions.add( SceneStaticFunction( - deviceId: deviceId, + deviceId: action.entityId, deviceName: 'Human Presence Sensor', deviceIcon: Assets.assetsIconsSensors, icon: Assets.assetsFarDetection, @@ -826,7 +830,7 @@ mixin SceneOperationsDataHelper { case 'motion_sensitivity_value': functions.add( SceneStaticFunction( - deviceId: deviceId, + deviceId: action.entityId, deviceName: 'Human Presence Sensor', deviceIcon: Assets.assetsIconsSensors, icon: Assets.assetsMotionDetection, @@ -866,7 +870,7 @@ mixin SceneOperationsDataHelper { case 'motionless_sensitivity': functions.add( SceneStaticFunction( - deviceId: deviceId, + deviceId: action.entityId, deviceName: 'Human Presence Sensor', deviceIcon: Assets.assetsIconsSensors, icon: Assets.assetsMotionlessDetection, @@ -911,7 +915,7 @@ mixin SceneOperationsDataHelper { case 'indicator': functions.add( SceneStaticFunction( - deviceId: deviceId, + deviceId: action.entityId, deviceName: 'Human Presence Sensor', deviceIcon: Assets.assetsIconsSensors, icon: Assets.assetsIndicator, @@ -933,7 +937,7 @@ mixin SceneOperationsDataHelper { case 'presence_time': functions.add( SceneStaticFunction( - deviceId: deviceId, + deviceId: action.entityId, deviceName: 'Human Presence Sensor', deviceIcon: Assets.assetsIconsSensors, icon: Assets.assetsNobodyTime, @@ -949,7 +953,7 @@ mixin SceneOperationsDataHelper { case 'switch_alarm_sound': functions.add( SceneStaticFunction( - deviceId: deviceId, + deviceId: action.entityId, deviceName: 'Multi-Mode Gateway Z-W-B', deviceIcon: Assets.assetsIconsGateway, icon: Assets.assetsSwitchAlarmSound, @@ -973,7 +977,7 @@ mixin SceneOperationsDataHelper { case 'master_state': functions.add( SceneStaticFunction( - deviceId: deviceId, + deviceId: action.entityId, deviceName: 'Multi-Mode Gateway Z-W-B', deviceIcon: Assets.assetsIconsGateway, icon: Assets.assetsMasterState, @@ -998,7 +1002,7 @@ mixin SceneOperationsDataHelper { case 'factory_reset': functions.add( SceneStaticFunction( - deviceId: deviceId, + deviceId: action.entityId, deviceName: 'Multi-Mode Gateway Z-W-B', deviceIcon: Assets.assetsIconsGateway, icon: Assets.assetsFactoryReset, @@ -1021,7 +1025,7 @@ mixin SceneOperationsDataHelper { break; case 'switch_1': functions.add(SceneStaticFunction( - deviceId: deviceId, + deviceId: action.entityId, deviceName: '3 Gang Button Switch L-L', deviceIcon: Assets.assetsIcons3GangSwitch, icon: Assets.assetsAcPower, @@ -1048,7 +1052,7 @@ mixin SceneOperationsDataHelper { break; case 'switch_2': functions.add(SceneStaticFunction( - deviceId: deviceId, + deviceId: action.entityId, deviceName: '3 Gang Button Switch L-L', deviceIcon: Assets.assetsIcons3GangSwitch, icon: Assets.assetsAcPower, @@ -1072,7 +1076,7 @@ mixin SceneOperationsDataHelper { break; case 'switch_3': functions.add(SceneStaticFunction( - deviceId: deviceId, + deviceId: action.entityId, deviceName: '3 Gang Button Switch L-L', deviceIcon: Assets.assetsIcons3GangSwitch, icon: Assets.assetsAcPower, @@ -1096,7 +1100,7 @@ mixin SceneOperationsDataHelper { break; case 'countdown_1': functions.add(SceneStaticFunction( - deviceId: deviceId, + deviceId: action.entityId, deviceName: '3 Gang Button Switch L-L', deviceIcon: Assets.assetsIcons3GangSwitch, icon: Assets.assetsLightCountdown, @@ -1110,7 +1114,7 @@ mixin SceneOperationsDataHelper { break; case 'countdown_2': functions.add(SceneStaticFunction( - deviceId: deviceId, + deviceId: action.entityId, deviceName: '3 Gang Button Switch L-L', deviceIcon: Assets.assetsIcons3GangSwitch, icon: Assets.assetsLightCountdown, @@ -1124,7 +1128,7 @@ mixin SceneOperationsDataHelper { break; case 'countdown_3': functions.add(SceneStaticFunction( - deviceId: deviceId, + deviceId: action.entityId, deviceName: '3 Gang Button Switch L-L', deviceIcon: Assets.assetsIcons3GangSwitch, icon: Assets.assetsLightCountdown, @@ -1138,7 +1142,7 @@ mixin SceneOperationsDataHelper { break; case 'switch': functions.add(SceneStaticFunction( - deviceId: deviceId, + deviceId: action.entityId, deviceName: 'Smart AC Thermostat - Grey - Model A', deviceIcon: Assets.assetsIconsAC, icon: Assets.assetsAcPower, @@ -1161,14 +1165,14 @@ mixin SceneOperationsDataHelper { break; case 'temp_set': functions.add(SceneStaticFunction( - deviceId: deviceId, + deviceId: action.entityId, deviceName: 'Smart AC Thermostat - Grey - Model A', deviceIcon: Assets.assetsIconsAC, icon: Assets.assetsTempreture, operationName: 'Set Temperature', code: 'temp_set', functionValue: executorProperty.functionValue != null - ? ((executorProperty.functionValue / 10) as double).toInt() + ? ((executorProperty.functionValue! / 10) as double).toInt() : null, operationalValues: [ SceneOperationalValue( @@ -1181,7 +1185,7 @@ mixin SceneOperationsDataHelper { break; case 'mode': functions.add(SceneStaticFunction( - deviceId: deviceId, + deviceId: action.entityId, deviceName: 'Smart AC Thermostat - Grey - Model A', deviceIcon: Assets.assetsIconsAC, icon: Assets.assetsFreezing, @@ -1209,7 +1213,7 @@ mixin SceneOperationsDataHelper { break; case 'level': functions.add(SceneStaticFunction( - deviceId: deviceId, + deviceId: action.entityId, deviceName: 'Smart AC Thermostat - Grey - Model A', deviceIcon: Assets.assetsIconsAC, icon: Assets.assetsFanSpeed, @@ -1242,7 +1246,7 @@ mixin SceneOperationsDataHelper { break; case 'child_lock': functions.add(SceneStaticFunction( - deviceId: deviceId, + deviceId: action.entityId, deviceName: 'Smart AC Thermostat - Grey - Model A', deviceIcon: Assets.assetsIconsAC, icon: Assets.assetsChildLock, diff --git a/lib/features/scene/model/create_scene_model.dart b/lib/features/scene/model/create_scene_model.dart index 41a0d53..53dc344 100644 --- a/lib/features/scene/model/create_scene_model.dart +++ b/lib/features/scene/model/create_scene_model.dart @@ -183,9 +183,9 @@ class CreateSceneExecutorProperty { Map toMap() { return { - 'functionCode': functionCode, - 'functionValue': functionValue, - 'delaySeconds': delaySeconds, + if (functionCode.isNotEmpty == true) 'functionCode': functionCode, + if (functionValue != '') 'functionValue': functionValue, + if (delaySeconds > 0) 'delaySeconds': delaySeconds, }; } diff --git a/lib/features/scene/model/scene_details_model.dart b/lib/features/scene/model/scene_details_model.dart index 069b18e..5ed5d1c 100644 --- a/lib/features/scene/model/scene_details_model.dart +++ b/lib/features/scene/model/scene_details_model.dart @@ -81,8 +81,8 @@ class ExecutorProperty { factory ExecutorProperty.fromJson(Map json) => ExecutorProperty( functionCode: json["functionCode"] ?? '', - functionValue: json["functionValue"], - delaySeconds: json["delaySeconds"], + functionValue: json["functionValue"] ?? '', + delaySeconds: json["delaySeconds"] ?? 0, ); Map toJson() => { diff --git a/lib/features/scene/view/scene_tasks_view.dart b/lib/features/scene/view/scene_tasks_view.dart index 5183faf..134916c 100644 --- a/lib/features/scene/view/scene_tasks_view.dart +++ b/lib/features/scene/view/scene_tasks_view.dart @@ -33,11 +33,14 @@ class SceneTasksView extends StatelessWidget { SizedBox( width: 40, child: GestureDetector( - onTap: () { - context.customBottomSheet( - child: DeleteBottomSheetContent(sceneId: sceneSettings.sceneId), - ); - }, + onTap: sceneSettings.sceneName.isEmpty + ? null + : () { + context.customBottomSheet( + child: DeleteBottomSheetContent( + sceneId: sceneSettings.sceneId), + ); + }, child: SvgPicture.asset( Assets.assetsIconsSettings, colorFilter: const ColorFilter.mode( diff --git a/lib/features/scene/widgets/create_scene_save_button.dart b/lib/features/scene/widgets/create_scene_save_button.dart index 179153d..5a31914 100644 --- a/lib/features/scene/widgets/create_scene_save_button.dart +++ b/lib/features/scene/widgets/create_scene_save_button.dart @@ -122,7 +122,7 @@ class _CreateSceneSaveButtonState extends State ), isLoading: state is CreateSceneLoading, child: BodyLarge( - text: 'Save', + text: widget.sceneName.isNotEmpty ? 'Update' : 'Save', style: context.bodyLarge.copyWith(color: Colors.white), ), );