Skip to content

Commit c5501ae

Browse files
committed
refactor(countries): use generic data repository
- Use HtDataRepository<Country> - Use readAll method - Use startAfterId param for cursor
1 parent 065c01c commit c5501ae

File tree

1 file changed

+14
-14
lines changed

1 file changed

+14
-14
lines changed

lib/headlines-feed/bloc/countries_filter_bloc.dart

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@ import 'dart:async';
33
import 'package:bloc/bloc.dart';
44
import 'package:bloc_concurrency/bloc_concurrency.dart'; // For transformers
55
import 'package:equatable/equatable.dart';
6-
import 'package:ht_countries_client/ht_countries_client.dart'; // For Country model and exceptions
7-
import 'package:ht_countries_repository/ht_countries_repository.dart';
8-
// For PaginatedResponse
6+
import 'package:ht_data_repository/ht_data_repository.dart'; // Generic Data Repository
7+
import 'package:ht_shared/ht_shared.dart'
8+
show
9+
Country,
10+
HtHttpException; // Shared models, including Country and standardized exceptions
911

1012
part 'countries_filter_event.dart';
1113
part 'countries_filter_state.dart';
@@ -14,14 +16,14 @@ part 'countries_filter_state.dart';
1416
/// Manages the state for fetching and displaying countries for filtering.
1517
///
1618
/// Handles initial fetching and pagination of countries using the
17-
/// provided [HtCountriesRepository].
19+
/// provided [HtDataRepository].
1820
/// {@endtemplate}
1921
class CountriesFilterBloc
2022
extends Bloc<CountriesFilterEvent, CountriesFilterState> {
2123
/// {@macro countries_filter_bloc}
2224
///
23-
/// Requires a [HtCountriesRepository] to interact with the data layer.
24-
CountriesFilterBloc({required HtCountriesRepository countriesRepository})
25+
/// Requires a [HtDataRepository<Country>] to interact with the data layer.
26+
CountriesFilterBloc({required HtDataRepository<Country> countriesRepository})
2527
: _countriesRepository = countriesRepository,
2628
super(const CountriesFilterState()) {
2729
on<CountriesFilterRequested>(
@@ -34,7 +36,7 @@ class CountriesFilterBloc
3436
);
3537
}
3638

37-
final HtCountriesRepository _countriesRepository;
39+
final HtDataRepository<Country> _countriesRepository;
3840

3941
/// Number of countries to fetch per page.
4042
static const _countriesLimit = 20;
@@ -53,8 +55,7 @@ class CountriesFilterBloc
5355
emit(state.copyWith(status: CountriesFilterStatus.loading));
5456

5557
try {
56-
// Note: Repository uses 'cursor' parameter name here
57-
final response = await _countriesRepository.fetchCountries(
58+
final response = await _countriesRepository.readAll(
5859
limit: _countriesLimit,
5960
);
6061
emit(
@@ -66,7 +67,7 @@ class CountriesFilterBloc
6667
clearError: true, // Clear any previous error
6768
),
6869
);
69-
} on CountryFetchFailure catch (e) {
70+
} on HtHttpException catch (e) {
7071
emit(state.copyWith(status: CountriesFilterStatus.failure, error: e));
7172
} catch (e) {
7273
// Catch unexpected errors
@@ -87,10 +88,9 @@ class CountriesFilterBloc
8788
emit(state.copyWith(status: CountriesFilterStatus.loadingMore));
8889

8990
try {
90-
// Note: Repository uses 'cursor' parameter name here
91-
final response = await _countriesRepository.fetchCountries(
91+
final response = await _countriesRepository.readAll(
9292
limit: _countriesLimit,
93-
cursor: state.cursor, // Use the cursor from the current state
93+
startAfterId: state.cursor, // Use the cursor from the current state
9494
);
9595
emit(
9696
state.copyWith(
@@ -101,7 +101,7 @@ class CountriesFilterBloc
101101
cursor: response.cursor,
102102
),
103103
);
104-
} on CountryFetchFailure catch (e) {
104+
} on HtHttpException catch (e) {
105105
// Keep existing data but indicate failure
106106
emit(state.copyWith(status: CountriesFilterStatus.failure, error: e));
107107
} catch (e) {

0 commit comments

Comments
 (0)