diff --git a/lib/features/app_layout/bloc/home_cubit.dart b/lib/features/app_layout/bloc/home_cubit.dart index adad8c4..f4ed015 100644 --- a/lib/features/app_layout/bloc/home_cubit.dart +++ b/lib/features/app_layout/bloc/home_cubit.dart @@ -10,6 +10,7 @@ import 'package:share_plus/share_plus.dart'; import 'package:syncrow_app/features/app_layout/model/permission_model.dart'; import 'package:syncrow_app/features/app_layout/model/space_model.dart'; import 'package:syncrow_app/features/app_layout/view/widgets/app_bar_home_dropdown.dart'; +import 'package:syncrow_app/features/auth/model/project_model.dart'; import 'package:syncrow_app/features/auth/model/user_model.dart'; import 'package:syncrow_app/features/devices/bloc/devices_cubit.dart'; import 'package:syncrow_app/features/devices/model/subspace_model.dart'; @@ -28,6 +29,7 @@ import 'package:syncrow_app/navigation/routing_constants.dart'; import 'package:syncrow_app/services/api/devices_api.dart'; import 'package:syncrow_app/services/api/profile_api.dart'; import 'package:syncrow_app/services/api/spaces_api.dart'; +import 'package:syncrow_app/utils/constants/temp_const.dart'; import 'package:syncrow_app/utils/helpers/snack_bar.dart'; import 'package:syncrow_app/utils/resource_manager/color_manager.dart'; part 'home_state.dart'; @@ -67,6 +69,8 @@ class HomeCubit extends Cubit { var uuid = await const FlutterSecureStorage().read(key: UserModel.userUuidKey); user = await ProfileApi().fetchUserInfo(uuid); + project = user?.project; + emit(HomeUserInfoLoaded(user!)); } catch (e) { return; @@ -175,6 +179,8 @@ class HomeCubit extends Cubit { SubSpaceModel? selectedRoom; + Project? project; + PageController devicesPageController = PageController(); PageController roomsPageController = PageController(); @@ -324,8 +330,8 @@ class HomeCubit extends Cubit { //////////////////////////////////////// API //////////////////////////////////////// generateInvitation(SpaceModel unit) async { try { - final invitationCode = - await SpacesAPI.generateInvitationCode(unit.id, unit.community.uuid); + final invitationCode = await SpacesAPI.generateInvitationCode(unit.id, + unit.community.uuid, project?.uuid ?? TempConst.projectIdDev); if (invitationCode.isNotEmpty) { Share.share('The invitation code is $invitationCode'); CustomSnackBar.displaySnackBar( @@ -380,8 +386,10 @@ class HomeCubit extends Cubit { fetchRoomsByUnitId(SpaceModel space) async { emitSafe(GetSpaceRoomsLoading()); try { - space.subspaces = - await SpacesAPI.getSubSpaceBySpaceId(space.community.uuid, space.id); + space.subspaces = await SpacesAPI.getSubSpaceBySpaceId( + space.community.uuid, + space.id, + project?.uuid ?? TempConst.projectIdDev); } catch (failure) { emitSafe(GetSpaceRoomsError(failure.toString())); return; @@ -414,7 +422,6 @@ class HomeCubit extends Cubit { emitSafe(ActivationError(errMessage: errorMsg)); return false; } - } /////////////////////////////////////// Nav /////////////////////////////////////// diff --git a/lib/features/devices/bloc/6_scene_switch_bloc/6_scene_bloc.dart b/lib/features/devices/bloc/6_scene_switch_bloc/6_scene_bloc.dart index 48fe85f..c77b11b 100644 --- a/lib/features/devices/bloc/6_scene_switch_bloc/6_scene_bloc.dart +++ b/lib/features/devices/bloc/6_scene_switch_bloc/6_scene_bloc.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:syncrow_app/features/app_layout/bloc/home_cubit.dart'; +import 'package:syncrow_app/features/auth/model/project_model.dart'; import 'package:syncrow_app/features/devices/bloc/6_scene_switch_bloc/6_scene_event.dart'; import 'package:syncrow_app/features/devices/bloc/6_scene_switch_bloc/6_scene_state.dart'; import 'package:syncrow_app/features/devices/model/device_control_model.dart'; @@ -16,6 +17,7 @@ import 'package:syncrow_app/services/api/devices_api.dart'; import 'package:syncrow_app/services/api/home_management_api.dart'; import 'package:syncrow_app/services/api/scene_api.dart'; import 'package:syncrow_app/services/api/spaces_api.dart'; +import 'package:syncrow_app/utils/constants/temp_const.dart'; import 'package:syncrow_app/utils/helpers/snack_bar.dart'; class SixSceneBloc extends Bloc { @@ -112,8 +114,9 @@ class SixSceneBloc extends Bloc { FetchRoomsEvent event, Emitter emit) async { try { emit(SixSceneLoadingState()); + Project? project = HomeCubit.getInstance().project; roomsList = await SpacesAPI.getSubSpaceBySpaceId( - event.unit.community.uuid, event.unit.id); + event.unit.community.uuid, event.unit.id, project?.uuid ?? TempConst.projectIdDev); emit(FetchRoomsState(devicesList: allDevices, roomsList: roomsList)); } catch (e) { emit(SixSceneFailedState(errorMessage: e.toString())); @@ -125,12 +128,14 @@ class SixSceneBloc extends Bloc { try { emit(SixSceneLoadingState()); if (_hasSelectionChanged) { + Project? project = HomeCubit.getInstance().project; await HomeManagementAPI.assignDeviceToRoom( - event.unit.community.uuid, event.unit.id, event.roomId, sixSceneId); + event.unit.community.uuid, event.unit.id, event.roomId, sixSceneId, project?.uuid ?? TempConst.projectIdDev); final devicesList = await DevicesAPI.getDevicesByRoomId( communityUuid: event.unit.community.uuid, spaceUuid: event.unit.id, - roomId: event.roomId); + roomId: event.roomId, + projectId: project?.uuid ?? TempConst.projectIdDev); List allDevicesIds = []; allDevices.forEach((element) { allDevicesIds.add(element.uuid!); @@ -341,8 +346,10 @@ class SixSceneBloc extends Bloc { emit(SixSceneLoadingState()); try { + Project? project = HomeCubit.getInstance().project; + allScenes = await SceneApi.getScenesByUnitId( - event.unitId, event.unit.community.uuid, + event.unitId, event.unit.community.uuid, project?.uuid ?? TempConst.projectIdDev, showInDevice: event.showInDevice); filteredScenes = allScenes; 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 8e984ea..5817bad 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 @@ -2,6 +2,8 @@ import 'dart:async'; import 'package:bloc/bloc.dart'; import 'package:flutter/material.dart'; +import 'package:syncrow_app/features/app_layout/bloc/home_cubit.dart'; +import 'package:syncrow_app/features/auth/model/project_model.dart'; import 'package:syncrow_app/features/devices/bloc/device_manager_bloc/device_manager_event.dart'; import 'package:syncrow_app/features/devices/bloc/device_manager_bloc/device_manager_state.dart'; @@ -10,6 +12,7 @@ import 'package:syncrow_app/features/devices/model/device_model.dart'; import 'package:syncrow_app/services/api/devices_api.dart'; import 'package:syncrow_app/services/api/home_management_api.dart'; +import 'package:syncrow_app/utils/constants/temp_const.dart'; import 'package:syncrow_app/utils/resource_manager/constants.dart'; class DeviceManagerBloc extends Bloc { @@ -27,11 +30,16 @@ 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.fetchDevicesByUnitId(); - emit(state.copyWith(devices: _getOnlyImplementedDevices(allDevices), loading: false)); + Project? project = HomeCubit.getInstance().project; + + final allDevices = await HomeManagementAPI.fetchDevicesByUnitId( + project?.uuid ?? TempConst.projectIdDev); + emit(state.copyWith( + devices: _getOnlyImplementedDevices(allDevices), loading: false)); } catch (e) { emit(state.copyWith(error: e.toString(), loading: false)); } @@ -41,26 +49,31 @@ class DeviceManagerBloc extends Bloc { FetchDevicesByRoomId event, Emitter emit) async { emit(state.copyWith(loading: true)); try { - final devices = await DevicesAPI.getDevicesByRoomId( - communityUuid: event.unit.community.uuid, - spaceUuid: event.unit.id, - roomId: event.roomId, - ); + Project? project = HomeCubit.getInstance().project; - emit(state.copyWith(devices: _getOnlyImplementedDevices(devices), loading: false)); + final devices = await DevicesAPI.getDevicesByRoomId( + communityUuid: event.unit.community.uuid, + spaceUuid: event.unit.id, + roomId: event.roomId, + projectId: project?.uuid ?? TempConst.projectIdDev); + + emit(state.copyWith( + devices: _getOnlyImplementedDevices(devices), loading: false)); } catch (e) { emit(state.copyWith(error: e.toString(), loading: false)); } } - 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; } @@ -104,7 +117,8 @@ 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) { @@ -127,7 +141,8 @@ 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!) { @@ -147,7 +162,8 @@ 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/devices/bloc/device_settings_bloc/device_scene_bloc.dart b/lib/features/devices/bloc/device_settings_bloc/device_scene_bloc.dart index 4c91650..fb03dc0 100644 --- a/lib/features/devices/bloc/device_settings_bloc/device_scene_bloc.dart +++ b/lib/features/devices/bloc/device_settings_bloc/device_scene_bloc.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:syncrow_app/features/app_layout/bloc/home_cubit.dart'; +import 'package:syncrow_app/features/auth/model/project_model.dart'; import 'package:syncrow_app/features/devices/bloc/device_settings_bloc/device_scene_event.dart'; import 'package:syncrow_app/features/devices/bloc/device_settings_bloc/device_scene_state.dart'; import 'package:syncrow_app/features/devices/model/device_model.dart'; @@ -18,6 +19,7 @@ import 'package:syncrow_app/generated/assets.dart'; import 'package:syncrow_app/services/api/devices_api.dart'; import 'package:syncrow_app/services/api/home_management_api.dart'; import 'package:syncrow_app/services/api/spaces_api.dart'; +import 'package:syncrow_app/utils/constants/temp_const.dart'; import 'package:syncrow_app/utils/helpers/snack_bar.dart'; class DeviceSettingBloc extends Bloc { @@ -349,13 +351,20 @@ class DeviceSettingBloc extends Bloc { AssignRoomEvent event, Emitter emit) async { try { emit(DeviceSettingLoadingState()); + Project? project = HomeCubit.getInstance().project; + if (_hasSelectionChanged) { await HomeManagementAPI.assignDeviceToRoom( - event.unit.community.uuid, event.unit.id, event.roomId, deviceId); + event.unit.community.uuid, + event.unit.id, + event.roomId, + deviceId, + project?.uuid ?? TempConst.projectIdDev); final devicesList = await DevicesAPI.getDevicesByRoomId( communityUuid: event.unit.community.uuid, spaceUuid: event.unit.id, - roomId: event.roomId); + roomId: event.roomId, + projectId: project?.uuid ?? TempConst.projectIdDev); List allDevicesIds = []; allDevices.forEach((element) { allDevicesIds.add(element.uuid!); @@ -375,8 +384,12 @@ class DeviceSettingBloc extends Bloc { FetchRoomsEvent event, Emitter emit) async { try { emit(DeviceSettingLoadingState()); + Project? project = HomeCubit.getInstance().project; + roomsList = await SpacesAPI.getSubSpaceBySpaceId( - event.unit.community.uuid, event.unit.id); + event.unit.community.uuid, + event.unit.id, + project?.uuid ?? TempConst.projectIdDev); emit(FetchRoomsState(devicesList: allDevices, roomsList: roomsList)); } catch (e) { emit( diff --git a/lib/features/devices/bloc/devices_cubit.dart b/lib/features/devices/bloc/devices_cubit.dart index 2949072..888b941 100644 --- a/lib/features/devices/bloc/devices_cubit.dart +++ b/lib/features/devices/bloc/devices_cubit.dart @@ -5,6 +5,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:syncrow_app/features/app_layout/bloc/home_cubit.dart'; import 'package:syncrow_app/features/app_layout/model/space_model.dart'; +import 'package:syncrow_app/features/auth/model/project_model.dart'; import 'package:syncrow_app/features/devices/model/device_category_model.dart'; import 'package:syncrow_app/features/devices/model/device_control_model.dart'; import 'package:syncrow_app/features/devices/model/device_model.dart'; @@ -19,6 +20,7 @@ import 'package:syncrow_app/services/api/devices_api.dart'; import 'package:syncrow_app/services/api/home_management_api.dart'; import 'package:syncrow_app/services/api/network_exception.dart'; import 'package:syncrow_app/services/api/spaces_api.dart'; +import 'package:syncrow_app/utils/constants/temp_const.dart'; import 'package:syncrow_app/utils/resource_manager/constants.dart'; part 'devices_state.dart'; @@ -309,11 +311,14 @@ class DevicesCubit extends Cubit { .subspaces .indexWhere((element) => element.id == roomId); try { + Project? project = HomeCubit.getInstance().project; + HomeCubit.getInstance().selectedSpace!.subspaces[roomIndex].devices = await DevicesAPI.getDevicesByRoomId( communityUuid: unit!.community.uuid, spaceUuid: unit.id, - roomId: roomId); + roomId: roomId, + projectId: project?.uuid ?? TempConst.projectIdDev); } catch (e) { emitSafe(GetDevicesError(e.toString())); return; @@ -410,10 +415,12 @@ class DevicesCubit extends Cubit { Future fetchAllDevices(SpaceModel? unit) async { emitSafe(GetDevicesLoading()); try { + Project? project = HomeCubit.getInstance().project; + final devices = await DevicesAPI.getAllDevices( - communityUuid: unit!.community.uuid, - spaceUuid: unit.id, - ); + communityUuid: unit!.community.uuid, + spaceUuid: unit.id, + projectId: project?.uuid ?? TempConst.projectIdDev); allDevices = devices; emitSafe(GetDevicesSuccess(allDevices)); } catch (e) { diff --git a/lib/features/devices/bloc/four_scene_bloc/four_scene_bloc.dart b/lib/features/devices/bloc/four_scene_bloc/four_scene_bloc.dart index d3069f7..7407467 100644 --- a/lib/features/devices/bloc/four_scene_bloc/four_scene_bloc.dart +++ b/lib/features/devices/bloc/four_scene_bloc/four_scene_bloc.dart @@ -1,6 +1,8 @@ import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:syncrow_app/features/app_layout/bloc/home_cubit.dart'; +import 'package:syncrow_app/features/auth/model/project_model.dart'; import 'package:syncrow_app/features/devices/bloc/four_scene_bloc/four_scene_event.dart'; import 'package:syncrow_app/features/devices/bloc/four_scene_bloc/four_scene_state.dart'; import 'package:syncrow_app/features/devices/model/device_control_model.dart'; @@ -14,6 +16,7 @@ import 'package:syncrow_app/features/devices/model/subspace_model.dart'; import 'package:syncrow_app/features/scene/model/scenes_model.dart'; import 'package:syncrow_app/services/api/devices_api.dart'; import 'package:syncrow_app/services/api/scene_api.dart'; +import 'package:syncrow_app/utils/constants/temp_const.dart'; import 'package:syncrow_app/utils/helpers/snack_bar.dart'; class FourSceneBloc extends Bloc { @@ -299,9 +302,11 @@ class FourSceneBloc extends Bloc { LoadScenes event, Emitter emit) async { emit(FourSceneLoadingState()); try { + Project? project = HomeCubit.getInstance().project; + if (event.unitId.isNotEmpty) { allScenes = await SceneApi.getScenesByUnitId( - event.unitId, event.unit.community.uuid, + event.unitId, event.unit.community.uuid, project?.uuid ?? TempConst.projectIdDev, showInDevice: event.showInDevice); filteredScenes = allScenes; diff --git a/lib/features/devices/bloc/sos_bloc/sos_bloc.dart b/lib/features/devices/bloc/sos_bloc/sos_bloc.dart index 63082fa..0b0d028 100644 --- a/lib/features/devices/bloc/sos_bloc/sos_bloc.dart +++ b/lib/features/devices/bloc/sos_bloc/sos_bloc.dart @@ -5,6 +5,7 @@ import 'package:flutter_bloc/flutter_bloc.dart'; 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/auth/model/project_model.dart'; import 'package:syncrow_app/features/devices/bloc/sos_bloc/sos_event.dart'; import 'package:syncrow_app/features/devices/bloc/sos_bloc/sos_state.dart'; import 'package:syncrow_app/features/devices/model/device_control_model.dart'; @@ -19,6 +20,7 @@ import 'package:syncrow_app/navigation/routing_constants.dart'; import 'package:syncrow_app/services/api/devices_api.dart'; import 'package:syncrow_app/services/api/home_management_api.dart'; import 'package:syncrow_app/services/api/spaces_api.dart'; +import 'package:syncrow_app/utils/constants/temp_const.dart'; import 'package:syncrow_app/utils/helpers/snack_bar.dart'; class SosBloc extends Bloc { @@ -184,8 +186,12 @@ class SosBloc extends Bloc { FetchRoomsEvent event, Emitter emit) async { try { emit(SosLoadingState()); + Project? project = HomeCubit.getInstance().project; + roomsList = await SpacesAPI.getSubSpaceBySpaceId( - event.unit.community.uuid, event.unit.id); + event.unit.community.uuid, + event.unit.id, + project?.uuid ?? TempConst.projectIdDev); emit(FetchRoomsState(devicesList: allDevices, roomsList: roomsList)); } catch (e) { emit(const SosFailedState(errorMessage: 'Something went wrong')); @@ -223,13 +229,19 @@ class SosBloc extends Bloc { void _assignDevice(AssignRoomEvent event, Emitter emit) async { try { emit(SosLoadingState()); + Project? project = HomeCubit.getInstance().project; await HomeManagementAPI.assignDeviceToRoom( - event.unit.community.uuid, event.unit.id, event.roomId, sosId); + event.unit.community.uuid, + event.unit.id, + event.roomId, + sosId, + project?.uuid ?? TempConst.projectIdDev); final devicesList = await DevicesAPI.getDevicesByRoomId( communityUuid: event.unit.community.uuid, spaceUuid: event.unit.id, - roomId: event.roomId); + roomId: event.roomId, + projectId: project?.uuid ?? TempConst.projectIdDev); List allDevicesIds = []; @@ -249,13 +261,16 @@ class SosBloc extends Bloc { void _unassignDevice(UnassignRoomEvent event, Emitter emit) async { try { Map roomDevicesId = {}; + Project? project = HomeCubit.getInstance().project; + emit(SosLoadingState()); await HomeManagementAPI.unAssignDeviceToRoom( - event.unit.community.uuid, event.unit.id, event.roomId, sosId); + event.unit.community.uuid, event.unit.id, event.roomId, sosId, project?.uuid ?? TempConst.projectIdDev); final devicesList = await DevicesAPI.getDevicesByRoomId( communityUuid: event.unit.community.uuid, spaceUuid: event.unit.id, - roomId: event.roomId); + roomId: event.roomId, + projectId: project?.uuid ?? TempConst.projectIdDev); List allDevicesIds = []; diff --git a/lib/features/menu/bloc/create_unit_bloc/create_unit_bloc.dart b/lib/features/menu/bloc/create_unit_bloc/create_unit_bloc.dart index 23a1e59..fad0ea4 100644 --- a/lib/features/menu/bloc/create_unit_bloc/create_unit_bloc.dart +++ b/lib/features/menu/bloc/create_unit_bloc/create_unit_bloc.dart @@ -1,10 +1,12 @@ import 'package:flutter_bloc/flutter_bloc.dart'; 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/project_model.dart'; import 'package:syncrow_app/features/auth/model/user_model.dart'; import 'package:syncrow_app/features/menu/bloc/create_unit_bloc/create_unit_event.dart'; import 'package:syncrow_app/features/menu/bloc/create_unit_bloc/create_unit_state.dart'; import 'package:syncrow_app/services/api/home_creation_api.dart'; +import 'package:syncrow_app/utils/constants/temp_const.dart'; import 'package:syncrow_app/utils/helpers/snack_bar.dart'; class CreateUnitBloc extends Bloc { @@ -239,8 +241,13 @@ Future _createNewRoom( required String communityId}) async { try { Map body = {'subspaceName': roomName}; + Project? project = HomeCubit.getInstance().project; + final response = await HomeCreation.createRoom( - communityId: communityId, spaceId: unitId, body: body); + communityId: communityId, + spaceId: unitId, + body: body, + projectId: project?.uuid ?? TempConst.projectIdDev); // if (response['data']['uuid'] != '') { // final result = await _assignToRoom(roomId: response['data']['uuid'], userId: userId); diff --git a/lib/features/menu/bloc/manage_unit_bloc/manage_unit_bloc.dart b/lib/features/menu/bloc/manage_unit_bloc/manage_unit_bloc.dart index bd6b653..0883eb9 100644 --- a/lib/features/menu/bloc/manage_unit_bloc/manage_unit_bloc.dart +++ b/lib/features/menu/bloc/manage_unit_bloc/manage_unit_bloc.dart @@ -1,5 +1,6 @@ import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:syncrow_app/features/app_layout/bloc/home_cubit.dart'; +import 'package:syncrow_app/features/auth/model/project_model.dart'; import 'package:syncrow_app/features/devices/model/device_model.dart'; import 'package:syncrow_app/features/menu/bloc/manage_unit_bloc/manage_unit_event.dart'; import 'package:syncrow_app/features/menu/bloc/manage_unit_bloc/manage_unit_state.dart'; @@ -7,6 +8,7 @@ import 'package:syncrow_app/services/api/devices_api.dart'; import 'package:syncrow_app/services/api/home_creation_api.dart'; import 'package:syncrow_app/services/api/home_management_api.dart'; import 'package:syncrow_app/services/api/spaces_api.dart'; +import 'package:syncrow_app/utils/constants/temp_const.dart'; class ManageUnitBloc extends Bloc { List allDevices = []; @@ -24,8 +26,12 @@ class ManageUnitBloc extends Bloc { FetchRoomsEvent event, Emitter emit) async { try { emit(LoadingState()); + Project? project = HomeCubit.getInstance().project; + final roomsList = await SpacesAPI.getSubSpaceBySpaceId( - event.unit.community.uuid, event.unit.id); + event.unit.community.uuid, + event.unit.id, + project?.uuid ?? TempConst.projectIdDev); emit(FetchRoomsState(devicesList: allDevices, roomsList: roomsList)); } catch (e) { emit(const ErrorState(message: 'Something went wrong')); @@ -37,11 +43,14 @@ class ManageUnitBloc extends Bloc { FetchDevicesByRoomIdEvent event, Emitter emit) async { try { Map roomDevicesId = {}; + Project? project = HomeCubit.getInstance().project; + emit(LoadingState()); final devicesList = await DevicesAPI.getDevicesByRoomId( communityUuid: event.unit.community.uuid, spaceUuid: event.unit.id, - roomId: event.roomId); + roomId: event.roomId, + projectId: project?.uuid ?? TempConst.projectIdDev); allDevices = await HomeManagementAPI.fetchDevicesByUserId(); List allDevicesIds = []; @@ -72,14 +81,21 @@ class ManageUnitBloc extends Bloc { AssignRoomEvent event, Emitter emit) async { try { Map roomDevicesId = {}; + Project? project = HomeCubit.getInstance().project; + emit(LoadingState()); - + await HomeManagementAPI.assignDeviceToRoom( - event.unit.community.uuid, event.unit.id, event.roomId, event.deviceId); + event.unit.community.uuid, + event.unit.id, + event.roomId, + event.deviceId, + project?.uuid ?? TempConst.projectIdDev); final devicesList = await DevicesAPI.getDevicesByRoomId( communityUuid: event.unit.community.uuid, spaceUuid: event.unit.id, - roomId: event.roomId); + roomId: event.roomId, + projectId: project?.uuid ?? TempConst.projectIdDev); List allDevicesIds = []; @@ -105,19 +121,25 @@ class ManageUnitBloc extends Bloc { } } - void _unassignDevice( UnassignRoomEvent event, Emitter emit) async { try { Map roomDevicesId = {}; + Project? project = HomeCubit.getInstance().project; + emit(LoadingState()); - + await HomeManagementAPI.unAssignDeviceToRoom( - event.unit.community.uuid, event.unit.id, event.roomId, event.deviceId); + event.unit.community.uuid, + event.unit.id, + event.roomId, + event.deviceId, + project?.uuid ?? TempConst.projectIdDev); final devicesList = await DevicesAPI.getDevicesByRoomId( communityUuid: event.unit.community.uuid, spaceUuid: event.unit.id, - roomId: event.roomId); + roomId: event.roomId, + projectId: project?.uuid ?? TempConst.projectIdDev); List allDevicesIds = []; @@ -143,18 +165,22 @@ class ManageUnitBloc extends Bloc { } } - _addNewRoom(AddNewRoom event, Emitter emit) async { Map body = {'subspaceName': event.roomName}; try { emit(LoadingState()); + Project? project = HomeCubit.getInstance().project; + final response = await HomeCreation.createRoom( communityId: event.unit.community.uuid, spaceId: event.unit.id, - body: body); + body: body, + projectId: project?.uuid ?? TempConst.projectIdDev); if (response['data']['uuid'] != '') { final roomsList = await SpacesAPI.getSubSpaceBySpaceId( - event.unit.community.uuid, event.unit.id); + event.unit.community.uuid, + event.unit.id, + project?.uuid ?? TempConst.projectIdDev); allDevices = await HomeManagementAPI.fetchDevicesByUserId(); emit(FetchRoomsState(devicesList: allDevices, roomsList: roomsList)); await HomeCubit.getInstance().fetchUnitsByUserId(); diff --git a/lib/features/menu/bloc/profile_bloc/profile_bloc.dart b/lib/features/menu/bloc/profile_bloc/profile_bloc.dart index c01a5c5..c7c56d3 100644 --- a/lib/features/menu/bloc/profile_bloc/profile_bloc.dart +++ b/lib/features/menu/bloc/profile_bloc/profile_bloc.dart @@ -23,8 +23,8 @@ class ProfileBloc extends Bloc { String timeZoneSelected = ''; String regionSelected = ''; final TextEditingController searchController = TextEditingController(); - final TextEditingController nameController = - TextEditingController(text: '${HomeCubit.user!.firstName} ${HomeCubit.user!.lastName}'); + final TextEditingController nameController = TextEditingController( + text: '${HomeCubit.user!.firstName} ${HomeCubit.user!.lastName}'); List allRegions = []; List allTimeZone = []; @@ -77,10 +77,13 @@ class ProfileBloc extends Bloc { emit(NameEditingState(editName: editName)); } - void _fetchUserInfo(InitialProfileEvent event, Emitter emit) async { + void _fetchUserInfo( + InitialProfileEvent event, Emitter emit) async { try { emit(LoadingInitialState()); HomeCubit.user = await ProfileApi().fetchUserInfo(HomeCubit.user!.uuid); + HomeCubit.getInstance().project = HomeCubit.user?.project; + emit(SaveState()); } catch (e) { emit(FailedState(errorMessage: e.toString())); @@ -88,7 +91,8 @@ class ProfileBloc extends Bloc { } } - Future _fetchTimeZone(TimeZoneInitialEvent event, Emitter emit) async { + Future _fetchTimeZone( + TimeZoneInitialEvent event, Emitter emit) async { emit(LoadingInitialState()); try { allTimeZone = await ProfileApi.fetchTimeZone(); @@ -100,7 +104,8 @@ class ProfileBloc extends Bloc { } } - Future selectTimeZone(SelectTimeZoneEvent event, Emitter emit) async { + Future selectTimeZone( + SelectTimeZoneEvent event, Emitter emit) async { try { emit(LoadingInitialState()); timeZoneSelected = event.val; @@ -112,7 +117,8 @@ class ProfileBloc extends Bloc { } } - Future selectRegion(SelectRegionEvent event, Emitter emit) async { + Future selectRegion( + SelectRegionEvent event, Emitter emit) async { try { emit(LoadingInitialState()); await ProfileApi.saveRegion(regionUuid: event.val); @@ -124,7 +130,8 @@ class ProfileBloc extends Bloc { } } - Future searchRegion(SearchRegionEvent event, Emitter emit) async { + Future searchRegion( + SearchRegionEvent event, Emitter emit) async { emit(LoadingInitialState()); final query = event.query.toLowerCase(); if (allRegions.isEmpty) { @@ -140,7 +147,8 @@ class ProfileBloc extends Bloc { } } - Future searchTimeZone(SearchTimeZoneEvent event, Emitter emit) async { + Future searchTimeZone( + SearchTimeZoneEvent event, Emitter emit) async { emit(LoadingInitialState()); final query = event.query.toLowerCase(); if (allTimeZone.isEmpty) { @@ -156,7 +164,8 @@ class ProfileBloc extends Bloc { } } - void _fetchRegion(RegionInitialEvent event, Emitter emit) async { + void _fetchRegion( + RegionInitialEvent event, Emitter emit) async { try { emit(LoadingInitialState()); allRegions = await ProfileApi.fetchRegion(); @@ -166,7 +175,8 @@ class ProfileBloc extends Bloc { } } - Future _selectImage(SelectImageEvent event, Emitter emit) async { + Future _selectImage( + SelectImageEvent event, Emitter emit) async { try { if (await _requestPermission()) { emit(ChangeImageState()); @@ -283,7 +293,8 @@ class ProfileBloc extends Bloc { } return false; } else { - SharedPreferences sharedPreferences = await SharedPreferences.getInstance(); + SharedPreferences sharedPreferences = + await SharedPreferences.getInstance(); bool firstClick = sharedPreferences.getBool('firstPermission') ?? true; await sharedPreferences.setBool('firstPermission', false); if (firstClick == false) { diff --git a/lib/features/scene/bloc/scene_bloc/scene_bloc.dart b/lib/features/scene/bloc/scene_bloc/scene_bloc.dart index 4837d32..97b3ac6 100644 --- a/lib/features/scene/bloc/scene_bloc/scene_bloc.dart +++ b/lib/features/scene/bloc/scene_bloc/scene_bloc.dart @@ -2,9 +2,12 @@ import 'dart:async'; import 'package:equatable/equatable.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:syncrow_app/features/app_layout/bloc/home_cubit.dart'; +import 'package:syncrow_app/features/auth/model/project_model.dart'; import 'package:syncrow_app/features/scene/bloc/scene_bloc/scene_event.dart'; import 'package:syncrow_app/features/scene/model/scenes_model.dart'; import 'package:syncrow_app/services/api/scene_api.dart'; +import 'package:syncrow_app/utils/constants/temp_const.dart'; part 'scene_state.dart'; @@ -23,9 +26,11 @@ class SceneBloc extends Bloc { emit(SceneLoading()); try { + Project? project = HomeCubit.getInstance().project; + if (event.unitId.isNotEmpty) { - scenes = await SceneApi.getScenesByUnitId( - event.unitId, event.unit.community.uuid, + scenes = await SceneApi.getScenesByUnitId(event.unitId, + event.unit.community.uuid, project?.uuid ?? TempConst.projectIdDev, showInDevice: event.showInDevice); emit(SceneLoaded(scenes, automationList)); } else { diff --git a/lib/services/api/devices_api.dart b/lib/services/api/devices_api.dart index b9b27b5..9475ddf 100644 --- a/lib/services/api/devices_api.dart +++ b/lib/services/api/devices_api.dart @@ -219,13 +219,14 @@ class DevicesAPI { required String communityUuid, required String spaceUuid, required String roomId, + required String projectId, }) async { try { final String path = ApiEndpoints.deviceByRoom .replaceAll('{communityUuid}', communityUuid) .replaceAll('{spaceUuid}', spaceUuid) .replaceAll('{subSpaceUuid}', roomId) - .replaceAll('{projectUuid}', TempConst.projectIdDev); + .replaceAll('{projectUuid}', projectId); final response = await _httpService.get( path: path, @@ -564,12 +565,13 @@ class DevicesAPI { static Future> getAllDevices({ required String communityUuid, required String spaceUuid, + required String projectId, }) async { try { final String path = ApiEndpoints.getAllDevices .replaceAll('{communityUuid}', communityUuid) .replaceAll('{spaceUuid}', spaceUuid) - .replaceAll('{projectUuid}', TempConst.projectIdDev); + .replaceAll('{projectUuid}', projectId); final response = await _httpService.get( path: path, diff --git a/lib/services/api/home_creation_api.dart b/lib/services/api/home_creation_api.dart index 9d3fd13..4f7eb07 100644 --- a/lib/services/api/home_creation_api.dart +++ b/lib/services/api/home_creation_api.dart @@ -145,12 +145,13 @@ class HomeCreation { required String communityId, required String spaceId, required Map body, + required String projectId }) async { try { final fullPath = ApiEndpoints.addSubSpace .replaceAll('{communityUuid}', communityId) .replaceAll('{spaceUuid}', spaceId) - .replaceAll('{projectUuid}', TempConst.projectIdDev); + .replaceAll('{projectUuid}', projectId); final response = await _httpService.post( path: fullPath, body: body, diff --git a/lib/services/api/home_management_api.dart b/lib/services/api/home_management_api.dart index abeff8e..8febf4b 100644 --- a/lib/services/api/home_management_api.dart +++ b/lib/services/api/home_management_api.dart @@ -27,7 +27,7 @@ class HomeManagementAPI { return list; } - static Future> fetchDevicesByUnitId() async { + static Future> fetchDevicesByUnitId(String projectUuid) async { List list = []; try { @@ -40,7 +40,7 @@ class HomeManagementAPI { final path = ApiEndpoints.spaceDevices .replaceAll('{communityUuid}', communityUuid) .replaceAll('{spaceUuid}', spaceUuid) - .replaceAll('{projectUuid}', TempConst.projectIdDev); + .replaceAll('{projectUuid}', projectUuid); await _httpService.get( path: path, @@ -63,11 +63,11 @@ class HomeManagementAPI { } static Future> assignDeviceToRoom(String communityId, - String spaceId, String subSpaceId, String deviceId) async { + String spaceId, String subSpaceId, String deviceId, String projectId) async { try { final response = await _httpService.post( path: ApiEndpoints.assignDeviceToRoom - .replaceAll('{projectUuid}', TempConst.projectIdDev) + .replaceAll('{projectUuid}', projectId) .replaceAll('{communityUuid}', communityId) .replaceAll('{spaceUuid}', spaceId) .replaceAll('{subSpaceUuid}', subSpaceId) @@ -83,7 +83,7 @@ class HomeManagementAPI { } static Future> unAssignDeviceToRoom(String communityId, - String spaceId, String subSpaceId, String deviceId) async { + String spaceId, String subSpaceId, String deviceId, String projectId) async { try { final response = await _httpService.delete( path: ApiEndpoints.assignDeviceToRoom @@ -91,7 +91,7 @@ class HomeManagementAPI { .replaceAll('{spaceUuid}', spaceId) .replaceAll('{subSpaceUuid}', subSpaceId) .replaceAll('{deviceUuid}', deviceId) - .replaceAll('{projectUuid}', TempConst.projectIdDev), + .replaceAll('{projectUuid}', projectId), expectedResponseModel: (json) { return json; }, diff --git a/lib/services/api/scene_api.dart b/lib/services/api/scene_api.dart index 0281417..ce4a5ae 100644 --- a/lib/services/api/scene_api.dart +++ b/lib/services/api/scene_api.dart @@ -50,14 +50,14 @@ class SceneApi { //get scene by unit id static Future> getScenesByUnitId( - String unitId, String communityId, + String unitId, String communityId, String projectId, {showInDevice = false}) async { try { final response = await _httpService.get( path: ApiEndpoints.getUnitScenes .replaceAll('{spaceUuid}', unitId) .replaceAll('{communityUuid}', communityId) - .replaceAll('{projectUuid}', TempConst.projectIdDev), + .replaceAll('{projectUuid}', projectId), queryParameters: {'showInHomePage': showInDevice}, showServerMessage: false, expectedResponseModel: (json) { diff --git a/lib/services/api/spaces_api.dart b/lib/services/api/spaces_api.dart index 3864f60..7ab3e19 100644 --- a/lib/services/api/spaces_api.dart +++ b/lib/services/api/spaces_api.dart @@ -32,13 +32,13 @@ class SpacesAPI { } static Future> getSubSpaceBySpaceId( - String communityId, String spaceId) async { + String communityId, String spaceId, String projectId) async { try { // Construct the API path final path = ApiEndpoints.listSubspace .replaceFirst('{communityUuid}', communityId) .replaceFirst('{spaceUuid}', spaceId) - .replaceAll('{projectUuid}', TempConst.projectIdDev); + .replaceAll('{projectUuid}', projectId); final response = await _httpService.get( path: path, @@ -66,12 +66,12 @@ class SpacesAPI { //factory/reset/{deviceUuid} static Future generateInvitationCode( - String unitId, String communityId) async { + String unitId, String communityId, String projectId) async { final response = await _httpService.post( path: ApiEndpoints.invitationCode .replaceAll('{unitUuid}', unitId) .replaceAll('{communityUuid}', communityId) - .replaceAll('{projectUuid}', TempConst.projectIdDev), + .replaceAll('{projectUuid}', projectId), showServerMessage: false, expectedResponseModel: (json) { if (json != null && json['data'] != null) {