WIP - Implemented similar documents view

This commit is contained in:
Anton Stubenbord
2023-01-22 01:17:52 +01:00
parent d4978172cf
commit b370fa4164
27 changed files with 476 additions and 381 deletions

View File

@@ -2,12 +2,11 @@ import 'package:flutter/material.dart';
import 'package:paperless_api/paperless_api.dart';
import 'package:paperless_mobile/core/widgets/empty_state.dart';
import 'package:paperless_mobile/extensions/flutter_extensions.dart';
import 'package:paperless_mobile/features/documents/bloc/documents_cubit.dart';
import 'package:paperless_mobile/features/documents/bloc/documents_state.dart';
import 'package:paperless_mobile/features/paged_document_view/model/documents_paged_state.dart';
import 'package:paperless_mobile/generated/l10n.dart';
class DocumentsEmptyState extends StatelessWidget {
final DocumentsState state;
final DocumentsPagedState state;
final VoidCallback onReset;
const DocumentsEmptyState({
Key? key,

View File

@@ -64,13 +64,6 @@ class AdaptiveDocumentsView extends StatelessWidget {
isSelected: state.selectedIds.contains(document.id),
onSelected: onSelected,
isAtLeastOneSelected: state.selection.isNotEmpty,
isTagSelectedPredicate: (int tagId) {
return state.filter.tags is IdsTagsQuery
? (state.filter.tags as IdsTagsQuery)
.includedIds
.contains(tagId)
: false;
},
onTagSelected: onTagSelected,
onCorrespondentSelected: onCorrespondentSelected,
onDocumentTypeSelected: onDocumentTypeSelected,

View File

@@ -7,31 +7,32 @@ import 'package:paperless_mobile/features/labels/tags/view/widgets/tags_widget.d
class DocumentListItem extends StatelessWidget {
static const _a4AspectRatio = 1 / 1.4142;
final DocumentModel document;
final void Function(DocumentModel) onTap;
final void Function(DocumentModel)? onTap;
final void Function(DocumentModel)? onSelected;
final bool isSelected;
final bool isAtLeastOneSelected;
final bool isLabelClickable;
final bool Function(int tagId) isTagSelectedPredicate;
final void Function(int tagId)? onTagSelected;
final void Function(int? correspondentId)? onCorrespondentSelected;
final void Function(int? documentTypeId)? onDocumentTypeSelected;
final void Function(int? id)? onStoragePathSelected;
final bool enableHeroAnimation;
const DocumentListItem({
Key? key,
required this.document,
required this.onTap,
this.onTap,
this.onSelected,
required this.isSelected,
required this.isAtLeastOneSelected,
this.isSelected = false,
this.isAtLeastOneSelected = false,
this.isLabelClickable = true,
required this.isTagSelectedPredicate,
this.onTagSelected,
this.onCorrespondentSelected,
this.onDocumentTypeSelected,
this.onStoragePathSelected,
this.enableHeroAnimation = true,
}) : super(key: key);
@override
@@ -85,6 +86,7 @@ class DocumentListItem extends StatelessWidget {
id: document.id,
fit: BoxFit.cover,
alignment: Alignment.topCenter,
enableHero: enableHeroAnimation,
),
),
),
@@ -96,7 +98,7 @@ class DocumentListItem extends StatelessWidget {
if (isAtLeastOneSelected || isSelected) {
onSelected?.call(document);
} else {
onTap(document);
onTap?.call(document);
}
}
}