Externalized API and models as own package

This commit is contained in:
Anton Stubenbord
2022-12-02 01:48:13 +01:00
parent 60d1a2e62a
commit ec7707e4a4
143 changed files with 1496 additions and 1339 deletions

View File

@@ -4,18 +4,18 @@ import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:paperless_mobile/core/model/error_message.dart';
import 'package:injectable/injectable.dart';
import 'package:paperless_mobile/features/documents/model/document.model.dart';
import 'package:paperless_mobile/features/documents/repository/document_repository.dart';
import 'package:paperless_api/paperless_api.dart';
import 'package:paperless_mobile/di_initializer.dart';
import 'package:paperless_mobile/features/login/bloc/authentication_cubit.dart';
@injectable
class DocumentScannerCubit extends Cubit<List<File>> {
final DocumentRepository documentRepository;
final PaperlessDocumentsApi _api;
static List<File> initialState = [];
DocumentScannerCubit(this.documentRepository) : super(initialState);
DocumentScannerCubit(this._api) : super(initialState);
void addScan(File file) => emit([...state, file]);
@@ -26,7 +26,7 @@ class DocumentScannerCubit extends Cubit<List<File>> {
scans.removeAt(fileIndex);
emit(scans);
} catch (_) {
throw const ErrorMessage(ErrorCode.scanRemoveFailed);
throw const PaperlessServerException(ErrorCode.scanRemoveFailed);
}
}
@@ -41,7 +41,7 @@ class DocumentScannerCubit extends Cubit<List<File>> {
imageCache.clear();
emit(initialState);
} catch (_) {
throw const ErrorMessage(ErrorCode.scanRemoveFailed);
throw const PaperlessServerException(ErrorCode.scanRemoveFailed);
}
}
@@ -55,17 +55,23 @@ class DocumentScannerCubit extends Cubit<List<File>> {
Iterable<int> tags = const [],
DateTime? createdAt,
}) async {
await documentRepository.create(
final auth = getIt<AuthenticationCubit>().state.authentication;
if (auth == null) {
throw const PaperlessServerException(ErrorCode.notAuthenticated);
}
await _api.create(
bytes,
fileName,
filename: fileName,
title: title,
documentType: documentType,
correspondent: correspondent,
tags: tags,
createdAt: createdAt,
authToken: auth.token,
serverUrl: auth.serverUrl,
);
if (onConsumptionFinished != null) {
documentRepository
_api
.waitForConsumptionFinished(fileName, title)
.then((value) => onConsumptionFinished(value));
}

View File

@@ -3,23 +3,15 @@ import 'dart:typed_data';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_form_builder/flutter_form_builder.dart';
import 'package:paperless_mobile/core/model/error_message.dart';
import 'package:paperless_api/paperless_api.dart';
import 'package:paperless_mobile/core/type/types.dart';
import 'package:paperless_mobile/di_initializer.dart';
import 'package:paperless_mobile/extensions/flutter_extensions.dart';
import 'package:paperless_mobile/features/documents/model/document.model.dart';
import 'package:paperless_mobile/features/documents/model/query_parameters/correspondent_query.dart';
import 'package:paperless_mobile/features/documents/model/query_parameters/document_type_query.dart';
import 'package:paperless_mobile/features/documents/model/query_parameters/id_query_parameter.dart';
import 'package:paperless_mobile/features/documents/model/query_parameters/tags_query.dart';
import 'package:paperless_mobile/features/labels/correspondent/bloc/correspondents_cubit.dart';
import 'package:paperless_mobile/features/labels/document_type/bloc/document_type_cubit.dart';
import 'package:paperless_mobile/features/documents/bloc/documents_cubit.dart';
import 'package:paperless_mobile/features/labels/correspondent/model/correspondent.model.dart';
import 'package:paperless_mobile/features/labels/correspondent/view/pages/add_correspondent_page.dart';
import 'package:paperless_mobile/features/labels/document_type/model/document_type.model.dart';
import 'package:paperless_mobile/features/labels/document_type/view/pages/add_document_type_page.dart';
import 'package:paperless_mobile/features/labels/model/label_state.dart';
import 'package:paperless_mobile/features/labels/bloc/label_state.dart';
import 'package:paperless_mobile/features/labels/tags/view/widgets/tags_form_field.dart';
import 'package:paperless_mobile/features/labels/view/widgets/label_form_field.dart';
import 'package:paperless_mobile/features/scan/bloc/document_scanner_cubit.dart';
@@ -258,12 +250,13 @@ class _DocumentUploadPageState extends State<DocumentUploadPage> {
showSnackBar(context, S.of(context).documentUploadSuccessText);
Navigator.pop(context);
widget.afterUpload?.call();
} on ErrorMessage catch (error, stackTrace) {
} on PaperlessServerException catch (error, stackTrace) {
showErrorMessage(context, error, stackTrace);
} on PaperlessValidationErrors catch (errorMessages) {
setState(() => _errors = errorMessages);
} on PaperlessValidationErrors catch (PaperlessServerExceptions) {
setState(() => _errors = PaperlessServerExceptions);
} catch (unknownError, stackTrace) {
showErrorMessage(context, const ErrorMessage.unknown(), stackTrace);
showErrorMessage(
context, const PaperlessServerException.unknown(), stackTrace);
} finally {
setState(() {
_isUploadLoading = false;

View File

@@ -8,13 +8,10 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:mime/mime.dart';
import 'package:paperless_api/paperless_api.dart';
import 'package:paperless_mobile/features/labels/bloc/global_state_bloc_provider.dart';
import 'package:paperless_mobile/core/global/constants.dart';
import 'package:paperless_mobile/core/model/error_message.dart';
import 'package:paperless_mobile/core/service/file_service.dart';
import 'package:paperless_mobile/di_initializer.dart';
import 'package:paperless_mobile/features/documents/bloc/documents_cubit.dart';
import 'package:paperless_mobile/features/documents/repository/document_repository.dart';
import 'package:paperless_mobile/features/documents/view/pages/document_view.dart';
import 'package:paperless_mobile/features/home/view/widget/info_drawer.dart';
import 'package:paperless_mobile/features/scan/bloc/document_scanner_cubit.dart';
@@ -193,7 +190,7 @@ class _ScannerPageState extends State<ScannerPage>
try {
BlocProvider.of<DocumentScannerCubit>(context)
.removeScan(index);
} on ErrorMessage catch (error, stackTrace) {
} on PaperlessServerException catch (error, stackTrace) {
showErrorMessage(context, error, stackTrace);
}
},
@@ -206,7 +203,7 @@ class _ScannerPageState extends State<ScannerPage>
void _reset(BuildContext context) {
try {
BlocProvider.of<DocumentScannerCubit>(context).reset();
} on ErrorMessage catch (error, stackTrace) {
} on PaperlessServerException catch (error, stackTrace) {
showErrorMessage(context, error, stackTrace);
}
}
@@ -231,7 +228,7 @@ class _ScannerPageState extends State<ScannerPage>
)) {
showErrorMessage(
context,
const ErrorMessage(ErrorCode.unsupportedFileFormat),
const PaperlessServerException(ErrorCode.unsupportedFileFormat),
);
return;
}