made communities paginatable.

This commit is contained in:
Faris Armoush
2025-06-22 11:11:25 +03:00
parent 2f233db332
commit 51c088d998
8 changed files with 272 additions and 51 deletions

View File

@ -1,6 +1,6 @@
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/models/communities_pagination_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';
@ -15,28 +15,25 @@ class RemoteCommunitiesService implements CommunitiesService {
static const _defaultErrorMessage = 'Failed to load communities';
@override
Future<List<CommunityModel>> getCommunity(LoadCommunitiesParam param) async {
Future<CommunitiesPaginationModel> getCommunity(LoadCommunitiesParam param) async {
final projectUuid = await ProjectManager.getProjectUUID();
if (projectUuid == null) throw APIException('Project UUID is not set');
try {
final allCommunities = <CommunityModel>[];
await _httpService.get(
final response = await _httpService.get(
path: await _makeUrl(),
queryParameters: {
'page': param.page,
'size': param.size,
'includeSpaces': param.includeSpaces,
if (param.search.isNotEmpty) 'search': param.search,
},
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 CommunitiesPaginationModel.fromJson(json as Map<String, dynamic>);
},
);
return allCommunities;
return response;
} on DioException catch (e) {
final message = e.response?.data as Map<String, dynamic>?;
final error = message?['error'] as Map<String, dynamic>?;