implemented space management side bar.

This commit is contained in:
Faris Armoush
2025-06-22 11:04:39 +03:00
parent 20d044f2e5
commit 2f233db332
16 changed files with 808 additions and 21 deletions

View File

@ -1,9 +1,11 @@
import 'package:dio/dio.dart';
import 'package:syncrow_web/pages/common/bloc/project_manager.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';
import 'package:syncrow_web/utils/constants/api_const.dart';
class RemoteCommunitiesService implements CommunitiesService {
const RemoteCommunitiesService(this._httpService);
@ -14,13 +16,27 @@ class RemoteCommunitiesService implements CommunitiesService {
@override
Future<List<CommunityModel>> getCommunity(LoadCommunitiesParam param) async {
final projectUuid = await ProjectManager.getProjectUUID();
if (projectUuid == null) throw APIException('Project UUID is not set');
try {
return _httpService.get(
path: '/api/communities/',
expectedResponseModel: (json) => (json as List<dynamic>)
.map((e) => CommunityModel.fromJson(e as Map<String, dynamic>))
.toList(),
final allCommunities = <CommunityModel>[];
await _httpService.get(
path: await _makeUrl(),
expectedResponseModel: (json) {
final response = json as Map<String, dynamic>;
final jsonData = response['data'] as List<dynamic>? ?? [];
return jsonData
.map(
(jsonItem) => CommunityModel.fromJson(
jsonItem as Map<String, dynamic>,
),
)
.toList();
},
);
return allCommunities;
} on DioException catch (e) {
final message = e.response?.data as Map<String, dynamic>?;
final error = message?['error'] as Map<String, dynamic>?;
@ -31,4 +47,10 @@ class RemoteCommunitiesService implements CommunitiesService {
throw APIException(formattedErrorMessage);
}
}
Future<String> _makeUrl() async {
final projectUuid = await ProjectManager.getProjectUUID();
if (projectUuid == null) throw APIException('Project UUID is required');
return ApiEndpoints.getCommunityList.replaceAll('{projectId}', projectUuid);
}
}