import 'package:flutter/material.dart'; 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/widgets/highlighted_text.dart'; import 'package:paperless_mobile/extensions/flutter_extensions.dart'; import 'package:paperless_mobile/features/document_details/view/widgets/details_item.dart'; import 'package:paperless_mobile/features/labels/tags/view/widgets/tags_widget.dart'; import 'package:paperless_mobile/features/labels/view/widgets/label_text.dart'; import 'package:paperless_mobile/generated/l10n/app_localizations.dart'; class DocumentOverviewWidget extends StatelessWidget { final DocumentModel document; final Map availableCorrespondents; final Map availableDocumentTypes; final Map availableTags; final Map availableStoragePaths; final String? queryString; final double itemSpacing; const DocumentOverviewWidget({ super.key, required this.document, this.queryString, required this.itemSpacing, required this.availableCorrespondents, required this.availableDocumentTypes, required this.availableTags, required this.availableStoragePaths, }); @override Widget build(BuildContext context) { return SliverList( delegate: SliverChildListDelegate( [ DetailsItem( label: S.of(context)!.title, content: HighlightedText( text: document.title, highlights: queryString?.split(" ") ?? [], style: Theme.of(context).textTheme.bodyLarge, ), ).paddedOnly(bottom: itemSpacing), DetailsItem.text( DateFormat.yMMMMd().format(document.created), context: context, label: S.of(context)!.createdAt, ).paddedOnly(bottom: itemSpacing), if (document.documentType != null && LocalUserAccount.current.paperlessUser.canViewDocumentTypes) DetailsItem( label: S.of(context)!.documentType, content: LabelText( style: Theme.of(context).textTheme.bodyLarge, label: availableDocumentTypes[document.documentType], ), ).paddedOnly(bottom: itemSpacing), if (document.correspondent != null && LocalUserAccount.current.paperlessUser.canViewCorrespondents) DetailsItem( label: S.of(context)!.correspondent, content: LabelText( style: Theme.of(context).textTheme.bodyLarge, label: availableCorrespondents[document.correspondent], ), ).paddedOnly(bottom: itemSpacing), if (document.storagePath != null && LocalUserAccount.current.paperlessUser.canViewStoragePaths) DetailsItem( label: S.of(context)!.storagePath, content: LabelText( label: availableStoragePaths[document.storagePath], ), ).paddedOnly(bottom: itemSpacing), if (document.tags.isNotEmpty && LocalUserAccount.current.paperlessUser.canViewTags) DetailsItem( label: S.of(context)!.tags, content: Padding( padding: const EdgeInsets.only(top: 8.0), child: TagsWidget( isClickable: false, tags: document.tags.map((e) => availableTags[e]!).toList(), ), ), ).paddedOnly(bottom: itemSpacing), ], ), ); } }