Skip to content

Commit 3bb633b

Browse files
committed
fix(content_management): resolve errors in EditSourceBloc
Corrects multiple errors in `EditSourceBloc`: - Fixes type inference for `Future.wait` by explicitly handling the returned list of dynamic objects. - Replaces incorrect syntax for finding the selected language with a robust `try-catch` block around `firstWhere`. - Correctly passes pagination parameters by wrapping the cursor in a `PaginationOptions` object. - Refines search logic to prevent sending filters with empty search terms. - Removes unnecessary casts.
1 parent 5f5e4bb commit 3bb633b

File tree

1 file changed

+31
-14
lines changed

1 file changed

+31
-14
lines changed

lib/content_management/bloc/edit_source/edit_source_bloc.dart

Lines changed: 31 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ class EditSourceBloc extends Bloc<EditSourceEvent, EditSourceState> {
5959
) async {
6060
emit(state.copyWith(status: EditSourceStatus.loading));
6161
try {
62-
final responses = await Future.wait([
62+
final responses = await Future.wait<dynamic>([
6363
_sourcesRepository.read(id: _sourceId),
6464
_countriesRepository.readAll(
6565
sort: [const SortOption('name', SortOrder.asc)],
@@ -73,9 +73,16 @@ class EditSourceBloc extends Bloc<EditSourceEvent, EditSourceState> {
7373
final countriesPaginated = responses[1] as PaginatedResponse<Country>;
7474
final languagesPaginated = responses[2] as PaginatedResponse<Language>;
7575

76-
final selectedLanguage = languagesPaginated.items
77-
orElse: () => source.language,
78-
);
76+
Language? selectedLanguage;
77+
try {
78+
// Find the equivalent language object from the full list.
79+
// This ensures the DropdownButton can identify it by reference.
80+
selectedLanguage = languagesPaginated.items.firstWhere(
81+
(listLanguage) => listLanguage.id == source.language?.id,
82+
);
83+
} catch (_) {
84+
selectedLanguage = source.language;
85+
}
7986

8087
emit(
8188
state.copyWith(
@@ -241,9 +248,10 @@ class EditSourceBloc extends Bloc<EditSourceEvent, EditSourceState> {
241248
emit(state.copyWith(countrySearchTerm: event.searchTerm));
242249
try {
243250
final countriesResponse = await _countriesRepository.readAll(
244-
filter: {'name': event.searchTerm},
251+
filter:
252+
event.searchTerm.isNotEmpty ? {'name': event.searchTerm} : null,
245253
sort: [const SortOption('name', SortOrder.asc)],
246-
) as PaginatedResponse<Country>;
254+
);
247255

248256
emit(
249257
state.copyWith(
@@ -272,10 +280,14 @@ class EditSourceBloc extends Bloc<EditSourceEvent, EditSourceState> {
272280

273281
try {
274282
final countriesResponse = await _countriesRepository.readAll(
275-
cursor: state.countriesCursor,
276-
filter: {'name': state.countrySearchTerm},
283+
pagination: state.countriesCursor != null
284+
? PaginationOptions(cursor: state.countriesCursor)
285+
: null,
286+
filter: state.countrySearchTerm.isNotEmpty
287+
? {'name': state.countrySearchTerm}
288+
: null,
277289
sort: [const SortOption('name', SortOrder.asc)],
278-
) as PaginatedResponse<Country>;
290+
);
279291

280292
emit(
281293
state.copyWith(
@@ -304,9 +316,10 @@ class EditSourceBloc extends Bloc<EditSourceEvent, EditSourceState> {
304316
emit(state.copyWith(languageSearchTerm: event.searchTerm));
305317
try {
306318
final languagesResponse = await _languagesRepository.readAll(
307-
filter: {'name': event.searchTerm},
319+
filter:
320+
event.searchTerm.isNotEmpty ? {'name': event.searchTerm} : null,
308321
sort: [const SortOption('name', SortOrder.asc)],
309-
) as PaginatedResponse<Language>;
322+
);
310323

311324
emit(
312325
state.copyWith(
@@ -335,10 +348,14 @@ class EditSourceBloc extends Bloc<EditSourceEvent, EditSourceState> {
335348

336349
try {
337350
final languagesResponse = await _languagesRepository.readAll(
338-
cursor: state.languagesCursor,
339-
filter: {'name': state.languageSearchTerm},
351+
pagination: state.languagesCursor != null
352+
? PaginationOptions(cursor: state.languagesCursor)
353+
: null,
354+
filter: state.languageSearchTerm.isNotEmpty
355+
? {'name': state.languageSearchTerm}
356+
: null,
340357
sort: [const SortOption('name', SortOrder.asc)],
341-
) as PaginatedResponse<Language>;
358+
);
342359

343360
emit(
344361
state.copyWith(

0 commit comments

Comments
 (0)