diff --git a/lib/pages/space_management_v2/modules/communities/data/services/remote_communities_service.dart b/lib/pages/space_management_v2/modules/communities/data/services/remote_communities_service.dart index b6cfa8fc..36682bb4 100644 --- a/lib/pages/space_management_v2/modules/communities/data/services/remote_communities_service.dart +++ b/lib/pages/space_management_v2/modules/communities/data/services/remote_communities_service.dart @@ -1,6 +1,8 @@ +import 'package:dio/dio.dart'; import 'package:syncrow_web/pages/space_management_v2/modules/communities/domain/models/community_model.dart'; import 'package:syncrow_web/pages/space_management_v2/modules/communities/domain/params/load_communities_param.dart'; import 'package:syncrow_web/pages/space_management_v2/modules/communities/domain/services/communities_service.dart'; +import 'package:syncrow_web/services/api/api_exception.dart'; import 'package:syncrow_web/services/api/http_service.dart'; class RemoteCommunitiesService implements CommunitiesService { @@ -8,13 +10,25 @@ class RemoteCommunitiesService implements CommunitiesService { final HTTPService _httpService; + static const _defaultErrorMessage = 'Failed to load communities'; + @override Future> getCommunity(LoadCommunitiesParam param) async { - return _httpService.get( - path: '/api/communities/', - expectedResponseModel: (json) => (json as List) - .map((e) => CommunityModel.fromJson(e as Map)) - .toList(), - ); + try { + return _httpService.get( + path: '/api/communities/', + expectedResponseModel: (json) => (json as List) + .map((e) => CommunityModel.fromJson(e as Map)) + .toList(), + ); + } on DioException catch (e) { + final message = e.response?.data as Map?; + final error = message?['error'] as Map?; + final errorMessage = error?['error'] as String? ?? ''; + throw APIException(errorMessage); + } catch (e) { + final formattedErrorMessage = [_defaultErrorMessage, '$e'].join(': '); + throw APIException(formattedErrorMessage); + } } } diff --git a/lib/pages/space_management_v2/modules/devices/data/services/remote_device_service.dart b/lib/pages/space_management_v2/modules/devices/data/services/remote_device_service.dart index 88760222..df1a9f76 100644 --- a/lib/pages/space_management_v2/modules/devices/data/services/remote_device_service.dart +++ b/lib/pages/space_management_v2/modules/devices/data/services/remote_device_service.dart @@ -35,9 +35,10 @@ class RemoteDeviceService implements DeviceService { final message = e.response?.data as Map?; final error = message?['error'] as Map?; final errorMessage = error?['error'] as String? ?? ''; - final formattedErrorMessage = [_defaultErrorMessage, errorMessage].join( - ': ', - ); + final formattedErrorMessage = [ + _defaultErrorMessage, + errorMessage, + ].join(': '); throw APIException(formattedErrorMessage); } catch (e) { final formattedErrorMessage = [_defaultErrorMessage, '$e'].join(': '); diff --git a/lib/pages/space_management_v2/modules/space_details/data/services/remote_space_details_service.dart b/lib/pages/space_management_v2/modules/space_details/data/services/remote_space_details_service.dart index 5bcc5851..2e999361 100644 --- a/lib/pages/space_management_v2/modules/space_details/data/services/remote_space_details_service.dart +++ b/lib/pages/space_management_v2/modules/space_details/data/services/remote_space_details_service.dart @@ -1,6 +1,8 @@ +import 'package:dio/dio.dart'; import 'package:syncrow_web/pages/space_management_v2/modules/space_details/domain/models/space_details_model.dart'; import 'package:syncrow_web/pages/space_management_v2/modules/space_details/domain/params/load_spaces_param.dart'; import 'package:syncrow_web/pages/space_management_v2/modules/space_details/domain/services/space_details_service.dart'; +import 'package:syncrow_web/services/api/api_exception.dart'; import 'package:syncrow_web/services/api/http_service.dart'; class RemoteSpaceDetailsService implements SpaceDetailsService { @@ -10,6 +12,8 @@ class RemoteSpaceDetailsService implements SpaceDetailsService { required HTTPService httpService, }) : _httpService = httpService; + static const _defaultErrorMessage = 'Failed to load space details'; + @override Future getSpaceDetails(LoadSpacesParam param) async { try { @@ -20,8 +24,17 @@ class RemoteSpaceDetailsService implements SpaceDetailsService { }, ); return response; + } on DioException catch (e) { + final message = e.response?.data as Map?; + final error = message?['error'] as Map?; + final errorMessage = error?['error'] as String? ?? ''; + final formattedErrorMessage = [_defaultErrorMessage, errorMessage].join( + ': ', + ); + throw APIException(formattedErrorMessage); } catch (e) { - throw Exception('Failed to fetch space details: $e'); + final formattedErrorMessage = [_defaultErrorMessage, '$e'].join(': '); + throw APIException(formattedErrorMessage); } } } diff --git a/lib/pages/space_management_v2/modules/tags/presentation/bloc/tags_bloc.dart b/lib/pages/space_management_v2/modules/tags/presentation/bloc/tags_bloc.dart index 0185818d..b4091478 100644 --- a/lib/pages/space_management_v2/modules/tags/presentation/bloc/tags_bloc.dart +++ b/lib/pages/space_management_v2/modules/tags/presentation/bloc/tags_bloc.dart @@ -21,9 +21,7 @@ class TagsBloc extends Bloc { ) async { emit(TagsLoading()); try { - final tags = await _tagsService.loadTags( - event.param, - ); + final tags = await _tagsService.loadTags(event.param); emit(TagsLoaded(tags)); } on APIException catch (e) { emit(TagsFailure(e.message));