Skip to content

Commit ef581fd

Browse files
committed
refactor(sources): use generic data repository
- Use HtDataRepository - Simplify data fetching - Handle HtHttpException
1 parent f11a113 commit ef581fd

File tree

1 file changed

+13
-13
lines changed

1 file changed

+13
-13
lines changed

lib/headlines-feed/bloc/sources_filter_bloc.dart

Lines changed: 13 additions & 13 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-
// For PaginatedResponse
7-
import 'package:ht_sources_client/ht_sources_client.dart'; // Keep existing, also for Source model
8-
import 'package:ht_sources_repository/ht_sources_repository.dart';
6+
import 'package:ht_data_repository/ht_data_repository.dart'; // Generic Data Repository
7+
import 'package:ht_shared/ht_shared.dart'
8+
show
9+
HtHttpException,
10+
Source; // Shared models, including Source and standardized exceptions
911

1012
part 'sources_filter_event.dart';
1113
part 'sources_filter_state.dart';
@@ -14,13 +16,13 @@ part 'sources_filter_state.dart';
1416
/// Manages the state for fetching and displaying sources for filtering.
1517
///
1618
/// Handles initial fetching and pagination of sources using the
17-
/// provided [HtSourcesRepository].
19+
/// provided [HtDataRepository].
1820
/// {@endtemplate}
1921
class SourcesFilterBloc extends Bloc<SourcesFilterEvent, SourcesFilterState> {
2022
/// {@macro sources_filter_bloc}
2123
///
22-
/// Requires a [HtSourcesRepository] to interact with the data layer.
23-
SourcesFilterBloc({required HtSourcesRepository sourcesRepository})
24+
/// Requires a [HtDataRepository<Source>] to interact with the data layer.
25+
SourcesFilterBloc({required HtDataRepository<Source> sourcesRepository})
2426
: _sourcesRepository = sourcesRepository,
2527
super(const SourcesFilterState()) {
2628
on<SourcesFilterRequested>(
@@ -33,7 +35,7 @@ class SourcesFilterBloc extends Bloc<SourcesFilterEvent, SourcesFilterState> {
3335
);
3436
}
3537

36-
final HtSourcesRepository _sourcesRepository;
38+
final HtDataRepository<Source> _sourcesRepository;
3739

3840
/// Number of sources to fetch per page.
3941
static const _sourcesLimit = 20;
@@ -52,9 +54,7 @@ class SourcesFilterBloc extends Bloc<SourcesFilterEvent, SourcesFilterState> {
5254
emit(state.copyWith(status: SourcesFilterStatus.loading));
5355

5456
try {
55-
final response = await _sourcesRepository.getSources(
56-
limit: _sourcesLimit,
57-
);
57+
final response = await _sourcesRepository.readAll(limit: _sourcesLimit);
5858
emit(
5959
state.copyWith(
6060
status: SourcesFilterStatus.success,
@@ -64,7 +64,7 @@ class SourcesFilterBloc extends Bloc<SourcesFilterEvent, SourcesFilterState> {
6464
clearError: true, // Clear any previous error
6565
),
6666
);
67-
} on SourceFetchFailure catch (e) {
67+
} on HtHttpException catch (e) {
6868
emit(state.copyWith(status: SourcesFilterStatus.failure, error: e));
6969
} catch (e) {
7070
// Catch unexpected errors
@@ -85,7 +85,7 @@ class SourcesFilterBloc extends Bloc<SourcesFilterEvent, SourcesFilterState> {
8585
emit(state.copyWith(status: SourcesFilterStatus.loadingMore));
8686

8787
try {
88-
final response = await _sourcesRepository.getSources(
88+
final response = await _sourcesRepository.readAll(
8989
limit: _sourcesLimit,
9090
startAfterId: state.cursor, // Use the cursor from the current state
9191
);
@@ -98,7 +98,7 @@ class SourcesFilterBloc extends Bloc<SourcesFilterEvent, SourcesFilterState> {
9898
cursor: response.cursor,
9999
),
100100
);
101-
} on SourceFetchFailure catch (e) {
101+
} on HtHttpException catch (e) {
102102
// Keep existing data but indicate failure
103103
emit(state.copyWith(status: SourcesFilterStatus.failure, error: e));
104104
} catch (e) {

0 commit comments

Comments
 (0)