fix: Add custom fields, translations, add app logs to login routes

This commit is contained in:
Anton Stubenbord
2023-12-10 12:48:32 +01:00
parent 5e5e5d2df3
commit 9f6b95f506
102 changed files with 2399 additions and 1088 deletions

View File

@@ -3,6 +3,7 @@ import 'package:flutter/services.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:paperless_api/paperless_api.dart';
import 'package:paperless_mobile/core/bloc/connectivity_cubit.dart';
import 'package:paperless_mobile/core/bloc/loading_status.dart';
import 'package:paperless_mobile/core/database/tables/local_user_account.dart';
import 'package:paperless_mobile/core/extensions/flutter_extensions.dart';
import 'package:paperless_mobile/features/document_details/cubit/document_details_cubit.dart';
@@ -50,16 +51,13 @@ class _ArchiveSerialNumberFieldState extends State<ArchiveSerialNumberField> {
context.watch<LocalUserAccount>().paperlessUser.canEditDocuments;
return BlocListener<DocumentDetailsCubit, DocumentDetailsState>(
listenWhen: (previous, current) =>
previous is DocumentDetailsLoaded &&
current is DocumentDetailsLoaded &&
previous.document.archiveSerialNumber !=
current.document.archiveSerialNumber,
previous.status == LoadingStatus.loaded &&
current.status == LoadingStatus.loaded &&
previous.document!.archiveSerialNumber !=
current.document!.archiveSerialNumber,
listener: (context, state) {
_asnEditingController.text = (state as DocumentDetailsLoaded)
.document
.archiveSerialNumber
?.toString() ??
'';
_asnEditingController.text =
state.document!.archiveSerialNumber?.toString() ?? '';
setState(() {
_canUpdate = false;
});

View File

@@ -4,6 +4,7 @@ import 'package:intl/intl.dart';
import 'package:paperless_api/paperless_api.dart';
import 'package:paperless_mobile/core/database/tables/local_user_account.dart';
import 'package:paperless_mobile/core/extensions/flutter_extensions.dart';
import 'package:paperless_mobile/core/repository/user_repository.dart';
import 'package:paperless_mobile/features/document_details/view/widgets/archive_serial_number_field.dart';
import 'package:paperless_mobile/features/document_details/view/widgets/details_item.dart';
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
@@ -69,6 +70,7 @@ class DocumentMetaDataWidget extends StatelessWidget {
context: context,
label: S.of(context)!.originalMIMEType,
).paddedOnly(bottom: itemSpacing),
],
),
);

View File

@@ -27,7 +27,7 @@ class DocumentOverviewWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
final user = context.watch<LocalUserAccount>().paperlessUser;
final availableLabels = context.watch<LabelRepository>().state;
final labelRepository = context.watch<LabelRepository>();
return SliverList.list(
children: [
@@ -51,7 +51,7 @@ class DocumentOverviewWidget extends StatelessWidget {
label: S.of(context)!.documentType,
content: LabelText<DocumentType>(
style: Theme.of(context).textTheme.bodyLarge,
label: availableLabels.documentTypes[document.documentType],
label: labelRepository.documentTypes[document.documentType],
),
).paddedOnly(bottom: itemSpacing),
if (document.correspondent != null && user.canViewCorrespondents)
@@ -59,14 +59,14 @@ class DocumentOverviewWidget extends StatelessWidget {
label: S.of(context)!.correspondent,
content: LabelText<Correspondent>(
style: Theme.of(context).textTheme.bodyLarge,
label: availableLabels.correspondents[document.correspondent],
label: labelRepository.correspondents[document.correspondent],
),
).paddedOnly(bottom: itemSpacing),
if (document.storagePath != null && user.canViewStoragePaths)
DetailsItem(
label: S.of(context)!.storagePath,
content: LabelText<StoragePath>(
label: availableLabels.storagePaths[document.storagePath],
label: labelRepository.storagePaths[document.storagePath],
),
).paddedOnly(bottom: itemSpacing),
if (document.tags.isNotEmpty && user.canViewTags)
@@ -77,7 +77,7 @@ class DocumentOverviewWidget extends StatelessWidget {
child: TagsWidget(
isClickable: false,
tags:
document.tags.map((e) => availableLabels.tags[e]!).toList(),
document.tags.map((e) => labelRepository.tags[e]!).toList(),
),
),
).paddedOnly(bottom: itemSpacing),

View File

@@ -1,5 +1,8 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:paperless_api/paperless_api.dart';
import 'package:paperless_mobile/core/repository/user_repository.dart';
import 'package:paperless_mobile/features/document_details/view/widgets/details_item.dart';
class DocumentPermissionsWidget extends StatefulWidget {
final DocumentModel document;
@@ -13,8 +16,20 @@ class DocumentPermissionsWidget extends StatefulWidget {
class _DocumentPermissionsWidgetState extends State<DocumentPermissionsWidget> {
@override
Widget build(BuildContext context) {
return const SliverToBoxAdapter(
child: Placeholder(),
return BlocBuilder<UserRepository, UserRepositoryState>(
builder: (context, state) {
final owner = state.users[widget.document.owner];
return SliverList.list(
children: [
if (owner != null)
DetailsItem.text(
owner.username,
label: 'Owner',
context: context,
),
],
);
},
);
}
}