WIP - More decoupling of data layer from ui layer

This commit is contained in:
Anton Stubenbord
2022-12-09 00:54:39 +01:00
parent 75fa2f7713
commit c9694fa8d0
87 changed files with 2508 additions and 1879 deletions

View File

@@ -1,20 +1,21 @@
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:injectable/injectable.dart';
import 'package:paperless_api/paperless_api.dart';
import 'package:paperless_mobile/core/repository/label_repository.dart';
import 'package:paperless_mobile/features/inbox/bloc/state/inbox_state.dart';
@injectable
class InboxCubit extends Cubit<InboxState> {
final PaperlessLabelsApi _labelApi;
final LabelRepository<Tag> _tagsRepository;
final PaperlessDocumentsApi _documentsApi;
InboxCubit(this._labelApi, this._documentsApi) : super(const InboxState());
InboxCubit(this._tagsRepository, this._documentsApi)
: super(const InboxState());
///
/// Fetches inbox tag ids and loads the inbox items (documents).
///
Future<void> loadInbox() async {
final inboxTags = await _labelApi.getTags().then(
final inboxTags = await _tagsRepository.findAll().then(
(tags) => tags.where((t) => t.isInboxTag ?? false).map((t) => t.id!),
);
if (inboxTags.isEmpty) {

View File

@@ -2,12 +2,11 @@ import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:intl/intl.dart';
import 'package:paperless_api/paperless_api.dart';
import 'package:paperless_mobile/core/repository/provider/label_repositories_provider.dart';
import 'package:paperless_mobile/di_initializer.dart';
import 'package:paperless_mobile/features/document_details/bloc/document_details_cubit.dart';
import 'package:paperless_mobile/features/documents/bloc/documents_cubit.dart';
import 'package:paperless_mobile/features/document_details/view/pages/document_details_page.dart';
import 'package:paperless_mobile/features/documents/view/widgets/document_preview.dart';
import 'package:paperless_mobile/features/labels/bloc/global_state_bloc_provider.dart';
import 'package:paperless_mobile/features/labels/tags/view/widgets/tags_widget.dart';
class InboxItem extends StatelessWidget {
@@ -49,18 +48,16 @@ class InboxItem extends StatelessWidget {
onTap: () => Navigator.push(
context,
MaterialPageRoute(
builder: (_) => GlobalStateBlocProvider(
additionalProviders: [
BlocProvider<DocumentDetailsCubit>(
create: (context) => DocumentDetailsCubit(
getIt<PaperlessDocumentsApi>(),
document,
),
builder: (_) => BlocProvider.value(
value: DocumentDetailsCubit(
getIt<PaperlessDocumentsApi>(),
document,
),
child: const LabelRepositoriesProvider(
child: DocumentDetailsPage(
allowEdit: false,
isLabelClickable: false,
),
],
child: const DocumentDetailsPage(
allowEdit: false,
isLabelClickable: false,
),
),
),