diff --git a/lib/features/devices/bloc/device_manager_bloc/device_manager_bloc.dart b/lib/features/devices/bloc/device_manager_bloc/device_manager_bloc.dart index f648578..a8b1eb1 100644 --- a/lib/features/devices/bloc/device_manager_bloc/device_manager_bloc.dart +++ b/lib/features/devices/bloc/device_manager_bloc/device_manager_bloc.dart @@ -25,11 +25,10 @@ class DeviceManagerBloc extends Bloc { static List? allCategories; - Future _onFetchAllDevices( - FetchAllDevices event, Emitter emit) async { + Future _onFetchAllDevices(FetchAllDevices event, Emitter emit) async { emit(state.copyWith(loading: true)); try { - final allDevices = await HomeManagementAPI.fetchDevicesByUserId(); + final allDevices = await HomeManagementAPI.fetchDevicesByUnitId(); emit(state.copyWith(devices: allDevices, loading: false)); } catch (e) { emit(state.copyWith(error: e.toString(), loading: false)); @@ -47,16 +46,14 @@ class DeviceManagerBloc extends Bloc { } } - void _onSelectCategory( - SelectCategory event, Emitter emit) { + void _onSelectCategory(SelectCategory event, Emitter emit) { for (var i = 0; i < allCategories!.length; i++) { allCategories![i].isSelected = i == event.index; } emit(state.copyWith(categoryChanged: true)); } - void _onUnselectAllCategories( - UnselectAllCategories event, Emitter emit) { + void _onUnselectAllCategories(UnselectAllCategories event, Emitter emit) { for (var category in allCategories!) { category.isSelected = false; } @@ -100,8 +97,7 @@ class DeviceManagerBloc extends Bloc { _updateDevicesStatus(category, emit); } - void _onTurnOnOffDevice( - TurnOnOffDevice event, Emitter emit) { + void _onTurnOnOffDevice(TurnOnOffDevice event, Emitter emit) { var device = event.device; device.isOnline = !device.isOnline!; DevicesCategoryModel category = allCategories!.firstWhere((category) { @@ -124,8 +120,7 @@ class DeviceManagerBloc extends Bloc { emit(state.copyWith(categoryChanged: true)); // Set category changed state } - void _updateDevicesStatus( - DevicesCategoryModel category, Emitter emit) { + void _updateDevicesStatus(DevicesCategoryModel category, Emitter emit) { if (category.devices != null && category.devices!.isNotEmpty) { bool? tempStatus = category.devices![0].isOnline; for (var device in category.devices!) { @@ -145,8 +140,7 @@ class DeviceManagerBloc extends Bloc { try { final deviceFunctions = await DevicesAPI.deviceFunctions(event.deviceId); - emit(state.copyWith( - functionsLoading: false, deviceFunctions: deviceFunctions)); + emit(state.copyWith(functionsLoading: false, deviceFunctions: deviceFunctions)); } catch (e) { emit(state.copyWith(functionsLoading: false, error: e.toString())); } diff --git a/lib/features/scene/bloc/scene_bloc/scene_bloc.dart b/lib/features/scene/bloc/scene_bloc/scene_bloc.dart index 8613528..98b36cc 100644 --- a/lib/features/scene/bloc/scene_bloc/scene_bloc.dart +++ b/lib/features/scene/bloc/scene_bloc/scene_bloc.dart @@ -18,15 +18,18 @@ class SceneBloc extends Bloc { emit(SceneLoading()); try { - final scenes = await SceneApi.getScenesByUnitId(event.unitId); - emit(SceneLoaded(scenes)); + if (event.unitId.isNotEmpty) { + final scenes = await SceneApi.getScenesByUnitId(event.unitId); + emit(SceneLoaded(scenes)); + } else { + const SceneError(message: ''); + } } catch (e) { emit(const SceneError(message: 'Something went wrong')); } } - Future _onSceneTrigger( - SceneTrigger event, Emitter emit) async { + Future _onSceneTrigger(SceneTrigger event, Emitter emit) async { final currentState = state; if (currentState is SceneLoaded) { emit(SceneLoaded(currentState.scenes, loadingSceneId: event.sceneId)); diff --git a/lib/features/scene/view/scene_view.dart b/lib/features/scene/view/scene_view.dart index f6fb7fd..e89bae3 100644 --- a/lib/features/scene/view/scene_view.dart +++ b/lib/features/scene/view/scene_view.dart @@ -16,8 +16,8 @@ class SceneView extends StatelessWidget { @override Widget build(BuildContext context) { return BlocProvider( - create: (BuildContext context) => SceneBloc() - ..add(LoadScenes(HomeCubit.getInstance().selectedSpace!.id!)), + create: (BuildContext context) => + SceneBloc()..add(LoadScenes(HomeCubit.getInstance().selectedSpace?.id ?? '')), child: BlocBuilder( builder: (context, state) { if (state is DeleteSceneSuccess) { @@ -36,8 +36,7 @@ class SceneView extends StatelessWidget { 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 diff --git a/lib/services/api/api_links_endpoints.dart b/lib/services/api/api_links_endpoints.dart index b3becb7..d32bdba 100644 --- a/lib/services/api/api_links_endpoints.dart +++ b/lib/services/api/api_links_endpoints.dart @@ -9,8 +9,7 @@ abstract class ApiEndpoints { static const String deleteUser = '$baseUrl/authentication/user/delete/{id}'; static const String sendOtp = '$baseUrl/authentication/user/send-otp'; static const String verifyOtp = '$baseUrl/authentication/user/verify-otp'; - static const String forgetPassword = - '$baseUrl/authentication/user/forget-password'; + static const String forgetPassword = '$baseUrl/authentication/user/forget-password'; ////////////////////////////////////// Spaces /////////////////////////////////////// @@ -20,12 +19,10 @@ abstract class ApiEndpoints { static const String addCommunityToUser = '$baseUrl/community/user'; //GET static const String communityByUuid = '$baseUrl/community/{communityUuid}'; - static const String communityChild = - '$baseUrl/community/child/{communityUuid}'; + static const String communityChild = '$baseUrl/community/child/{communityUuid}'; static const String communityUser = '$baseUrl/community/user/{userUuid}'; //PUT - static const String renameCommunity = - '$baseUrl/community/rename/{communityUuid}'; + static const String renameCommunity = '$baseUrl/community/rename/{communityUuid}'; ///Building Module //POST @@ -34,12 +31,10 @@ abstract class ApiEndpoints { //GET static const String buildingByUuid = '$baseUrl/building/{buildingUuid}'; static const String buildingChild = '$baseUrl/building/child/{buildingUuid}'; - static const String buildingParent = - '$baseUrl/building/parent/{buildingUuid}'; + static const String buildingParent = '$baseUrl/building/parent/{buildingUuid}'; static const String buildingUser = '$baseUrl/building/user/{userUuid}'; //PUT - static const String renameBuilding = - '$baseUrl/building/rename/{buildingUuid}'; + static const String renameBuilding = '$baseUrl/building/rename/{buildingUuid}'; ///Floor Module //POST @@ -62,8 +57,7 @@ abstract class ApiEndpoints { static const String unitChild = '$baseUrl/unit/child/'; static const String unitParent = '$baseUrl/unit/parent/{unitUuid}'; static const String unitUser = '$baseUrl/unit/user/'; - static const String invitationCode = - '$baseUrl/unit/{unitUuid}/invitation-code'; + static const String invitationCode = '$baseUrl/unit/{unitUuid}/invitation-code'; static const String verifyInvitationCode = '$baseUrl/unit/user/verify-code'; //PUT @@ -86,8 +80,7 @@ abstract class ApiEndpoints { static const String controlGroup = '$baseUrl/group/control'; //GET static const String groupBySpace = '$baseUrl/group/{unitUuid}'; - static const String devicesByGroupName = - '$baseUrl/group/{unitUuid}/devices/{groupName}'; + static const String devicesByGroupName = '$baseUrl/group/{unitUuid}/devices/{groupName}'; static const String groupByUuid = '$baseUrl/group/{groupUuid}'; //DELETE @@ -99,19 +92,16 @@ abstract class ApiEndpoints { static const String addDeviceToRoom = '$baseUrl/device/room'; static const String addDeviceToGroup = '$baseUrl/device/group'; static const String controlDevice = '$baseUrl/device/{deviceUuid}/control'; - static const String firmwareDevice = - '$baseUrl/device/{deviceUuid}/firmware/{firmwareVersion}'; + static const String firmwareDevice = '$baseUrl/device/{deviceUuid}/firmware/{firmwareVersion}'; static const String getDevicesByUserId = '$baseUrl/device/user/{userId}'; + static const String getDevicesByUnitId = '$baseUrl/device/unit/{unitUuid}'; //GET static const String deviceByRoom = '$baseUrl/device/room'; static const String deviceByUuid = '$baseUrl/device/{deviceUuid}'; - static const String deviceFunctions = - '$baseUrl/device/{deviceUuid}/functions'; - static const String gatewayApi = - '$baseUrl/device/gateway/{gatewayUuid}/devices'; - static const String deviceFunctionsStatus = - '$baseUrl/device/{deviceUuid}/functions/status'; + static const String deviceFunctions = '$baseUrl/device/{deviceUuid}/functions'; + static const String gatewayApi = '$baseUrl/device/gateway/{gatewayUuid}/devices'; + static const String deviceFunctionsStatus = '$baseUrl/device/{deviceUuid}/functions/status'; ///Device Permission Module //POST @@ -119,16 +109,14 @@ abstract class ApiEndpoints { //GET static const String devicePermissionList = '$baseUrl/device-permission/list'; //PUT - static const String editDevicePermission = - '$baseUrl/device-permission/edit/{userId}'; + static const String editDevicePermission = '$baseUrl/device-permission/edit/{userId}'; static const String assignDeviceToRoom = '$baseUrl/device/room'; /// Scene API //////////////////// /// POST static const String createScene = '$baseUrl/scene/tap-to-run'; - static const String triggerScene = - '$baseUrl/scene/tap-to-run/trigger/{sceneId}'; + static const String triggerScene = '$baseUrl/scene/tap-to-run/trigger/{sceneId}'; /// GET static const String getUnitScenes = '$baseUrl/scene/tap-to-run/{unitUuid}'; @@ -139,8 +127,7 @@ abstract class ApiEndpoints { static const String updateScene = '$baseUrl/scene/tap-to-run/{sceneId}'; /// DELETE - static const String deleteScene = - '$baseUrl/scene/tap-to-run/{unitUuid}/{sceneId}'; + static const String deleteScene = '$baseUrl/scene/tap-to-run/{unitUuid}/{sceneId}'; //////////////////////Door Lock ////////////////////// //online diff --git a/lib/services/api/home_management_api.dart b/lib/services/api/home_management_api.dart index 78923ec..b49e8d7 100644 --- a/lib/services/api/home_management_api.dart +++ b/lib/services/api/home_management_api.dart @@ -1,4 +1,5 @@ import 'package:flutter_secure_storage/flutter_secure_storage.dart'; +import 'package:syncrow_app/features/app_layout/bloc/home_cubit.dart'; import 'package:syncrow_app/features/auth/model/user_model.dart'; import 'package:syncrow_app/features/devices/model/device_model.dart'; import 'package:syncrow_app/services/api/api_links_endpoints.dart'; @@ -23,6 +24,20 @@ class HomeManagementAPI { return list; } + static Future> fetchDevicesByUnitId() async { + List list = []; + await _httpService.get( + path: ApiEndpoints.getDevicesByUnitId + .replaceAll("{unitUuid}", HomeCubit.getInstance().selectedSpace?.id ?? ''), + showServerMessage: false, + expectedResponseModel: (json) { + json.forEach((value) { + list.add(DeviceModel.fromJson(value)); + }); + }); + return list; + } + static Future> assignDeviceToRoom(Map body) async { try { final response = await _httpService.put(