Skip to content

Commit 01df3d4

Browse files
committed
fix(content_management): improve pagination and filtering logic
- Refactor initial data loading to use typed responses - Enhance country and language search to handle empty search terms - Add null safety checks for pagination options - Simplify response handling in various repository calls
1 parent 0936211 commit 01df3d4

File tree

1 file changed

+25
-14
lines changed

1 file changed

+25
-14
lines changed

lib/content_management/bloc/create_source/create_source_bloc.dart

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -58,15 +58,16 @@ class CreateSourceBloc extends Bloc<CreateSourceEvent, CreateSourceState> {
5858
) async {
5959
emit(state.copyWith(status: CreateSourceStatus.loading));
6060
try {
61-
final [countriesPaginated, languagesPaginated] = await Future.wait([
61+
final responses = await Future.wait([
6262
_countriesRepository.readAll(
6363
sort: [const SortOption('name', SortOrder.asc)],
64-
) as Future<PaginatedResponse<Country>>,
64+
),
6565
_languagesRepository.readAll(
6666
sort: [const SortOption('name', SortOrder.asc)],
67-
) as Future<PaginatedResponse<Language>>,
67+
),
6868
]);
69-
69+
final countriesPaginated = responses[0] as PaginatedResponse<Country>;
70+
final languagesPaginated = responses[1] as PaginatedResponse<Language>;
7071
emit(
7172
state.copyWith(
7273
status: CreateSourceStatus.initial,
@@ -193,9 +194,10 @@ class CreateSourceBloc extends Bloc<CreateSourceEvent, CreateSourceState> {
193194
emit(state.copyWith(countrySearchTerm: event.searchTerm));
194195
try {
195196
final countriesResponse = await _countriesRepository.readAll(
196-
filter: {'name': event.searchTerm},
197+
filter:
198+
event.searchTerm.isNotEmpty ? {'name': event.searchTerm} : null,
197199
sort: [const SortOption('name', SortOrder.asc)],
198-
) as PaginatedResponse<Country>;
200+
);
199201

200202
emit(
201203
state.copyWith(
@@ -224,10 +226,14 @@ class CreateSourceBloc extends Bloc<CreateSourceEvent, CreateSourceState> {
224226

225227
try {
226228
final countriesResponse = await _countriesRepository.readAll(
227-
cursor: state.countriesCursor,
228-
filter: {'name': state.countrySearchTerm},
229+
pagination: state.countriesCursor != null
230+
? PaginationOptions(cursor: state.countriesCursor)
231+
: null,
232+
filter: state.countrySearchTerm.isNotEmpty
233+
? {'name': state.countrySearchTerm}
234+
: null,
229235
sort: [const SortOption('name', SortOrder.asc)],
230-
) as PaginatedResponse<Country>;
236+
);
231237

232238
emit(
233239
state.copyWith(
@@ -256,9 +262,10 @@ class CreateSourceBloc extends Bloc<CreateSourceEvent, CreateSourceState> {
256262
emit(state.copyWith(languageSearchTerm: event.searchTerm));
257263
try {
258264
final languagesResponse = await _languagesRepository.readAll(
259-
filter: {'name': event.searchTerm},
265+
filter:
266+
event.searchTerm.isNotEmpty ? {'name': event.searchTerm} : null,
260267
sort: [const SortOption('name', SortOrder.asc)],
261-
) as PaginatedResponse<Language>;
268+
);
262269

263270
emit(
264271
state.copyWith(
@@ -287,10 +294,14 @@ class CreateSourceBloc extends Bloc<CreateSourceEvent, CreateSourceState> {
287294

288295
try {
289296
final languagesResponse = await _languagesRepository.readAll(
290-
cursor: state.languagesCursor,
291-
filter: {'name': state.languageSearchTerm},
297+
pagination: state.languagesCursor != null
298+
? PaginationOptions(cursor: state.languagesCursor)
299+
: null,
300+
filter: state.languageSearchTerm.isNotEmpty
301+
? {'name': state.languageSearchTerm}
302+
: null,
292303
sort: [const SortOption('name', SortOrder.asc)],
293-
) as PaginatedResponse<Language>;
304+
);
294305

295306
emit(
296307
state.copyWith(

0 commit comments

Comments
 (0)