feat: Add hive type adapters to api models, migrate to freezed

This commit is contained in:
Anton Stubenbord
2023-04-24 01:14:20 +02:00
parent 5c0ef7f853
commit 1f335119b3
67 changed files with 2075 additions and 1079 deletions

View File

@@ -41,12 +41,10 @@ class DocumentUploadPreparationPage extends StatefulWidget {
}) : super(key: key);
@override
State<DocumentUploadPreparationPage> createState() =>
_DocumentUploadPreparationPageState();
State<DocumentUploadPreparationPage> createState() => _DocumentUploadPreparationPageState();
}
class _DocumentUploadPreparationPageState
extends State<DocumentUploadPreparationPage> {
class _DocumentUploadPreparationPageState extends State<DocumentUploadPreparationPage> {
static const fkFileName = "filename";
static final fileNameDateFormat = DateFormat("yyyy_MM_ddTHH_mm_ss");
@@ -73,8 +71,7 @@ class _DocumentUploadPreparationPageState
title: Text(S.of(context)!.prepareDocument),
bottom: _isUploadLoading
? const PreferredSize(
child: LinearProgressIndicator(),
preferredSize: Size.fromHeight(4.0))
child: LinearProgressIndicator(), preferredSize: Size.fromHeight(4.0))
: null,
),
floatingActionButton: Visibility(
@@ -95,8 +92,7 @@ class _DocumentUploadPreparationPageState
FormBuilderTextField(
autovalidateMode: AutovalidateMode.always,
name: DocumentModel.titleKey,
initialValue:
widget.title ?? "scan_${fileNameDateFormat.format(_now)}",
initialValue: widget.title ?? "scan_${fileNameDateFormat.format(_now)}",
validator: (value) {
if (value?.trim().isEmpty ?? true) {
return S.of(context)!.thisFieldIsRequired;
@@ -108,22 +104,18 @@ class _DocumentUploadPreparationPageState
suffixIcon: IconButton(
icon: const Icon(Icons.close),
onPressed: () {
_formKey.currentState?.fields[DocumentModel.titleKey]
?.didChange("");
_formKey.currentState?.fields[DocumentModel.titleKey]?.didChange("");
if (_syncTitleAndFilename) {
_formKey.currentState?.fields[fkFileName]
?.didChange("");
_formKey.currentState?.fields[fkFileName]?.didChange("");
}
},
),
errorText: _errors[DocumentModel.titleKey],
),
onChanged: (value) {
final String transformedValue =
_formatFilename(value ?? '');
final String transformedValue = _formatFilename(value ?? '');
if (_syncTitleAndFilename) {
_formKey.currentState?.fields[fkFileName]
?.didChange(transformedValue);
_formKey.currentState?.fields[fkFileName]?.didChange(transformedValue);
}
},
),
@@ -138,12 +130,10 @@ class _DocumentUploadPreparationPageState
suffixText: widget.fileExtension,
suffixIcon: IconButton(
icon: const Icon(Icons.clear),
onPressed: () => _formKey.currentState?.fields[fkFileName]
?.didChange(''),
onPressed: () => _formKey.currentState?.fields[fkFileName]?.didChange(''),
),
),
initialValue: widget.filename ??
"scan_${fileNameDateFormat.format(_now)}",
initialValue: widget.filename ?? "scan_${fileNameDateFormat.format(_now)}",
),
// Synchronize title and filename
SwitchListTile(
@@ -153,13 +143,10 @@ class _DocumentUploadPreparationPageState
() => _syncTitleAndFilename = value,
);
if (_syncTitleAndFilename) {
final String transformedValue = _formatFilename(_formKey
.currentState
?.fields[DocumentModel.titleKey]
?.value as String);
final String transformedValue = _formatFilename(
_formKey.currentState?.fields[DocumentModel.titleKey]?.value as String);
if (_syncTitleAndFilename) {
_formKey.currentState?.fields[fkFileName]
?.didChange(transformedValue);
_formKey.currentState?.fields[fkFileName]?.didChange(transformedValue);
}
}
},
@@ -184,8 +171,7 @@ class _DocumentUploadPreparationPageState
? IconButton(
icon: const Icon(Icons.close),
onPressed: () {
_formKey.currentState!
.fields[DocumentModel.createdKey]
_formKey.currentState!.fields[DocumentModel.createdKey]
?.didChange(null);
},
)
@@ -196,8 +182,7 @@ class _DocumentUploadPreparationPageState
LabelFormField<Correspondent>(
showAnyAssignedOption: false,
showNotAssignedOption: false,
addLabelPageBuilder: (initialName) =>
RepositoryProvider.value(
addLabelPageBuilder: (initialName) => RepositoryProvider.value(
value: context.read<LabelRepository>(),
child: AddCorrespondentPage(initialName: initialName),
),
@@ -211,8 +196,7 @@ class _DocumentUploadPreparationPageState
LabelFormField<DocumentType>(
showAnyAssignedOption: false,
showNotAssignedOption: false,
addLabelPageBuilder: (initialName) =>
RepositoryProvider.value(
addLabelPageBuilder: (initialName) => RepositoryProvider.value(
value: context.read<LabelRepository>(),
child: AddDocumentTypePage(initialName: initialName),
),
@@ -252,10 +236,9 @@ class _DocumentUploadPreparationPageState
final createdAt = fv[DocumentModel.createdKey] as DateTime?;
final title = fv[DocumentModel.titleKey] as String;
final docType = fv[DocumentModel.documentTypeKey] as IdQueryParameter;
final docType = fv[DocumentModel.documentTypeKey] as SetIdQueryParameter;
final tags = fv[DocumentModel.tagsKey] as IdsTagsQuery;
final correspondent =
fv[DocumentModel.correspondentKey] as IdQueryParameter;
final correspondent = fv[DocumentModel.correspondentKey] as SetIdQueryParameter;
final taskId = await cubit.upload(
widget.fileBytes,
@@ -266,7 +249,7 @@ class _DocumentUploadPreparationPageState
title: title,
documentType: docType.id,
correspondent: correspondent.id,
tags: tags.ids,
tags: tags.include,
createdAt: createdAt,
);
showSnackBar(
@@ -283,8 +266,7 @@ class _DocumentUploadPreparationPageState
setState(() => _errors = errors);
} catch (unknownError, stackTrace) {
debugPrint(unknownError.toString());
showErrorMessage(
context, const PaperlessServerException.unknown(), stackTrace);
showErrorMessage(context, const PaperlessServerException.unknown(), stackTrace);
} finally {
setState(() {
_isUploadLoading = false;