From fbdf3817aba6ad9664ada6d7ff193c5da022d858 Mon Sep 17 00:00:00 2001 From: Faris Armoush Date: Sun, 13 Apr 2025 15:25:48 +0300 Subject: [PATCH] Created a factory helper to create a `SceneBloc`. --- .../scene/helper/scene_bloc_factory.dart | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 lib/features/scene/helper/scene_bloc_factory.dart diff --git a/lib/features/scene/helper/scene_bloc_factory.dart b/lib/features/scene/helper/scene_bloc_factory.dart new file mode 100644 index 0000000..e47a7b6 --- /dev/null +++ b/lib/features/scene/helper/scene_bloc_factory.dart @@ -0,0 +1,48 @@ +import 'package:syncrow_app/features/app_layout/bloc/home_cubit.dart'; +import 'package:syncrow_app/features/app_layout/model/community_model.dart'; +import 'package:syncrow_app/features/app_layout/model/space_model.dart'; +import 'package:syncrow_app/features/scene/bloc/scene_bloc/scene_bloc.dart'; +import 'package:syncrow_app/features/scene/bloc/scene_bloc/scene_event.dart'; + +abstract final class SceneBlocFactory { + static SceneBloc create({ + required bool pageType, + required HomeCubit homeCubit, + }) { + final selectedSpace = homeCubit.selectedSpace; + final defaultSpace = SpaceModel( + id: '-1', + name: '', + community: Community( + uuid: '-1', + name: '', + ), + ); + + final spaceId = selectedSpace?.id ?? defaultSpace.id; + final space = selectedSpace ?? defaultSpace; + final communityUuid = + selectedSpace?.community.uuid ?? defaultSpace.community.uuid; + + final sceneBloc = SceneBloc(); + + sceneBloc.add( + LoadScenes( + spaceId, + space, + showInDevice: pageType, + ), + ); + + if (!pageType) { + sceneBloc.add( + LoadAutomation( + spaceId, + communityUuid, + ), + ); + } + + return sceneBloc; + } +}