mirror of
https://github.com/Xevion/paperless-mobile.git
synced 2025-12-11 12:08:02 -06:00
fix: Fixed saved views bug, formatted files, minor changes
This commit is contained in:
@@ -1,39 +1,55 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
import 'package:paperless_api/paperless_api.dart';
|
||||
import 'package:paperless_mobile/core/repository/persistent_repository.dart';
|
||||
import 'package:paperless_mobile/core/repository/saved_view_repository_state.dart';
|
||||
|
||||
class SavedViewRepository extends PersistentRepository<SavedViewRepositoryState> {
|
||||
part 'saved_view_repository_state.dart';
|
||||
part 'saved_view_repository.g.dart';
|
||||
part 'saved_view_repository.freezed.dart';
|
||||
|
||||
class SavedViewRepository
|
||||
extends PersistentRepository<SavedViewRepositoryState> {
|
||||
final PaperlessSavedViewsApi _api;
|
||||
final Completer _initialized = Completer();
|
||||
|
||||
SavedViewRepository(this._api) : super(const SavedViewRepositoryState()) {
|
||||
initialize();
|
||||
}
|
||||
SavedViewRepository(this._api)
|
||||
: super(const SavedViewRepositoryState.initial());
|
||||
|
||||
Future<void> initialize() {
|
||||
return findAll();
|
||||
Future<void> initialize() async {
|
||||
try {
|
||||
await findAll();
|
||||
_initialized.complete();
|
||||
} catch (e) {
|
||||
_initialized.completeError(e);
|
||||
emit(const SavedViewRepositoryState.error());
|
||||
}
|
||||
}
|
||||
|
||||
Future<SavedView> create(SavedView object) async {
|
||||
await _initialized.future;
|
||||
final created = await _api.save(object);
|
||||
final updatedState = {...state.savedViews}..putIfAbsent(created.id!, () => created);
|
||||
emit(state.copyWith(savedViews: updatedState));
|
||||
final updatedState = {...state.savedViews}
|
||||
..putIfAbsent(created.id!, () => created);
|
||||
emit(SavedViewRepositoryState.loaded(savedViews: updatedState));
|
||||
return created;
|
||||
}
|
||||
|
||||
Future<int> delete(SavedView view) async {
|
||||
await _initialized.future;
|
||||
await _api.delete(view);
|
||||
final updatedState = {...state.savedViews}..remove(view.id);
|
||||
emit(state.copyWith(savedViews: updatedState));
|
||||
emit(SavedViewRepositoryState.loaded(savedViews: updatedState));
|
||||
return view.id!;
|
||||
}
|
||||
|
||||
Future<SavedView?> find(int id) async {
|
||||
await _initialized.future;
|
||||
final found = await _api.find(id);
|
||||
if (found != null) {
|
||||
final updatedState = {...state.savedViews}..update(id, (_) => found, ifAbsent: () => found);
|
||||
emit(state.copyWith(savedViews: updatedState));
|
||||
final updatedState = {...state.savedViews}
|
||||
..update(id, (_) => found, ifAbsent: () => found);
|
||||
emit(SavedViewRepositoryState.loaded(savedViews: updatedState));
|
||||
}
|
||||
return found;
|
||||
}
|
||||
@@ -44,14 +60,15 @@ class SavedViewRepository extends PersistentRepository<SavedViewRepositoryState>
|
||||
...state.savedViews,
|
||||
...{for (final view in found) view.id!: view},
|
||||
};
|
||||
emit(state.copyWith(savedViews: updatedState));
|
||||
emit(SavedViewRepositoryState.loaded(savedViews: updatedState));
|
||||
return found;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> clear() async {
|
||||
await _initialized.future;
|
||||
await super.clear();
|
||||
emit(const SavedViewRepositoryState());
|
||||
emit(const SavedViewRepositoryState.initial());
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
@@ -1,14 +1,19 @@
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
import 'package:paperless_api/paperless_api.dart';
|
||||
|
||||
part 'saved_view_repository_state.freezed.dart';
|
||||
part 'saved_view_repository_state.g.dart';
|
||||
part of 'saved_view_repository.dart';
|
||||
|
||||
@freezed
|
||||
class SavedViewRepositoryState with _$SavedViewRepositoryState {
|
||||
const factory SavedViewRepositoryState({
|
||||
const factory SavedViewRepositoryState.initial({
|
||||
@Default({}) Map<int, SavedView> savedViews,
|
||||
}) = _SavedViewRepositoryState;
|
||||
}) = _Initial;
|
||||
const factory SavedViewRepositoryState.loading({
|
||||
@Default({}) Map<int, SavedView> savedViews,
|
||||
}) = _Loading;
|
||||
const factory SavedViewRepositoryState.loaded({
|
||||
@Default({}) Map<int, SavedView> savedViews,
|
||||
}) = _Loaded;
|
||||
const factory SavedViewRepositoryState.error({
|
||||
@Default({}) Map<int, SavedView> savedViews,
|
||||
}) = _Error;
|
||||
|
||||
factory SavedViewRepositoryState.fromJson(Map<String, dynamic> json) =>
|
||||
_$SavedViewRepositoryStateFromJson(json);
|
||||
|
||||
Reference in New Issue
Block a user