Resetting filter doesn't reset sorting, some bugfixes and UI updates

This commit is contained in:
Anton Stubenbord
2022-12-14 17:57:01 +01:00
parent a3c3810d35
commit 4bf4ff1cbd
23 changed files with 327 additions and 253 deletions

View File

@@ -1,5 +1,4 @@
import 'package:paperless_api/paperless_api.dart';
import 'package:paperless_api/src/models/saved_view_model.dart';
import 'package:paperless_mobile/core/repository/saved_view_repository.dart';
import 'package:rxdart/rxdart.dart';
@@ -8,11 +7,10 @@ class SavedViewRepositoryImpl implements SavedViewRepository {
SavedViewRepositoryImpl(this._api);
final BehaviorSubject<Map<int, SavedView>> _subject =
BehaviorSubject.seeded({});
final BehaviorSubject<Map<int, SavedView>?> _subject = BehaviorSubject();
@override
Stream<Map<int, SavedView>> get savedViews =>
Stream<Map<int, SavedView>?> get savedViews =>
_subject.stream.asBroadcastStream();
@override
@@ -23,7 +21,7 @@ class SavedViewRepositoryImpl implements SavedViewRepository {
@override
Future<SavedView> create(SavedView view) async {
final created = await _api.save(view);
final updatedState = {..._subject.value}
final updatedState = {..._subject.valueOrNull ?? {}}
..putIfAbsent(created.id!, () => created);
_subject.add(updatedState);
return created;
@@ -32,7 +30,7 @@ class SavedViewRepositoryImpl implements SavedViewRepository {
@override
Future<int> delete(SavedView view) async {
await _api.delete(view);
final updatedState = {..._subject.value}..remove(view.id);
final updatedState = {..._subject.valueOrNull ?? {}}..remove(view.id);
_subject.add(updatedState);
return view.id!;
}
@@ -40,7 +38,7 @@ class SavedViewRepositoryImpl implements SavedViewRepository {
@override
Future<SavedView?> find(int id) async {
final found = await _api.find(id);
final updatedState = {..._subject.value}
final updatedState = {..._subject.valueOrNull ?? {}}
..update(id, (_) => found, ifAbsent: () => found);
_subject.add(updatedState);
return found;
@@ -50,7 +48,7 @@ class SavedViewRepositoryImpl implements SavedViewRepository {
Future<Iterable<SavedView>> findAll([Iterable<int>? ids]) async {
final found = await _api.findAll(ids);
final updatedState = {
..._subject.value,
..._subject.valueOrNull ?? {},
...{for (final view in found) view.id!: view},
};
_subject.add(updatedState);

View File

@@ -1,7 +1,7 @@
import 'package:paperless_api/paperless_api.dart';
abstract class SavedViewRepository {
Stream<Map<int, SavedView>> get savedViews;
Stream<Map<int, SavedView>?> get savedViews;
Future<SavedView> create(SavedView view);
Future<SavedView?> find(int id);