Skip to content

Commit a3a3752

Browse files
committed
[UPDATE] home bloc
1 parent 03afcd3 commit a3a3752

File tree

3 files changed

+41
-45
lines changed

3 files changed

+41
-45
lines changed

.idea/workspace.xml

Lines changed: 1 addition & 11 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

android/gradle.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
org.gradle.jvmargs=-Xmx1536M
2+
android.enableR8=true

lib/pages/home_page/home_bloc.dart

Lines changed: 39 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,13 @@ class HomeBloc implements BaseBloc {
6060
final retryNextPageController = PublishSubject<void>();
6161
final retryFirstPageController = PublishSubject<void>();
6262
final toggleFavoritedController = PublishSubject<String>();
63+
final controllers = [
64+
queryController,
65+
loadNextPageController,
66+
retryNextPageController,
67+
retryFirstPageController,
68+
toggleFavoritedController,
69+
];
6370

6471
/// Debounce query stream
6572
final searchString$ = queryController
@@ -124,51 +131,26 @@ class HomeBloc implements BaseBloc {
124131
),
125132
).publishValueSeededDistinct(seedValue: HomePageState.initial());
126133

127-
final message$ = toggleFavoritedController
128-
.groupBy((id) => id)
129-
.map((group$) => group$.throttleTime(Duration(milliseconds: 600)))
130-
.flatMap((group$) => group$)
131-
.asyncExpand((id) => Stream.fromFuture(sharedPref.toggleFavorite(id)))
132-
.withLatestFrom(
133-
state$,
134-
(result, HomePageState item) => HomePageMessage.fromResult(
135-
result,
136-
item.books.firstWhere(
137-
(book) => book.id == result.id,
138-
orElse: () => null,
139-
),
140-
),
141-
)
142-
.publish();
134+
final message$ =
135+
_getMessage$(toggleFavoritedController, sharedPref, state$);
143136

144137
final favoriteCount$ = sharedPref.favoritedIds$
145138
.map((ids) => ids.length)
146139
.publishValueSeededDistinct(seedValue: 0);
147140

148-
/// DisposeBag
149-
final bag = DisposeBag(
150-
[
151-
queryController,
152-
loadNextPageController,
153-
retryNextPageController,
154-
retryFirstPageController,
155-
toggleFavoritedController,
156-
//
141+
return HomeBloc._(
142+
queryController.add,
143+
() => loadNextPageController.add(null),
144+
state$,
145+
DisposeBag([
146+
...controllers,
157147
message$.listen((message) => print('[MESSAGE] $message')),
158148
favoriteCount$.listen((count) => print('[FAV_COUNT] $count')),
159149
state$.listen((state) => print('[STATE] $state')),
160-
//
161150
state$.connect(),
162151
message$.connect(),
163152
favoriteCount$.connect(),
164-
],
165-
);
166-
167-
return HomeBloc._(
168-
queryController.add,
169-
() => loadNextPageController.add(null),
170-
state$,
171-
bag.dispose,
153+
]).dispose,
172154
() => retryNextPageController.add(null),
173155
() => retryFirstPageController.add(null),
174156
toggleFavoritedController.add,
@@ -178,6 +160,29 @@ class HomeBloc implements BaseBloc {
178160
}
179161
}
180162

163+
ConnectableStream<HomePageMessage> _getMessage$(
164+
PublishSubject<String> toggleFavoritedController,
165+
SharedPref sharedPref,
166+
DistinctValueConnectableStream<HomePageState> state$,
167+
) {
168+
return toggleFavoritedController
169+
.groupBy((id) => id)
170+
.map((group$) => group$.throttleTime(Duration(milliseconds: 600)))
171+
.flatMap((group$) => group$)
172+
.asyncExpand((id) => Stream.fromFuture(sharedPref.toggleFavorite(id)))
173+
.withLatestFrom(
174+
state$,
175+
(result, HomePageState item) => HomePageMessage.fromResult(
176+
result,
177+
item.books.firstWhere(
178+
(book) => book.id == result.id,
179+
orElse: () => null,
180+
),
181+
),
182+
)
183+
.publish();
184+
}
185+
181186
/// Process [intent], convert [intent] to [Stream] of [PartialStateChange]s
182187
Stream<PartialStateChange> _processIntent$(
183188
HomeIntent intent,

0 commit comments

Comments
 (0)