diff --git a/ios/Podfile.lock b/ios/Podfile.lock index de7dea4..064c37d 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -14,14 +14,14 @@ PODS: - Firebase/Database (10.25.0): - Firebase/CoreOnly - FirebaseDatabase (~> 10.25.0) - - firebase_analytics (10.8.7): + - firebase_analytics (10.10.7): - Firebase/Analytics (= 10.25.0) - firebase_core - Flutter - firebase_core (2.32.0): - Firebase/CoreOnly (= 10.25.0) - Flutter - - firebase_crashlytics (3.4.16): + - firebase_crashlytics (3.5.7): - Firebase/Crashlytics (= 10.25.0) - firebase_core - Flutter @@ -150,12 +150,12 @@ PODS: - nanopb/encode (= 2.30910.0) - nanopb/decode (2.30910.0) - nanopb/encode (2.30910.0) - - onesignal_flutter (5.2.0): + - onesignal_flutter (5.2.6): - Flutter - - OneSignalXCFramework (= 5.2.0) - - OneSignalXCFramework (5.2.0): - - OneSignalXCFramework/OneSignalComplete (= 5.2.0) - - OneSignalXCFramework/OneSignal (5.2.0): + - OneSignalXCFramework (= 5.2.5) + - OneSignalXCFramework (5.2.5): + - OneSignalXCFramework/OneSignalComplete (= 5.2.5) + - OneSignalXCFramework/OneSignal (5.2.5): - OneSignalXCFramework/OneSignalCore - OneSignalXCFramework/OneSignalExtension - OneSignalXCFramework/OneSignalLiveActivities @@ -163,38 +163,38 @@ PODS: - OneSignalXCFramework/OneSignalOSCore - OneSignalXCFramework/OneSignalOutcomes - OneSignalXCFramework/OneSignalUser - - OneSignalXCFramework/OneSignalComplete (5.2.0): + - OneSignalXCFramework/OneSignalComplete (5.2.5): - OneSignalXCFramework/OneSignal - OneSignalXCFramework/OneSignalInAppMessages - OneSignalXCFramework/OneSignalLocation - - OneSignalXCFramework/OneSignalCore (5.2.0) - - OneSignalXCFramework/OneSignalExtension (5.2.0): + - OneSignalXCFramework/OneSignalCore (5.2.5) + - OneSignalXCFramework/OneSignalExtension (5.2.5): - OneSignalXCFramework/OneSignalCore - OneSignalXCFramework/OneSignalOutcomes - - OneSignalXCFramework/OneSignalInAppMessages (5.2.0): + - OneSignalXCFramework/OneSignalInAppMessages (5.2.5): - OneSignalXCFramework/OneSignalCore - OneSignalXCFramework/OneSignalNotifications - OneSignalXCFramework/OneSignalOSCore - OneSignalXCFramework/OneSignalOutcomes - OneSignalXCFramework/OneSignalUser - - OneSignalXCFramework/OneSignalLiveActivities (5.2.0): + - OneSignalXCFramework/OneSignalLiveActivities (5.2.5): - OneSignalXCFramework/OneSignalCore - OneSignalXCFramework/OneSignalOSCore - OneSignalXCFramework/OneSignalUser - - OneSignalXCFramework/OneSignalLocation (5.2.0): + - OneSignalXCFramework/OneSignalLocation (5.2.5): - OneSignalXCFramework/OneSignalCore - OneSignalXCFramework/OneSignalNotifications - OneSignalXCFramework/OneSignalOSCore - OneSignalXCFramework/OneSignalUser - - OneSignalXCFramework/OneSignalNotifications (5.2.0): + - OneSignalXCFramework/OneSignalNotifications (5.2.5): - OneSignalXCFramework/OneSignalCore - OneSignalXCFramework/OneSignalExtension - OneSignalXCFramework/OneSignalOutcomes - - OneSignalXCFramework/OneSignalOSCore (5.2.0): + - OneSignalXCFramework/OneSignalOSCore (5.2.5): - OneSignalXCFramework/OneSignalCore - - OneSignalXCFramework/OneSignalOutcomes (5.2.0): + - OneSignalXCFramework/OneSignalOutcomes (5.2.5): - OneSignalXCFramework/OneSignalCore - - OneSignalXCFramework/OneSignalUser (5.2.0): + - OneSignalXCFramework/OneSignalUser (5.2.5): - OneSignalXCFramework/OneSignalCore - OneSignalXCFramework/OneSignalNotifications - OneSignalXCFramework/OneSignalOSCore @@ -212,7 +212,7 @@ PODS: - shared_preferences_foundation (0.0.1): - Flutter - FlutterMacOS - - sqflite (0.0.3): + - sqflite_darwin (0.0.4): - Flutter - FlutterMacOS - url_launcher_ios (0.0.1): @@ -232,7 +232,7 @@ DEPENDENCIES: - permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`) - share_plus (from `.symlinks/plugins/share_plus/ios`) - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`) - - sqflite (from `.symlinks/plugins/sqflite/darwin`) + - sqflite_darwin (from `.symlinks/plugins/sqflite_darwin/darwin`) - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) SPEC REPOS: @@ -285,17 +285,17 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/share_plus/ios" shared_preferences_foundation: :path: ".symlinks/plugins/shared_preferences_foundation/darwin" - sqflite: - :path: ".symlinks/plugins/sqflite/darwin" + sqflite_darwin: + :path: ".symlinks/plugins/sqflite_darwin/darwin" url_launcher_ios: :path: ".symlinks/plugins/url_launcher_ios/ios" SPEC CHECKSUMS: device_info_plus: 97af1d7e84681a90d0693e63169a5d50e0839a0d Firebase: 0312a2352584f782ea56f66d91606891d4607f06 - firebase_analytics: 3a9263fedec72970e6bd30a7132bbdd386de2c14 + firebase_analytics: cc06e24d6a2343c44f845b3112143db72d10ef78 firebase_core: a626d00494efa398e7c54f25f1454a64c8abf197 - firebase_crashlytics: 0b7cb41f5fb3b6889d0fb408cfce3cc7a4247061 + firebase_crashlytics: 17e856fabec68d993662abaf2f6fe2413f0abece firebase_database: 2713033e426b176d4fe5e7195f3d19aa1b549a91 FirebaseAnalytics: ec00fe8b93b41dc6fe4a28784b8e51da0647a248 FirebaseAppCheckInterop: 6a1757cfd4067d8e00fccd14fcc1b8fd78cfac07 @@ -309,23 +309,23 @@ SPEC CHECKSUMS: FirebaseSessions: dbd14adac65ce996228652c1fc3a3f576bdf3ecc FirebaseSharedSwift: 20530f495084b8d840f78a100d8c5ee613375f6e Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 - flutter_secure_storage: 23fc622d89d073675f2eaa109381aefbcf5a49be + flutter_secure_storage: d33dac7ae2ea08509be337e775f6b59f1ff45f12 GoogleAppMeasurement: 9abf64b682732fed36da827aa2a68f0221fd2356 GoogleDataTransport: 6c09b596d841063d76d4288cc2d2f42cc36e1e2a GoogleUtilities: ea963c370a38a8069cc5f7ba4ca849a60b6d7d15 image_picker_ios: c560581cceedb403a6ff17f2f816d7fea1421fc1 leveldb-library: e8eadf9008a61f9e1dde3978c086d2b6d9b9dc28 nanopb: 438bc412db1928dac798aa6fd75726007be04262 - onesignal_flutter: 5ce68a29861960168e81101cb1bd685d264361de - OneSignalXCFramework: bdf74fdc06888f9466dc21e826fe1549ed143095 - path_provider_foundation: 3784922295ac71e43754bd15e0653ccfd36a147c + onesignal_flutter: f441aaefa112988a1e786c695a30695ad0291763 + OneSignalXCFramework: 76ca508fc2b941317729d13fdec96817f8ef5b3b + path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46 permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2 PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 PromisesSwift: 9d77319bbe72ebf6d872900551f7eeba9bce2851 share_plus: 8875f4f2500512ea181eef553c3e27dba5135aad - shared_preferences_foundation: b4c3b4cddf1c21f02770737f147a3f5da9d39695 - sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec - url_launcher_ios: bbd758c6e7f9fd7b5b1d4cde34d2b95fcce5e812 + shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78 + sqflite_darwin: a553b1fd6fe66f53bbb0fe5b4f5bab93f08d7a13 + url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe PODFILE CHECKSUM: 4243bd7f9184f79552dd731a7c9d5cad03bd2706 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 e31fd2b..23a1e59 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 @@ -61,7 +61,9 @@ class CreateUnitBloc extends Bloc { var storage = const FlutterSecureStorage(); var userId = await storage.read(key: UserModel.userUuidKey) ?? ''; - Map communityBody = {'communityName': event.communityName}; + Map communityBody = { + 'communityName': event.communityName + }; final response = await HomeCreation.createCommunity(communityBody); if (response['data']['uuid'] != '') { // final result = @@ -75,15 +77,22 @@ class CreateUnitBloc extends Bloc { if (buildingId.isNotEmpty) { final floorId = await _createFloor( - floorName: event.floorName, buildingId: buildingId, userId: userId); + floorName: event.floorName, + buildingId: buildingId, + userId: userId); if (floorId.isNotEmpty) { - final unitId = - await _createUnit(unitName: event.unitName, floorId: floorId, userId: userId); + final unitId = await _createUnit( + unitName: event.unitName, floorId: floorId, userId: userId); if (unitId.isNotEmpty && rooms.isNotEmpty) { rooms.forEach((room) async { - await _createNewRoom(roomName: room, unitId: unitId, userId: userId); + await _createNewRoom( + roomName: room, + unitId: unitId, + userId: userId, + communityId: response['data']['uuid'], + ); }); } } @@ -99,7 +108,8 @@ class CreateUnitBloc extends Bloc { } } -Future _assignToCommunity({required String communityId, required String userId}) async { +Future _assignToCommunity( + {required String communityId, required String userId}) async { try { Map body = { 'communityUuid': communityId, @@ -114,9 +124,14 @@ Future _assignToCommunity({required String communityId, required String us } Future _createBuilding( - {required String buildingName, required String communityId, required String userId}) async { + {required String buildingName, + required String communityId, + required String userId}) async { try { - Map body = {'buildingName': buildingName, 'communityUuid': communityId}; + Map body = { + 'buildingName': buildingName, + 'communityUuid': communityId + }; final response = await HomeCreation.createBuilding(body); // if (response['data']['uuid'] != '') { // final result = await _assignToBuilding(buildingId: response['data']['uuid'], userId: userId); @@ -130,7 +145,8 @@ Future _createBuilding( } } -Future _assignToBuilding({required String buildingId, required String userId}) async { +Future _assignToBuilding( + {required String buildingId, required String userId}) async { try { Map body = { 'buildingUuid': buildingId, @@ -145,9 +161,14 @@ Future _assignToBuilding({required String buildingId, required String user } Future _createFloor( - {required String floorName, required String buildingId, required String userId}) async { + {required String floorName, + required String buildingId, + required String userId}) async { try { - Map body = {'floorName': floorName, 'buildingUuid': buildingId}; + Map body = { + 'floorName': floorName, + 'buildingUuid': buildingId + }; final response = await HomeCreation.createFloor(body); // if (response['data']['uuid'] != '') { // final result = await _assignToFloor(buildingId: response['data']['uuid'], userId: userId); @@ -161,7 +182,8 @@ Future _createFloor( } } -Future _assignToFloor({required String buildingId, required String userId}) async { +Future _assignToFloor( + {required String buildingId, required String userId}) async { try { Map body = { 'floorUuid': buildingId, @@ -176,12 +198,15 @@ Future _assignToFloor({required String buildingId, required String userId} } Future _createUnit( - {required String unitName, required String floorId, required String userId}) async { + {required String unitName, + required String floorId, + required String userId}) async { try { Map body = {'unitName': unitName, 'floorUuid': floorId}; final response = await HomeCreation.createUnit(body); if (response['data']['uuid'] != '') { - final result = await _assignToUnit(unitId: response['data']['uuid'], userId: userId); + final result = + await _assignToUnit(unitId: response['data']['uuid'], userId: userId); return result ? response['data']['uuid'] : ''; } else { @@ -192,7 +217,8 @@ Future _createUnit( } } -Future _assignToUnit({required String unitId, required String userId}) async { +Future _assignToUnit( + {required String unitId, required String userId}) async { try { Map body = { 'unitUuid': unitId, @@ -207,10 +233,14 @@ Future _assignToUnit({required String unitId, required String userId}) asy } Future _createNewRoom( - {required String roomName, required String unitId, required String userId}) async { + {required String roomName, + required String unitId, + required String userId, + required String communityId}) async { try { - Map body = {'roomName': roomName, 'unitUuid': unitId}; - final response = await HomeCreation.createRoom(body); + Map body = {'subspaceName': roomName}; + final response = await HomeCreation.createRoom( + communityId: communityId, spaceId: unitId, body: body); // if (response['data']['uuid'] != '') { // final result = await _assignToRoom(roomId: response['data']['uuid'], userId: userId); @@ -223,7 +253,8 @@ Future _createNewRoom( } } -Future _assignToRoom({required String roomId, required String userId}) async { +Future _assignToRoom( + {required String roomId, required String userId}) async { try { Map body = { 'roomUuid': roomId, 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 f225077..359d7bb 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 @@ -107,10 +107,13 @@ class ManageUnitBloc extends Bloc { } _addNewRoom(AddNewRoom event, Emitter emit) async { - Map body = {'roomName': event.roomName}; + Map body = {'subspaceName': event.roomName}; try { emit(LoadingState()); - final response = await HomeCreation.createRoom(body); + final response = await HomeCreation.createRoom( + communityId: event.unit.community.uuid, + spaceId: event.unit.id, + body: body); if (response['data']['uuid'] != '') { final roomsList = await SpacesAPI.getSubSpaceBySpaceId( event.unit.community.uuid, event.unit.id); diff --git a/lib/features/menu/view/widgets/manage_home/room_screen.dart b/lib/features/menu/view/widgets/manage_home/room_screen.dart index 1ab85ab..f8fe951 100644 --- a/lib/features/menu/view/widgets/manage_home/room_screen.dart +++ b/lib/features/menu/view/widgets/manage_home/room_screen.dart @@ -109,7 +109,7 @@ class RoomsView extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.start, children: [ BodyMedium( - text: 'Add Space', + text: 'Add Room', fontColor: ColorsManager.primaryColor, ), ], diff --git a/lib/services/api/api_links_endpoints.dart b/lib/services/api/api_links_endpoints.dart index 26b4279..3338fac 100644 --- a/lib/services/api/api_links_endpoints.dart +++ b/lib/services/api/api_links_endpoints.dart @@ -65,6 +65,11 @@ abstract class ApiEndpoints { //PUT static const String renameUnit = '/unit/{unitUuid}'; + //Subspace Module +//POST + static const String addSubSpace = + '/communities/{communityUuid}/spaces/{spaceUuid}/subspaces'; + ///Room Module //POST static const String addRoom = '/room'; @@ -113,8 +118,10 @@ abstract class ApiEndpoints { static const String deviceByUuid = '/device/{deviceUuid}'; static const String deviceFunctions = '/device/{deviceUuid}/functions'; static const String gatewayApi = '/device/gateway/{gatewayUuid}/devices'; - static const String deviceFunctionsStatus = '/device/{deviceUuid}/functions/status'; - static const String powerClamp = '/device/{powerClampUuid}/power-clamp/status'; + static const String deviceFunctionsStatus = + '/device/{deviceUuid}/functions/status'; + static const String powerClamp = + '/device/{powerClampUuid}/power-clamp/status'; ///Device Permission Module //POST diff --git a/lib/services/api/devices_api.dart b/lib/services/api/devices_api.dart index c039588..319bdef 100644 --- a/lib/services/api/devices_api.dart +++ b/lib/services/api/devices_api.dart @@ -1,5 +1,6 @@ import 'dart:async'; import 'dart:convert'; +import 'dart:developer'; 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'; @@ -174,8 +175,6 @@ class DevicesAPI { return response; } catch (e) { // Log the error if needed - print("Error fetching devices for room: $e"); - // Return an empty list in case of error return []; } diff --git a/lib/services/api/home_creation_api.dart b/lib/services/api/home_creation_api.dart index 9c2e3b4..5b2816b 100644 --- a/lib/services/api/home_creation_api.dart +++ b/lib/services/api/home_creation_api.dart @@ -4,7 +4,8 @@ import 'package:syncrow_app/services/api/http_service.dart'; class HomeCreation { static final HTTPService _httpService = HTTPService(); - static Future> createCommunity(Map body) async { + static Future> createCommunity( + Map body) async { try { final response = await _httpService.post( path: ApiEndpoints.addCommunity, @@ -20,7 +21,8 @@ class HomeCreation { } } - static Future> assignUserToCommunity(Map body) async { + static Future> assignUserToCommunity( + Map body) async { try { final response = await _httpService.post( path: ApiEndpoints.addCommunityToUser, @@ -36,7 +38,8 @@ class HomeCreation { } } - static Future> createBuilding(Map body) async { + static Future> createBuilding( + Map body) async { try { final response = await _httpService.post( path: ApiEndpoints.addBuilding, @@ -52,7 +55,8 @@ class HomeCreation { } } - static Future> assignUserToBuilding(Map body) async { + static Future> assignUserToBuilding( + Map body) async { try { final response = await _httpService.post( path: ApiEndpoints.addBuildingToUser, @@ -68,7 +72,8 @@ class HomeCreation { } } - static Future> createFloor(Map body) async { + static Future> createFloor( + Map body) async { try { final response = await _httpService.post( path: ApiEndpoints.addFloor, @@ -84,7 +89,8 @@ class HomeCreation { } } - static Future> assignUserToFloor(Map body) async { + static Future> assignUserToFloor( + Map body) async { try { final response = await _httpService.post( path: ApiEndpoints.addBuildingToUser, @@ -100,7 +106,8 @@ class HomeCreation { } } - static Future> createUnit(Map body) async { + static Future> createUnit( + Map body) async { try { final response = await _httpService.post( path: ApiEndpoints.addUnit, @@ -116,7 +123,8 @@ class HomeCreation { } } - static Future> assignUserToUnit(Map body) async { + static Future> assignUserToUnit( + Map body) async { try { final response = await _httpService.post( path: ApiEndpoints.addUnitToUser, @@ -132,10 +140,17 @@ class HomeCreation { } } - static Future> createRoom(Map body) async { + static Future> createRoom({ + required String communityId, + required String spaceId, + required Map body, + }) async { try { + final fullPath = ApiEndpoints.addSubSpace + .replaceAll('{communityUuid}', communityId) + .replaceAll('{spaceUuid}', spaceId); final response = await _httpService.post( - path: ApiEndpoints.addRoom, + path: fullPath, body: body, showServerMessage: false, expectedResponseModel: (json) { @@ -148,8 +163,8 @@ class HomeCreation { } } - - static Future> assignUserToRoom(Map body) async { + static Future> assignUserToRoom( + Map body) async { try { final response = await _httpService.post( path: ApiEndpoints.addRoomToUser, diff --git a/lib/services/api/home_management_api.dart b/lib/services/api/home_management_api.dart index c9183b7..63b5f22 100644 --- a/lib/services/api/home_management_api.dart +++ b/lib/services/api/home_management_api.dart @@ -39,10 +39,6 @@ class HomeManagementAPI { final path = ApiEndpoints.spaceDevices .replaceAll("{communityUuid}", communityUuid) .replaceAll("{spaceUuid}", spaceUuid); - - // Debugging: Log the path - print("Fetching devices with path: $path"); - await _httpService.get( path: path, showServerMessage: false, @@ -54,10 +50,8 @@ class HomeManagementAPI { ); // Debugging: Log successful fetch - print("Successfully fetched ${list.length} devices."); } catch (e) { // Log the error for debugging - print("Error fetching devices for the unit: $e"); } return list;