@@ -3,9 +3,11 @@ import 'dart:async';
3
3
import 'package:bloc/bloc.dart' ;
4
4
import 'package:bloc_concurrency/bloc_concurrency.dart' ; // For transformers
5
5
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
9
11
10
12
part 'sources_filter_event.dart' ;
11
13
part 'sources_filter_state.dart' ;
@@ -14,13 +16,13 @@ part 'sources_filter_state.dart';
14
16
/// Manages the state for fetching and displaying sources for filtering.
15
17
///
16
18
/// Handles initial fetching and pagination of sources using the
17
- /// provided [HtSourcesRepository ] .
19
+ /// provided [HtDataRepository ] .
18
20
/// {@endtemplate}
19
21
class SourcesFilterBloc extends Bloc <SourcesFilterEvent , SourcesFilterState > {
20
22
/// {@macro sources_filter_bloc}
21
23
///
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})
24
26
: _sourcesRepository = sourcesRepository,
25
27
super (const SourcesFilterState ()) {
26
28
on < SourcesFilterRequested > (
@@ -33,7 +35,7 @@ class SourcesFilterBloc extends Bloc<SourcesFilterEvent, SourcesFilterState> {
33
35
);
34
36
}
35
37
36
- final HtSourcesRepository _sourcesRepository;
38
+ final HtDataRepository < Source > _sourcesRepository;
37
39
38
40
/// Number of sources to fetch per page.
39
41
static const _sourcesLimit = 20 ;
@@ -52,9 +54,7 @@ class SourcesFilterBloc extends Bloc<SourcesFilterEvent, SourcesFilterState> {
52
54
emit (state.copyWith (status: SourcesFilterStatus .loading));
53
55
54
56
try {
55
- final response = await _sourcesRepository.getSources (
56
- limit: _sourcesLimit,
57
- );
57
+ final response = await _sourcesRepository.readAll (limit: _sourcesLimit);
58
58
emit (
59
59
state.copyWith (
60
60
status: SourcesFilterStatus .success,
@@ -64,7 +64,7 @@ class SourcesFilterBloc extends Bloc<SourcesFilterEvent, SourcesFilterState> {
64
64
clearError: true , // Clear any previous error
65
65
),
66
66
);
67
- } on SourceFetchFailure catch (e) {
67
+ } on HtHttpException catch (e) {
68
68
emit (state.copyWith (status: SourcesFilterStatus .failure, error: e));
69
69
} catch (e) {
70
70
// Catch unexpected errors
@@ -85,7 +85,7 @@ class SourcesFilterBloc extends Bloc<SourcesFilterEvent, SourcesFilterState> {
85
85
emit (state.copyWith (status: SourcesFilterStatus .loadingMore));
86
86
87
87
try {
88
- final response = await _sourcesRepository.getSources (
88
+ final response = await _sourcesRepository.readAll (
89
89
limit: _sourcesLimit,
90
90
startAfterId: state.cursor, // Use the cursor from the current state
91
91
);
@@ -98,7 +98,7 @@ class SourcesFilterBloc extends Bloc<SourcesFilterEvent, SourcesFilterState> {
98
98
cursor: response.cursor,
99
99
),
100
100
);
101
- } on SourceFetchFailure catch (e) {
101
+ } on HtHttpException catch (e) {
102
102
// Keep existing data but indicate failure
103
103
emit (state.copyWith (status: SourcesFilterStatus .failure, error: e));
104
104
} catch (e) {
0 commit comments