diff --git a/README.md b/README.md
index 71c95dc..6c1ff2e 100644
--- a/README.md
+++ b/README.md
@@ -28,21 +28,22 @@
An (almost) fully fledged mobile paperless client.
-
-
-
+
+
+
+
+
+
-
Report Bug
·
Request Feature
-## Important Notes
-* ⚠️ Breaking changes **are still expected** between updates! Please perform a **clean instal** after updating the app before filing an issue or leaving a 1-star review in the App-Store!
+## ⚠️ Important Notes
+- Breaking changes **are still expected** between updates! Please perform a **clean instal** after updating the app before filing an issue or leaving a 1-star review in the App-Store!
## About The Project
diff --git a/android/app/build.gradle b/android/app/build.gradle
index 496e5e2..a0e469f 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -103,9 +103,7 @@ android.applicationVariants.all { variant ->
def abiName = output.getFilter(OutputFile.ABI)
def abiVersionCode = project.ext.abiCodes.get(abiName)
if (abiVersionCode != null) {
- output.versionCodeOverride = abiVersionCode * 1000 + variant.versionCode
- println(abiName + ": " + output.versionCodeOverride)
- // output.versionCodeOverride = variant.versionCode * 10 + abiVersionCode
+ output.versionCodeOverride = variant.versionCode * 10 + abiVersionCode
}
}
-}
\ No newline at end of file
+}
diff --git a/android/fastlane/metadata/android/de-DE/changelogs/59.txt b/android/fastlane/metadata/android/de-DE/changelogs/4003.txt
similarity index 100%
rename from android/fastlane/metadata/android/de-DE/changelogs/59.txt
rename to android/fastlane/metadata/android/de-DE/changelogs/4003.txt
diff --git a/android/fastlane/metadata/android/de-DE/changelogs/4013.txt b/android/fastlane/metadata/android/de-DE/changelogs/4013.txt
new file mode 100644
index 0000000..66efa76
--- /dev/null
+++ b/android/fastlane/metadata/android/de-DE/changelogs/4013.txt
@@ -0,0 +1 @@
+- Beheben eines Fehlers durch welchen Dokumente nicht mehr bearbeitet werden konnten
\ No newline at end of file
diff --git a/android/fastlane/metadata/android/de-DE/changelogs/4023.txt b/android/fastlane/metadata/android/de-DE/changelogs/4023.txt
new file mode 100644
index 0000000..aebe7e9
--- /dev/null
+++ b/android/fastlane/metadata/android/de-DE/changelogs/4023.txt
@@ -0,0 +1,2 @@
+- Kleinere visuelle Änderungen
+- Aktualisieren der Store-Präsenz
\ No newline at end of file
diff --git a/android/fastlane/metadata/android/de-DE/changelogs/4033.txt b/android/fastlane/metadata/android/de-DE/changelogs/4033.txt
new file mode 100644
index 0000000..07b4cdc
--- /dev/null
+++ b/android/fastlane/metadata/android/de-DE/changelogs/4033.txt
@@ -0,0 +1 @@
+- Beheben von versehentlich hardcoded Theme
\ No newline at end of file
diff --git a/android/fastlane/metadata/android/en-US/changelogs/59.txt b/android/fastlane/metadata/android/en-US/changelogs/4003.txt
similarity index 100%
rename from android/fastlane/metadata/android/en-US/changelogs/59.txt
rename to android/fastlane/metadata/android/en-US/changelogs/4003.txt
diff --git a/android/fastlane/metadata/android/en-US/changelogs/4013.txt b/android/fastlane/metadata/android/en-US/changelogs/4013.txt
new file mode 100644
index 0000000..e359420
--- /dev/null
+++ b/android/fastlane/metadata/android/en-US/changelogs/4013.txt
@@ -0,0 +1 @@
+- Fixed a bug which caused documents not being editable anymore
\ No newline at end of file
diff --git a/android/fastlane/metadata/android/en-US/changelogs/4023.txt b/android/fastlane/metadata/android/en-US/changelogs/4023.txt
new file mode 100644
index 0000000..48f3464
--- /dev/null
+++ b/android/fastlane/metadata/android/en-US/changelogs/4023.txt
@@ -0,0 +1,2 @@
+- Minor visual updates
+- Update store assets
\ No newline at end of file
diff --git a/android/fastlane/metadata/android/en-US/changelogs/4033.txt b/android/fastlane/metadata/android/en-US/changelogs/4033.txt
new file mode 100644
index 0000000..d38ec50
--- /dev/null
+++ b/android/fastlane/metadata/android/en-US/changelogs/4033.txt
@@ -0,0 +1 @@
+- Fix accidentally hardcoded Theme mode
\ No newline at end of file
diff --git a/android/fastlane/metadata/android/en-US/full_description.txt b/android/fastlane/metadata/android/en-US/full_description.txt
index 283a8fb..b23e4a4 100644
--- a/android/fastlane/metadata/android/en-US/full_description.txt
+++ b/android/fastlane/metadata/android/en-US/full_description.txt
@@ -1,10 +1,8 @@
-An (almost) fully fledged mobile Paperless client compatible with Paperless.
-
Using this app requires access to running a Paperless-ng*x instance.
* View and search documents
* Add, delete or edit documents
-* Share, download, print or preview your documents
+* Share, download, print and preview your documents
* Manage correspondents, document types, tags and storage paths
* Scan and upload documents with preset correspondent, document type, tags and creation date
* Review and quickly process newly added documents in the inbox
@@ -14,4 +12,4 @@ Using this app requires access to running a Paperless-ng*x instance.
* Modern, intuitive UI built according to the Material Design 3 specification
* Light and dark theme
* Support for dynamic color (Android 12+ only)
-* Available in English, German, French, Catalan, Polish, Czech and Turkish language
+* Available in English, German, French, Spanish, Catalan, Polish, Czech, Russian and Turkish language with more to come
diff --git a/android/fastlane/metadata/android/en-US/images/featureGraphic.png b/android/fastlane/metadata/android/en-US/images/featureGraphic.png
index 7811e34..aaba202 100644
Binary files a/android/fastlane/metadata/android/en-US/images/featureGraphic.png and b/android/fastlane/metadata/android/en-US/images/featureGraphic.png differ
diff --git a/android/fastlane/metadata/android/en-US/images/phoneScreenshots/1_en-US.png b/android/fastlane/metadata/android/en-US/images/phoneScreenshots/1_en-US.png
index d7fe55c..3c0ab2a 100644
Binary files a/android/fastlane/metadata/android/en-US/images/phoneScreenshots/1_en-US.png and b/android/fastlane/metadata/android/en-US/images/phoneScreenshots/1_en-US.png differ
diff --git a/android/fastlane/metadata/android/en-US/images/phoneScreenshots/2_en-US.png b/android/fastlane/metadata/android/en-US/images/phoneScreenshots/2_en-US.png
index f4b16ac..cd87070 100644
Binary files a/android/fastlane/metadata/android/en-US/images/phoneScreenshots/2_en-US.png and b/android/fastlane/metadata/android/en-US/images/phoneScreenshots/2_en-US.png differ
diff --git a/android/fastlane/metadata/android/en-US/images/phoneScreenshots/3_en-US.png b/android/fastlane/metadata/android/en-US/images/phoneScreenshots/3_en-US.png
index 5db8a71..d8b4b2d 100644
Binary files a/android/fastlane/metadata/android/en-US/images/phoneScreenshots/3_en-US.png and b/android/fastlane/metadata/android/en-US/images/phoneScreenshots/3_en-US.png differ
diff --git a/android/fastlane/metadata/android/en-US/images/phoneScreenshots/4_en-US.png b/android/fastlane/metadata/android/en-US/images/phoneScreenshots/4_en-US.png
index e1dea35..fafcd0f 100644
Binary files a/android/fastlane/metadata/android/en-US/images/phoneScreenshots/4_en-US.png and b/android/fastlane/metadata/android/en-US/images/phoneScreenshots/4_en-US.png differ
diff --git a/android/fastlane/metadata/android/en-US/images/phoneScreenshots/5_en-US.png b/android/fastlane/metadata/android/en-US/images/phoneScreenshots/5_en-US.png
index d5e5129..700baf8 100644
Binary files a/android/fastlane/metadata/android/en-US/images/phoneScreenshots/5_en-US.png and b/android/fastlane/metadata/android/en-US/images/phoneScreenshots/5_en-US.png differ
diff --git a/android/fastlane/metadata/android/en-US/images/phoneScreenshots/6_en-US.png b/android/fastlane/metadata/android/en-US/images/phoneScreenshots/6_en-US.png
index ac2df8f..43cb729 100644
Binary files a/android/fastlane/metadata/android/en-US/images/phoneScreenshots/6_en-US.png and b/android/fastlane/metadata/android/en-US/images/phoneScreenshots/6_en-US.png differ
diff --git a/android/fastlane/metadata/android/en-US/images/phoneScreenshots/7_en-US.png b/android/fastlane/metadata/android/en-US/images/phoneScreenshots/7_en-US.png
index 99f1cc1..e1b1265 100644
Binary files a/android/fastlane/metadata/android/en-US/images/phoneScreenshots/7_en-US.png and b/android/fastlane/metadata/android/en-US/images/phoneScreenshots/7_en-US.png differ
diff --git a/android/fastlane/metadata/android/en-US/images/phoneScreenshots/8_en-US.png b/android/fastlane/metadata/android/en-US/images/phoneScreenshots/8_en-US.png
index 71d7381..10a73f7 100644
Binary files a/android/fastlane/metadata/android/en-US/images/phoneScreenshots/8_en-US.png and b/android/fastlane/metadata/android/en-US/images/phoneScreenshots/8_en-US.png differ
diff --git a/android/fastlane/metadata/android/en-US/short_description.txt b/android/fastlane/metadata/android/en-US/short_description.txt
index 22b155f..de9d5fb 100644
--- a/android/fastlane/metadata/android/en-US/short_description.txt
+++ b/android/fastlane/metadata/android/en-US/short_description.txt
@@ -1 +1 @@
-An (almost) fully fledged mobile Paperless client.
\ No newline at end of file
+An (almost) fully fledged mobile paperless-ng*x client.
\ No newline at end of file
diff --git a/lib/core/service/file_service.dart b/lib/core/service/file_service.dart
index 7a944bb..a990e6e 100644
--- a/lib/core/service/file_service.dart
+++ b/lib/core/service/file_service.dart
@@ -115,11 +115,11 @@ class FileService {
formatBytes(await getDirSizeInBytes(consumptionDir));
logger.ft(
- "Removing scans...",
+ "Clearing scans directory...",
className: runtimeType.toString(),
methodName: "clearUserData",
);
- await _temporaryScansDirectory.delete(recursive: true);
+ await _temporaryScansDirectory.clear();
logger.ft(
"Removed $scanDirSize...",
className: runtimeType.toString(),
diff --git a/lib/core/widgets/form_builder_fields/extended_date_range_form_field/form_builder_extended_date_range_picker.dart b/lib/core/widgets/form_builder_fields/extended_date_range_form_field/form_builder_extended_date_range_picker.dart
index 93355a8..cda5745 100644
--- a/lib/core/widgets/form_builder_fields/extended_date_range_form_field/form_builder_extended_date_range_picker.dart
+++ b/lib/core/widgets/form_builder_fields/extended_date_range_form_field/form_builder_extended_date_range_picker.dart
@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_form_builder/flutter_form_builder.dart';
import 'package:intl/intl.dart';
import 'package:paperless_api/paperless_api.dart';
+import 'package:paperless_mobile/core/extensions/flutter_extensions.dart';
import 'package:paperless_mobile/core/widgets/form_builder_fields/extended_date_range_form_field/extended_date_range_dialog.dart';
import 'package:paperless_mobile/core/widgets/form_builder_fields/extended_date_range_form_field/relative_date_range_picker_helper.dart';
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
@@ -11,6 +12,7 @@ class FormBuilderExtendedDateRangePicker extends StatefulWidget {
final String labelText;
final DateRangeQuery initialValue;
final void Function(DateRangeQuery? query)? onChanged;
+ final EdgeInsets padding;
const FormBuilderExtendedDateRangePicker({
super.key,
@@ -18,6 +20,7 @@ class FormBuilderExtendedDateRangePicker extends StatefulWidget {
required this.labelText,
required this.initialValue,
this.onChanged,
+ required this.padding,
});
@override
@@ -49,29 +52,36 @@ class _FormBuilderExtendedDateRangePickerState
builder: (field) {
return Column(
children: [
- TextFormField(
- controller: _textEditingController,
- readOnly: true,
- onTap: () => _showExtendedDateRangePicker(field),
- decoration: InputDecoration(
- prefixIcon: const Icon(Icons.date_range),
- labelText: widget.labelText,
- suffixIcon: _textEditingController.text.isNotEmpty
- ? IconButton(
- icon: const Icon(Icons.clear),
- onPressed: () {
- field.didChange(const UnsetDateRangeQuery());
- },
- )
- : null,
+ Padding(
+ padding: widget.padding.copyWith(bottom: 0),
+ child: TextFormField(
+ controller: _textEditingController,
+ readOnly: true,
+ onTap: () => _showExtendedDateRangePicker(field),
+ decoration: InputDecoration(
+ prefixIcon: const Icon(Icons.date_range),
+ labelText: widget.labelText,
+ suffixIcon: _textEditingController.text.isNotEmpty
+ ? IconButton(
+ icon: const Icon(Icons.clear),
+ onPressed: () {
+ field.didChange(const UnsetDateRangeQuery());
+ },
+ )
+ : null,
+ ),
),
),
- MediaQuery.removePadding(
- context: context,
- removeLeft: true,
- removeRight: true,
- child: RelativeDateRangePickerHelper(field: field),
- ),
+ RelativeDateRangePickerHelper(
+ field: field,
+ padding: widget.padding,
+ )
+ // MediaQuery.removePadding(
+ //context: context,
+ //removeLeft: true,
+ //removeRight: true,
+ //child: ,
+ //),
],
);
},
diff --git a/lib/core/widgets/form_builder_fields/extended_date_range_form_field/relative_date_range_picker_helper.dart b/lib/core/widgets/form_builder_fields/extended_date_range_form_field/relative_date_range_picker_helper.dart
index 5a25e87..436685e 100644
--- a/lib/core/widgets/form_builder_fields/extended_date_range_form_field/relative_date_range_picker_helper.dart
+++ b/lib/core/widgets/form_builder_fields/extended_date_range_form_field/relative_date_range_picker_helper.dart
@@ -6,11 +6,13 @@ import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
class RelativeDateRangePickerHelper extends StatefulWidget {
final FormFieldState field;
final void Function(DateRangeQuery value)? onChanged;
+ final EdgeInsets padding;
const RelativeDateRangePickerHelper({
super.key,
required this.field,
this.onChanged,
+ required this.padding,
});
@override
@@ -24,25 +26,32 @@ class _RelativeDateRangePickerHelperState
Widget build(BuildContext context) {
return SizedBox(
height: 64,
- child: ListView.separated(
- itemCount: _options.length,
- separatorBuilder: (context, index) => const SizedBox(width: 8.0),
- itemBuilder: (context, index) {
- final option = _options[index];
- return ColoredChipWrapper(
- child: FilterChip(
- label: Text(option.title),
- onSelected: (isSelected) {
- final value =
- isSelected ? option.value : const RelativeDateRangeQuery();
- widget.field.didChange(value);
- widget.onChanged?.call(value);
- },
- selected: widget.field.value == option.value,
- ),
- );
- },
+ child: CustomScrollView(
scrollDirection: Axis.horizontal,
+ slivers: [
+ SliverToBoxAdapter(child: SizedBox(width: widget.padding.left)),
+ SliverList.separated(
+ itemCount: _options.length,
+ separatorBuilder: (context, index) => const SizedBox(width: 8.0),
+ itemBuilder: (context, index) {
+ final option = _options[index];
+ return ColoredChipWrapper(
+ child: FilterChip(
+ label: Text(option.title),
+ onSelected: (isSelected) {
+ final value = isSelected
+ ? option.value
+ : const RelativeDateRangeQuery();
+ widget.field.didChange(value);
+ widget.onChanged?.call(value);
+ },
+ selected: widget.field.value == option.value,
+ ),
+ );
+ },
+ ),
+ SliverToBoxAdapter(child: SizedBox(width: widget.padding.right))
+ ],
),
);
}
diff --git a/lib/features/changelogs/view/changelog_dialog.dart b/lib/features/changelogs/view/changelog_dialog.dart
index 05025f3..a9804b1 100644
--- a/lib/features/changelogs/view/changelog_dialog.dart
+++ b/lib/features/changelogs/view/changelog_dialog.dart
@@ -63,7 +63,10 @@ class ChangelogDialog extends StatelessWidget {
}
const _versionNumbers = {
- "59": "3.1.5",
+ "4033": "3.1.8",
+ "4023": "3.1.7",
+ "4013": "3.1.6",
+ "4003": "3.1.5",
"58": "3.1.4",
"57": "3.1.3",
"56": "3.1.2",
diff --git a/lib/features/documents/view/widgets/search/document_filter_form.dart b/lib/features/documents/view/widgets/search/document_filter_form.dart
index 0618660..0c0dc8c 100644
--- a/lib/features/documents/view/widgets/search/document_filter_form.dart
+++ b/lib/features/documents/view/widgets/search/document_filter_form.dart
@@ -3,6 +3,7 @@ import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_form_builder/flutter_form_builder.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/label_repository.dart';
import 'package:paperless_mobile/core/widgets/form_builder_fields/extended_date_range_form_field/form_builder_extended_date_range_picker.dart';
import 'package:paperless_mobile/features/labels/tags/view/widgets/tags_form_field.dart';
@@ -93,14 +94,14 @@ class _DocumentFilterFormState extends State {
List _buildFormFieldList(LabelRepository labelRepository) {
return [
- _buildQueryFormField(),
+ _buildQueryFormField().paddedSymmetrically(horizontal: 12),
Align(
alignment: Alignment.centerLeft,
child: Text(
S.of(context)!.advanced,
style: Theme.of(context).textTheme.bodySmall,
),
- ),
+ ).paddedLTRB(12, 16, 12, 0),
FormBuilderExtendedDateRangePicker(
name: DocumentFilterForm.fkCreatedAt,
initialValue: widget.initialFilter.created,
@@ -108,6 +109,7 @@ class _DocumentFilterFormState extends State {
onChanged: (_) {
_checkQueryConstraints();
},
+ padding: EdgeInsets.symmetric(vertical: 8, horizontal: 12),
),
FormBuilderExtendedDateRangePicker(
name: DocumentFilterForm.fkAddedAt,
@@ -116,17 +118,28 @@ class _DocumentFilterFormState extends State {
onChanged: (_) {
_checkQueryConstraints();
},
+ padding: EdgeInsets.symmetric(vertical: 8, horizontal: 12),
),
- _buildCorrespondentFormField(labelRepository.correspondents),
- _buildDocumentTypeFormField(labelRepository.documentTypes),
- _buildStoragePathFormField(labelRepository.storagePaths),
- _buildTagsFormField(labelRepository.tags),
- ]
- .map((w) => SliverPadding(
- padding: widget.padding,
- sliver: SliverToBoxAdapter(child: w),
- ))
- .toList();
+ _buildCorrespondentFormField(labelRepository.correspondents)
+ .paddedSymmetrically(
+ horizontal: 16,
+ vertical: 4,
+ ),
+ _buildDocumentTypeFormField(labelRepository.documentTypes)
+ .paddedSymmetrically(
+ horizontal: 16,
+ vertical: 4,
+ ),
+ _buildStoragePathFormField(labelRepository.storagePaths)
+ .paddedSymmetrically(
+ horizontal: 16,
+ vertical: 4,
+ ),
+ _buildTagsFormField(labelRepository.tags).paddedSymmetrically(
+ horizontal: 16,
+ vertical: 4,
+ ),
+ ].map((e) => SliverToBoxAdapter(child: e)).toList();
}
void _checkQueryConstraints() {
diff --git a/lib/main.dart b/lib/main.dart
index f88b028..c6fb222 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -385,7 +385,7 @@ class _GoRouterShellState extends State {
);
},
routerConfig: _router,
- debugShowCheckedModeBanner: true,
+ debugShowCheckedModeBanner: false,
title: "Paperless Mobile",
theme: buildTheme(
brightness: Brightness.light,
@@ -397,7 +397,7 @@ class _GoRouterShellState extends State {
dynamicScheme: darkDynamic,
preferredColorScheme: settings.preferredColorSchemeOption,
),
- themeMode: settings.preferredThemeMode,
+ themeMode: settings.preferredThemeMode,
supportedLocales: const [
Locale('en'),
Locale('de'),
diff --git a/packages/paperless_api/lib/src/models/document_model.dart b/packages/paperless_api/lib/src/models/document_model.dart
index 38df520..9cbc03a 100644
--- a/packages/paperless_api/lib/src/models/document_model.dart
+++ b/packages/paperless_api/lib/src/models/document_model.dart
@@ -73,7 +73,7 @@ class DocumentModel extends Equatable {
this.userCanChange,
this.permissions,
this.customFields = const [],
- this.notes = const [],
+ this.notes = const [] = const [],
});
factory DocumentModel.fromJson(Map json) =>
diff --git a/packages/paperless_api/lib/src/models/permissions/permissions.dart b/packages/paperless_api/lib/src/models/permissions/permissions.dart
index 3530f8b..1995baf 100644
--- a/packages/paperless_api/lib/src/models/permissions/permissions.dart
+++ b/packages/paperless_api/lib/src/models/permissions/permissions.dart
@@ -14,5 +14,6 @@ class Permissions with _$Permissions {
@HiveField(1) required UsersAndGroupsPermissions change,
}) = _Permissions;
- factory Permissions.fromJson(Map json) => _$PermissionsFromJson(json);
+ factory Permissions.fromJson(Map json) =>
+ _$PermissionsFromJson(json);
}
diff --git a/pubspec.yaml b/pubspec.yaml
index 081c8bd..ed1600c 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -15,7 +15,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
# Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
-version: 3.1.5+59
+version: 3.1.8+403
environment:
sdk: ">=3.1.0 <4.0.0"
diff --git a/resources/get_it_on_google_play_en.svg b/resources/get_it_on_google_play_en.svg
deleted file mode 100644
index e3382f2..0000000
--- a/resources/get_it_on_google_play_en.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/resources/publishing/feature_graphic.xcf b/resources/publishing/feature_graphic.xcf
index ef2c87e..23e72c3 100644
Binary files a/resources/publishing/feature_graphic.xcf and b/resources/publishing/feature_graphic.xcf differ
diff --git a/scripts/update_changelogs.sh b/scripts/update_changelogs.sh
index 2cfc551..c07ba75 100644
--- a/scripts/update_changelogs.sh
+++ b/scripts/update_changelogs.sh
@@ -9,7 +9,7 @@ function mergeChangelogs () {
__target_file=$__target_dir/changelogs_$1.md
rm -f $__target_file
touch $__target_file
- ls $__script_dir/../android/fastlane/metadata/android/$1/changelogs/[0-9]*.txt | tac | while read f; do
+ ls -1v $__script_dir/../android/fastlane/metadata/android/$1/changelogs/[0-9]*.txt | tac | while read f; do
__build_number="${f%.*}"
echo "# $(basename -- $__build_number)" >> $__target_file
cat $f >> $__target_file