Updated onboarding, reformatted files, improved referenced documents view, updated error handling

This commit is contained in:
Anton Stubenbord
2022-11-03 22:15:36 +01:00
parent 2f2312d5f3
commit 40133b6e0e
117 changed files with 1788 additions and 1021 deletions

View File

@@ -1,4 +1,4 @@
import 'package:paperless_mobile/core/type/json.dart';
import 'package:paperless_mobile/core/type/types.dart';
class BulkEditAction {
final List<int> documents;

View File

@@ -1,7 +1,7 @@
// ignore_for_file: non_constant_identifier_names
import 'package:equatable/equatable.dart';
import 'package:paperless_mobile/core/type/json.dart';
import 'package:paperless_mobile/core/type/types.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';

View File

@@ -70,19 +70,23 @@ class DocumentFilter with EquatableMixin {
// Add/subtract one day in the following because paperless uses gt/lt not gte/lte
if (addedDateAfter != null) {
sb.write("&added__date__gt=${dateFormat.format(addedDateAfter!.subtract(_oneDay))}");
sb.write(
"&added__date__gt=${dateFormat.format(addedDateAfter!.subtract(_oneDay))}");
}
if (addedDateBefore != null) {
sb.write("&added__date__lt=${dateFormat.format(addedDateBefore!.add(_oneDay))}");
sb.write(
"&added__date__lt=${dateFormat.format(addedDateBefore!.add(_oneDay))}");
}
if (createdDateAfter != null) {
sb.write("&created__date__gt=${dateFormat.format(createdDateAfter!.subtract(_oneDay))}");
sb.write(
"&created__date__gt=${dateFormat.format(createdDateAfter!.subtract(_oneDay))}");
}
if (createdDateBefore != null) {
sb.write("&created__date__lt=${dateFormat.format(createdDateBefore!.add(_oneDay))}");
sb.write(
"&created__date__lt=${dateFormat.format(createdDateBefore!.add(_oneDay))}");
}
return sb.toString();

View File

@@ -1,5 +1,5 @@
import 'package:equatable/equatable.dart';
import 'package:paperless_mobile/core/type/json.dart';
import 'package:paperless_mobile/core/type/types.dart';
import 'package:paperless_mobile/features/documents/model/document_filter.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';
@@ -83,15 +83,20 @@ class FilterRule with EquatableMixin {
: TagsQuery.fromIds([...filter.tags.ids, int.parse(value!)]),
);
case createdBeforeRule:
return filter.copyWith(createdDateBefore: value == null ? null : DateTime.parse(value!));
return filter.copyWith(
createdDateBefore: value == null ? null : DateTime.parse(value!));
case createdAfterRule:
return filter.copyWith(createdDateAfter: value == null ? null : DateTime.parse(value!));
return filter.copyWith(
createdDateAfter: value == null ? null : DateTime.parse(value!));
case addedBeforeRule:
return filter.copyWith(addedDateBefore: value == null ? null : DateTime.parse(value!));
return filter.copyWith(
addedDateBefore: value == null ? null : DateTime.parse(value!));
case addedAfterRule:
return filter.copyWith(addedDateAfter: value == null ? null : DateTime.parse(value!));
return filter.copyWith(
addedDateAfter: value == null ? null : DateTime.parse(value!));
case titleAndContentRule:
return filter.copyWith(queryText: value, queryType: QueryType.titleAndContent);
return filter.copyWith(
queryText: value, queryType: QueryType.titleAndContent);
case extendedRule:
return filter.copyWith(queryText: value, queryType: QueryType.extended);
//TODO: Add currently unused rules
@@ -109,25 +114,29 @@ class FilterRule with EquatableMixin {
filterRules.add(FilterRule(correspondentRule, null));
}
if (filter.correspondent.isSet) {
filterRules.add(FilterRule(correspondentRule, filter.correspondent.id!.toString()));
filterRules.add(
FilterRule(correspondentRule, filter.correspondent.id!.toString()));
}
if (filter.documentType.onlyNotAssigned) {
filterRules.add(FilterRule(documentTypeRule, null));
}
if (filter.documentType.isSet) {
filterRules.add(FilterRule(documentTypeRule, filter.documentType.id!.toString()));
filterRules.add(
FilterRule(documentTypeRule, filter.documentType.id!.toString()));
}
if (filter.storagePath.onlyNotAssigned) {
filterRules.add(FilterRule(storagePathRule, null));
}
if (filter.storagePath.isSet) {
filterRules.add(FilterRule(storagePathRule, filter.storagePath.id!.toString()));
filterRules
.add(FilterRule(storagePathRule, filter.storagePath.id!.toString()));
}
if (filter.tags.onlyNotAssigned) {
filterRules.add(FilterRule(tagRule, null));
}
if (filter.tags.isSet) {
filterRules.addAll(filter.tags.ids.map((id) => FilterRule(tagRule, id.toString())));
filterRules.addAll(
filter.tags.ids.map((id) => FilterRule(tagRule, id.toString())));
}
if (filter.queryText != null) {
@@ -147,16 +156,20 @@ class FilterRule with EquatableMixin {
}
}
if (filter.createdDateAfter != null) {
filterRules.add(FilterRule(createdAfterRule, dateFormat.format(filter.createdDateAfter!)));
filterRules.add(FilterRule(
createdAfterRule, dateFormat.format(filter.createdDateAfter!)));
}
if (filter.createdDateBefore != null) {
filterRules.add(FilterRule(createdBeforeRule, dateFormat.format(filter.createdDateBefore!)));
filterRules.add(FilterRule(
createdBeforeRule, dateFormat.format(filter.createdDateBefore!)));
}
if (filter.addedDateAfter != null) {
filterRules.add(FilterRule(addedAfterRule, dateFormat.format(filter.addedDateAfter!)));
filterRules.add(FilterRule(
addedAfterRule, dateFormat.format(filter.addedDateAfter!)));
}
if (filter.addedDateBefore != null) {
filterRules.add(FilterRule(addedBeforeRule, dateFormat.format(filter.addedDateBefore!)));
filterRules.add(FilterRule(
addedBeforeRule, dateFormat.format(filter.addedDateBefore!)));
}
return filterRules;
}

View File

@@ -1,5 +1,5 @@
import 'package:equatable/equatable.dart';
import 'package:paperless_mobile/core/type/json.dart';
import 'package:paperless_mobile/core/type/types.dart';
import 'package:paperless_mobile/features/documents/model/document.model.dart';
const pageRegex = r".*page=(\d+).*";
@@ -45,7 +45,8 @@ class PagedSearchResult<T> extends Equatable {
required this.results,
});
factory PagedSearchResult.fromJson(Map<dynamic, dynamic> json, T Function(JSON) fromJson) {
factory PagedSearchResult.fromJson(
Map<dynamic, dynamic> json, T Function(JSON) fromJson) {
return PagedSearchResult(
count: json['count'],
next: json['next'],

View File

@@ -1,5 +1,5 @@
import 'package:equatable/equatable.dart';
import 'package:paperless_mobile/core/type/json.dart';
import 'package:paperless_mobile/core/type/types.dart';
import 'package:paperless_mobile/features/documents/model/document_filter.dart';
import 'package:paperless_mobile/features/documents/model/filter_rule.model.dart';
import 'package:paperless_mobile/features/documents/model/query_parameters/sort_field.dart';
@@ -33,8 +33,14 @@ class SavedView with EquatableMixin {
}
@override
List<Object?> get props =>
[name, showOnDashboard, showInSidebar, sortField, sortReverse, filterRules];
List<Object?> get props => [
name,
showOnDashboard,
showInSidebar,
sortField,
sortReverse,
filterRules
];
SavedView.fromJson(JSON json)
: this(
@@ -42,11 +48,14 @@ class SavedView with EquatableMixin {
name: json['name'],
showOnDashboard: json['show_on_dashboard'],
showInSidebar: json['show_in_sidebar'],
sortField:
SortField.values.where((order) => order.queryString == json['sort_field']).first,
sortField: SortField.values
.where((order) => order.queryString == json['sort_field'])
.first,
sortReverse: json['sort_reverse'],
filterRules:
json['filter_rules'].cast<JSON>().map<FilterRule>(FilterRule.fromJson).toList(),
filterRules: json['filter_rules']
.cast<JSON>()
.map<FilterRule>(FilterRule.fromJson)
.toList(),
);
DocumentFilter toDocumentFilter() {

View File

@@ -1,4 +1,4 @@
import 'package:paperless_mobile/core/type/json.dart';
import 'package:paperless_mobile/core/type/types.dart';
import 'package:paperless_mobile/features/documents/model/document.model.dart';
class SimilarDocumentModel extends DocumentModel {