diff --git a/README.md b/README.md
index 3d843de..904d31d 100644
--- a/README.md
+++ b/README.md
@@ -35,22 +35,20 @@ Features:
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index 2608025..23c147f 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -23,7 +23,8 @@
android:icon="@mipmap/ic_launcher"
android:allowBackup="true"
android:fullBackupContent="@xml/backup_rules"
- android:usesCleartextTraffic="true">
+ android:usesCleartextTraffic="true"
+ android:enableOnBackInvokedCallback="true">
{
preferenceRepository ?? locator.get(),
_logger = logger ?? locator.get(),
super(const StoriesState.init()) {
+ on(
+ onLoadStories,
+ transformer: sequential(),
+ );
on(onInitialize);
on(onRefresh);
on(onLoadMore);
- on(onStoryLoaded);
+ on(
+ onStoryLoaded,
+ transformer: sequential(),
+ );
on(onStoryRead);
on(onStoryUnread);
on(onStoriesLoaded);
@@ -88,14 +96,15 @@ class StoriesBloc extends Bloc {
),
);
for (final StoryType type in StoryType.values) {
- await loadStories(type: type, emit: emit);
+ add(LoadStories(type: type));
}
}
- Future loadStories({
- required StoryType type,
- required Emitter emit,
- }) async {
+ Future onLoadStories(
+ LoadStories event,
+ Emitter emit,
+ ) async {
+ final StoryType type = event.type;
if (state.isOfflineReading) {
final List ids =
await _offlineRepository.getCachedStoryIds(type: type);
@@ -121,13 +130,12 @@ class StoriesBloc extends Bloc {
.copyWithStoryIdsUpdated(type: type, to: ids)
.copyWithCurrentPageUpdated(type: type, to: 0),
);
- _hackerNewsRepository
+ await _hackerNewsRepository
.fetchStoriesStream(ids: ids.sublist(0, state.currentPageSize))
.listen((Story story) {
add(StoryLoaded(story: story, type: type));
- }).onDone(() {
- add(StoriesLoaded(type: type));
- });
+ }).asFuture();
+ add(StoriesLoaded(type: type));
}
}
@@ -153,7 +161,7 @@ class StoriesBloc extends Bloc {
);
} else {
emit(state.copyWithRefreshed(type: event.type));
- await loadStories(type: event.type, emit: emit);
+ add(LoadStories(type: event.type));
}
}
diff --git a/lib/blocs/stories/stories_event.dart b/lib/blocs/stories/stories_event.dart
index 0736027..f0a5c6a 100644
--- a/lib/blocs/stories/stories_event.dart
+++ b/lib/blocs/stories/stories_event.dart
@@ -5,6 +5,15 @@ abstract class StoriesEvent extends Equatable {
List