diff --git a/lib/features/scene/bloc/scene_bloc/scene_bloc.dart b/lib/features/scene/bloc/scene_bloc/scene_bloc.dart index 97b3ac6..3c21d60 100644 --- a/lib/features/scene/bloc/scene_bloc/scene_bloc.dart +++ b/lib/features/scene/bloc/scene_bloc/scene_bloc.dart @@ -46,8 +46,11 @@ class SceneBloc extends Bloc { emit(SceneLoading()); try { + Project? project = HomeCubit.getInstance().project; + if (event.unitId.isNotEmpty) { - automationList = await SceneApi.getAutomationByUnitId(event.unitId); + automationList = await SceneApi.getAutomationByUnitId( + event.unitId, event.communityId, project?.uuid ?? ''); emit(SceneLoaded(scenes, automationList)); } else { emit(const SceneError(message: 'Unit ID is empty')); @@ -96,11 +99,16 @@ class SceneBloc extends Bloc { )); try { + Project? project = HomeCubit.getInstance().project; + final success = await SceneApi.updateAutomationStatus( event.automationId, event.automationStatusUpdate); if (success) { automationList = await SceneApi.getAutomationByUnitId( - event.automationStatusUpdate.spaceUuid); + event.automationStatusUpdate.spaceUuid, + event.communityId, + project?.uuid ?? '' + ); newLoadingStates[event.automationId] = false; emit(SceneLoaded( currentState.scenes, diff --git a/lib/features/scene/bloc/scene_bloc/scene_event.dart b/lib/features/scene/bloc/scene_bloc/scene_event.dart index 7807bbb..513b020 100644 --- a/lib/features/scene/bloc/scene_bloc/scene_event.dart +++ b/lib/features/scene/bloc/scene_bloc/scene_event.dart @@ -22,11 +22,13 @@ class LoadScenes extends SceneEvent { class LoadAutomation extends SceneEvent { final String unitId; + final String communityId; - const LoadAutomation(this.unitId); + + const LoadAutomation(this.unitId, this.communityId); @override - List get props => [unitId]; + List get props => [unitId, communityId]; } class SceneTrigger extends SceneEvent { @@ -43,8 +45,9 @@ class SceneTrigger extends SceneEvent { class UpdateAutomationStatus extends SceneEvent { final String automationId; final AutomationStatusUpdate automationStatusUpdate; + final String communityId; - const UpdateAutomationStatus({required this.automationStatusUpdate, required this.automationId}); + const UpdateAutomationStatus({required this.automationStatusUpdate, required this.automationId, required this.communityId}); @override List get props => [automationStatusUpdate]; diff --git a/lib/features/scene/view/scene_view.dart b/lib/features/scene/view/scene_view.dart index 0994736..20140a9 100644 --- a/lib/features/scene/view/scene_view.dart +++ b/lib/features/scene/view/scene_view.dart @@ -49,7 +49,9 @@ class SceneView extends StatelessWidget { name: '', )), showInDevice: pageType)) - ..add(LoadAutomation(HomeCubit.getInstance().selectedSpace?.id ?? '')); + ..add(LoadAutomation( + HomeCubit.getInstance().selectedSpace?.id ?? '', + HomeCubit.getInstance().selectedSpace?.community.uuid ?? '')); } }, child: BlocBuilder( @@ -57,30 +59,37 @@ class SceneView extends StatelessWidget { if (state is DeleteSceneSuccess) { if (state.success) { BlocProvider.of(context).add(LoadScenes( - HomeCubit.getInstance().selectedSpace!.id, HomeCubit.getInstance().selectedSpace!, + HomeCubit.getInstance().selectedSpace!.id, + HomeCubit.getInstance().selectedSpace!, showInDevice: pageType)); - BlocProvider.of(context) - .add(LoadAutomation(HomeCubit.getInstance().selectedSpace!.id)); + BlocProvider.of(context).add(LoadAutomation( + HomeCubit.getInstance().selectedSpace!.id, + HomeCubit.getInstance().selectedSpace!.community.uuid)); } } if (state is CreateSceneWithTasks) { if (state.success == true) { BlocProvider.of(context).add(LoadScenes( - HomeCubit.getInstance().selectedSpace!.id, HomeCubit.getInstance().selectedSpace!, + HomeCubit.getInstance().selectedSpace!.id, + HomeCubit.getInstance().selectedSpace!, showInDevice: pageType)); - BlocProvider.of(context) - .add(LoadAutomation(HomeCubit.getInstance().selectedSpace!.id)); - context.read().add(const SmartSceneClearEvent()); + BlocProvider.of(context).add(LoadAutomation( + HomeCubit.getInstance().selectedSpace!.id, + HomeCubit.getInstance().selectedSpace!.community.uuid)); + context + .read() + .add(const SmartSceneClearEvent()); } } return BlocListener( listener: (context, state) { if (state is SceneTriggerSuccess) { context.showCustomSnackbar( - message: 'Scene ${state.sceneName} triggered successfully!'); + message: + 'Scene ${state.sceneName} triggered successfully!'); } }, - child: HomeCubit.getInstance().spaces?.isEmpty ?? true + child: HomeCubit.getInstance().spaces.isEmpty ? const CreateUnitWidget() : Column( mainAxisAlignment: MainAxisAlignment.start, @@ -114,25 +123,30 @@ class SceneView extends StatelessWidget { child: ListView( children: [ Theme( - data: ThemeData() - .copyWith(dividerColor: Colors.transparent), + data: ThemeData().copyWith( + dividerColor: Colors.transparent), child: ExpansionTile( - tilePadding: const EdgeInsets.symmetric(horizontal: 6), + tilePadding: + const EdgeInsets.symmetric( + horizontal: 6), initiallyExpanded: true, iconColor: ColorsManager.grayColor, - title: const BodyMedium(text: 'Tap to run routines'), + title: const BodyMedium( + text: 'Tap to run routines'), children: [ scenes.isNotEmpty ? SceneGrid( scenes: scenes, - loadingSceneId: state.loadingSceneId, + loadingSceneId: + state.loadingSceneId, disablePlayButton: false, - loadingStates: - state.loadingStates, // Add this line + loadingStates: state + .loadingStates, // Add this line ) : const Center( child: BodyMedium( - text: 'No scenes have been added yet', + text: + 'No scenes have been added yet', ), ), const SizedBox( @@ -142,25 +156,30 @@ class SceneView extends StatelessWidget { ), ), Theme( - data: ThemeData() - .copyWith(dividerColor: Colors.transparent), + data: ThemeData().copyWith( + dividerColor: Colors.transparent), child: ExpansionTile( initiallyExpanded: true, iconColor: ColorsManager.grayColor, - tilePadding: const EdgeInsets.symmetric(horizontal: 6), - title: const BodyMedium(text: 'Automation'), + tilePadding: + const EdgeInsets.symmetric( + horizontal: 6), + title: const BodyMedium( + text: 'Automation'), children: [ automationList.isNotEmpty ? SceneGrid( scenes: automationList, - loadingSceneId: state.loadingSceneId, + loadingSceneId: + state.loadingSceneId, disablePlayButton: true, - loadingStates: - state.loadingStates, // Add this line + loadingStates: state + .loadingStates, // Add this line ) : const Center( child: BodyMedium( - text: 'No automations have been added yet', + text: + 'No automations have been added yet', ), ), const SizedBox( diff --git a/lib/features/scene/widgets/delete_routine_b.dart b/lib/features/scene/widgets/delete_routine_b.dart index 888f80e..216eed2 100644 --- a/lib/features/scene/widgets/delete_routine_b.dart +++ b/lib/features/scene/widgets/delete_routine_b.dart @@ -25,7 +25,7 @@ class DeleteRoutineButton extends StatelessWidget { BlocProvider.of(context).add(LoadScenes( HomeCubit.getInstance().selectedSpace!.id, HomeCubit.getInstance().selectedSpace!)); BlocProvider.of(context) - .add(LoadAutomation(HomeCubit.getInstance().selectedSpace!.id)); + .add(LoadAutomation(HomeCubit.getInstance().selectedSpace!.id,HomeCubit.getInstance().selectedSpace!.community.uuid)); } } }, diff --git a/lib/features/scene/widgets/scene_view_widget/scene_item.dart b/lib/features/scene/widgets/scene_view_widget/scene_item.dart index 38edbbd..c41302d 100644 --- a/lib/features/scene/widgets/scene_view_widget/scene_item.dart +++ b/lib/features/scene/widgets/scene_view_widget/scene_item.dart @@ -132,6 +132,10 @@ class SceneItem extends StatelessWidget { spaceUuid: HomeCubit.getInstance() .selectedSpace! .id), + communityId: HomeCubit.getInstance() + .selectedSpace! + .community + .uuid, automationId: scene.id)); }, ), diff --git a/lib/features/scene/widgets/select_smart_scene/smart_enable_autoamtion.dart b/lib/features/scene/widgets/select_smart_scene/smart_enable_autoamtion.dart index 6560c63..200290c 100644 --- a/lib/features/scene/widgets/select_smart_scene/smart_enable_autoamtion.dart +++ b/lib/features/scene/widgets/select_smart_scene/smart_enable_autoamtion.dart @@ -22,7 +22,7 @@ class SmartEnableAutomation extends StatelessWidget { child: BlocBuilder( bloc: context.read() ..add( - LoadAutomation(HomeCubit.getInstance().selectedSpace?.id ?? '')), + LoadAutomation(HomeCubit.getInstance().selectedSpace?.id ?? '',HomeCubit.getInstance().selectedSpace?.community.uuid ?? '')), builder: (context, state) { if (state is SceneLoading) { return const Align( diff --git a/lib/services/api/api_links_endpoints.dart b/lib/services/api/api_links_endpoints.dart index 16010f7..c94151e 100644 --- a/lib/services/api/api_links_endpoints.dart +++ b/lib/services/api/api_links_endpoints.dart @@ -153,7 +153,7 @@ abstract class ApiEndpoints { static const String getScene = '/scene/tap-to-run/{sceneId}'; static const String getIconScene = '/scene/icon'; - static const String getUnitAutomation = '/automation/{unitUuid}'; + static const String getUnitAutomation = '/projects/{projectId}/communities/{communityId}/spaces/{unitUuid}/automations'; static const String getAutomationDetails = '/automation/details/{automationId}'; diff --git a/lib/services/api/scene_api.dart b/lib/services/api/scene_api.dart index b08b936..b21cf21 100644 --- a/lib/services/api/scene_api.dart +++ b/lib/services/api/scene_api.dart @@ -78,10 +78,17 @@ class SceneApi { //getAutomation - static Future> getAutomationByUnitId(String unitId) async { + static Future> getAutomationByUnitId( + String unitId, + String communityId, + String projectId, + ) async { try { final response = await _httpService.get( - path: ApiEndpoints.getUnitAutomation.replaceAll('{unitUuid}', unitId), + path: ApiEndpoints.getUnitAutomation + .replaceAll('{unitUuid}', unitId) + .replaceAll('{communityId}', communityId) + .replaceAll('{projectId}', projectId), showServerMessage: false, expectedResponseModel: (json) { List scenes = [];