Changed saved views handling, changed repository structure with automatic persistence.

This commit is contained in:
Anton Stubenbord
2023-01-08 00:01:04 +01:00
parent 23bcb355b1
commit 3c6c4e63d7
74 changed files with 1374 additions and 863 deletions

View File

@@ -3,25 +3,26 @@ import 'dart:async';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:paperless_api/paperless_api.dart';
import 'package:paperless_mobile/core/repository/label_repository.dart';
import 'package:paperless_mobile/core/repository/state/repository_state.dart';
import 'package:paperless_mobile/features/labels/bloc/label_state.dart';
class LabelCubit<T extends Label> extends Cubit<LabelState<T>> {
final LabelRepository<T> _repository;
final LabelRepository<T, RepositoryState> _repository;
late StreamSubscription _subscription;
LabelCubit(LabelRepository<T> repository)
LabelCubit(LabelRepository<T, RepositoryState> repository)
: _repository = repository,
super(LabelState(
isLoaded: repository.isInitialized,
labels: repository.current ?? {},
labels: repository.current?.values ?? {},
)) {
_subscription = _repository.values.listen(
(update) {
if (update == null) {
(event) {
if (event == null) {
emit(LabelState());
}
emit(LabelState(isLoaded: true, labels: update!));
emit(LabelState(isLoaded: true, labels: event!.values));
},
);
}

View File

@@ -2,6 +2,7 @@ import 'package:flutter/widgets.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:paperless_api/paperless_api.dart';
import 'package:paperless_mobile/core/repository/label_repository.dart';
import 'package:paperless_mobile/core/repository/state/impl/correspondent_repository_state.dart';
import 'package:paperless_mobile/features/labels/bloc/label_cubit.dart';
class CorrespondentBlocProvider extends StatelessWidget {
@@ -12,7 +13,8 @@ class CorrespondentBlocProvider extends StatelessWidget {
Widget build(BuildContext context) {
return BlocProvider(
create: (context) => LabelCubit<Correspondent>(
context.read<LabelRepository<Correspondent>>(),
context.read<
LabelRepository<Correspondent, CorrespondentRepositoryState>>(),
),
child: child,
);

View File

@@ -2,6 +2,7 @@ import 'package:flutter/widgets.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:paperless_api/paperless_api.dart';
import 'package:paperless_mobile/core/repository/label_repository.dart';
import 'package:paperless_mobile/core/repository/state/impl/document_type_repository_state.dart';
import 'package:paperless_mobile/features/labels/bloc/label_cubit.dart';
class DocumentTypeBlocProvider extends StatelessWidget {
@@ -12,7 +13,8 @@ class DocumentTypeBlocProvider extends StatelessWidget {
Widget build(BuildContext context) {
return BlocProvider(
create: (context) => LabelCubit<DocumentType>(
context.read<LabelRepository<DocumentType>>(),
context
.read<LabelRepository<DocumentType, DocumentTypeRepositoryState>>(),
),
child: child,
);

View File

@@ -2,6 +2,10 @@ import 'package:flutter/widgets.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:paperless_api/paperless_api.dart';
import 'package:paperless_mobile/core/repository/label_repository.dart';
import 'package:paperless_mobile/core/repository/state/impl/correspondent_repository_state.dart';
import 'package:paperless_mobile/core/repository/state/impl/document_type_repository_state.dart';
import 'package:paperless_mobile/core/repository/state/impl/storage_path_repository_state.dart';
import 'package:paperless_mobile/core/repository/state/impl/tag_repository_state.dart';
import 'package:paperless_mobile/features/labels/bloc/label_cubit.dart';
class LabelsBlocProvider extends StatelessWidget {
@@ -14,22 +18,25 @@ class LabelsBlocProvider extends StatelessWidget {
providers: [
BlocProvider<LabelCubit<StoragePath>>(
create: (context) => LabelCubit<StoragePath>(
context.read<LabelRepository<StoragePath>>(),
context.read<
LabelRepository<StoragePath, StoragePathRepositoryState>>(),
),
),
BlocProvider<LabelCubit<Correspondent>>(
create: (context) => LabelCubit<Correspondent>(
context.read<LabelRepository<Correspondent>>(),
context.read<
LabelRepository<Correspondent, CorrespondentRepositoryState>>(),
),
),
BlocProvider<LabelCubit<DocumentType>>(
create: (context) => LabelCubit<DocumentType>(
context.read<LabelRepository<DocumentType>>(),
context.read<
LabelRepository<DocumentType, DocumentTypeRepositoryState>>(),
),
),
BlocProvider<LabelCubit<Tag>>(
create: (context) => LabelCubit<Tag>(
context.read<LabelRepository<Tag>>(),
context.read<LabelRepository<Tag, TagRepositoryState>>(),
),
),
],

View File

@@ -2,6 +2,7 @@ import 'package:flutter/widgets.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:paperless_api/paperless_api.dart';
import 'package:paperless_mobile/core/repository/label_repository.dart';
import 'package:paperless_mobile/core/repository/state/impl/storage_path_repository_state.dart';
import 'package:paperless_mobile/features/labels/bloc/label_cubit.dart';
class StoragePathBlocProvider extends StatelessWidget {
@@ -12,7 +13,8 @@ class StoragePathBlocProvider extends StatelessWidget {
Widget build(BuildContext context) {
return BlocProvider(
create: (context) => LabelCubit<StoragePath>(
context.read<LabelRepository<StoragePath>>(),
context
.read<LabelRepository<StoragePath, StoragePathRepositoryState>>(),
),
child: child,
);

View File

@@ -2,6 +2,7 @@ import 'package:flutter/widgets.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:paperless_api/paperless_api.dart';
import 'package:paperless_mobile/core/repository/label_repository.dart';
import 'package:paperless_mobile/core/repository/state/impl/tag_repository_state.dart';
import 'package:paperless_mobile/features/labels/bloc/label_cubit.dart';
class TagBlocProvider extends StatelessWidget {
@@ -12,7 +13,7 @@ class TagBlocProvider extends StatelessWidget {
Widget build(BuildContext context) {
return BlocProvider(
create: (context) => LabelCubit<Tag>(
context.read<LabelRepository<Tag>>(),
context.read<LabelRepository<Tag, TagRepositoryState>>(),
),
child: child,
);