Merge branch 'development'

This commit is contained in:
Anton Stubenbord
2023-01-21 01:41:32 +01:00
21 changed files with 522 additions and 150 deletions

View File

@@ -24,18 +24,275 @@
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter> </intent-filter>
<!-- Enables sharing image files "into" this app -->
<!-- START Snippet from https://github.com/qcasey/paperless_share -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*" android:scheme="content" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*" android:scheme="file" />
</intent-filter>
<intent-filter> <intent-filter>
<action android:name="android.intent.action.SEND" /> <action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*" /> <data android:mimeType="image/*" />
</intent-filter> </intent-filter>
<!-- Enables sharing pdf files "into" this app --> <intent-filter>
<action android:name="android.intent.action.SEND_MULTIPLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*" />
</intent-filter>
<!-- .pdf -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/pdf" android:scheme="content" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/pdf" android:scheme="file" />
</intent-filter>
<intent-filter> <intent-filter>
<action android:name="android.intent.action.SEND" /> <action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/pdf" /> <data android:mimeType="application/pdf" />
</intent-filter> </intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND_MULTIPLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/pdf" />
</intent-filter>
<!-- .doc -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/msword" android:scheme="content" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/msword" android:scheme="file" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/msword" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND_MULTIPLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/msword" />
</intent-filter>
<!-- .docx -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:mimeType="application/vnd.openxmlformats-officedocument.wordprocessingml.document"
android:scheme="content" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:mimeType="application/vnd.openxmlformats-officedocument.wordprocessingml.document"
android:scheme="file" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:mimeType="application/vnd.openxmlformats-officedocument.wordprocessingml.document" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND_MULTIPLE" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:mimeType="application/vnd.openxmlformats-officedocument.wordprocessingml.document" />
</intent-filter>
<!-- .odp -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/vnd.oasis.opendocument.presentation"
android:scheme="content" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/vnd.oasis.opendocument.presentation"
android:scheme="file" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/vnd.oasis.opendocument.presentation" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND_MULTIPLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/vnd.oasis.opendocument.presentation" />
</intent-filter>
<!-- .odt -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/vnd.oasis.opendocument.text"
android:scheme="content" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/vnd.oasis.opendocument.text"
android:scheme="file" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/vnd.oasis.opendocument.text" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND_MULTIPLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/vnd.oasis.opendocument.text" />
</intent-filter>
<!-- .ods -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/vnd.oasis.opendocument.spreadsheet"
android:scheme="content" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/vnd.oasis.opendocument.spreadsheet"
android:scheme="file" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/vnd.oasis.opendocument.spreadsheet" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND_MULTIPLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/vnd.oasis.opendocument.spreadsheet" />
</intent-filter>
<!-- .ppt -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/vnd.ms-powerpoint" android:scheme="content" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/vnd.ms-powerpoint" android:scheme="file" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/vnd.ms-powerpoint" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND_MULTIPLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/vnd.ms-powerpoint" />
</intent-filter>
<!-- .pptx -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:mimeType="application/vnd.openxmlformats-officedocument.presentationml.presentation"
android:scheme="content" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:mimeType="application/vnd.openxmlformats-officedocument.presentationml.presentation"
android:scheme="file" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:mimeType="application/vnd.openxmlformats-officedocument.presentationml.presentation" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND_MULTIPLE" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:mimeType="application/vnd.openxmlformats-officedocument.presentationml.presentation" />
</intent-filter>
<!-- .xls -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/vnd.ms-excel" android:scheme="content" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/vnd.ms-excel" android:scheme="file" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/vnd.ms-excel" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND_MULTIPLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/vnd.ms-excel" />
</intent-filter>
<!-- .xlsx -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
android:scheme="content" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
android:scheme="file" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND_MULTIPLE" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" />
</intent-filter>
<!-- END Snippet from https://github.com/qcasey/paperless_share -->
</activity> </activity>
<!-- Don't delete the meta-data below. <!-- Don't delete the meta-data below.
This is used by the Flutter tool to This is used by the Flutter tool to

View File

@@ -1,23 +1,35 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
///
/// Workaround class to change background color of chips without losing ripple effect.
/// Currently broken in flutter m3.
/// Applies only to light theme if [applyToDarkTheme] is not explicitly set to true.
///
class ColoredChipWrapper extends StatelessWidget { class ColoredChipWrapper extends StatelessWidget {
////
final Color? backgroundColor; final Color? backgroundColor;
final Widget child; final Widget child;
final bool applyToDarkTheme;
const ColoredChipWrapper({ const ColoredChipWrapper({
super.key, super.key,
this.backgroundColor, this.backgroundColor,
required this.child, required this.child,
this.applyToDarkTheme = false,
}); });
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
Color color = backgroundColor ?? Colors.lightGreen[50]!; final brightness = Theme.of(context).brightness;
if ((brightness == Brightness.dark && applyToDarkTheme) ||
return Theme( brightness == Brightness.light) {
data: Theme.of(context).copyWith( return Theme(
canvasColor: color, data: Theme.of(context).copyWith(
), canvasColor: backgroundColor ?? Colors.lightGreen[50]!,
child: child, ),
); child: child,
);
}
return child;
} }
} }

View File

@@ -7,6 +7,7 @@ import 'package:paperless_api/paperless_api.dart';
import 'package:paperless_mobile/core/service/file_service.dart'; import 'package:paperless_mobile/core/service/file_service.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
import 'package:url_launcher/url_launcher_string.dart'; import 'package:url_launcher/url_launcher_string.dart';
import 'package:open_filex/open_filex.dart';
part 'document_details_state.dart'; part 'document_details_state.dart';
@@ -47,21 +48,14 @@ class DocumentDetailsCubit extends Cubit<DocumentDetailsState> {
} }
} }
Future<bool> openDocumentInSystemViewer() async { Future<ResultType> openDocumentInSystemViewer() async {
final downloadDir = await FileService.temporaryDirectory; final downloadDir = await FileService.temporaryDirectory;
final metaData = await _api.getMetaData(state.document); final metaData = await _api.getMetaData(state.document);
final docBytes = await _api.download(state.document); final docBytes = await _api.download(state.document);
File f = File('${downloadDir.path}/${metaData.mediaFilename}'); File f = File('${downloadDir.path}/${metaData.mediaFilename}');
f.writeAsBytes(docBytes); f.writeAsBytes(docBytes);
final url = Uri( return OpenFilex.open(f.path, type: "application/pdf")
scheme: "file", .then((value) => value.type);
path: f.path,
);
log(url.toString());
if (await canLaunchUrl(url)) {
return launchUrl(url);
}
return false;
} }
void replaceDocument(DocumentModel document) { void replaceDocument(DocumentModel document) {

View File

@@ -5,12 +5,12 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
import 'package:open_filex/open_filex.dart';
import 'package:paperless_api/paperless_api.dart'; import 'package:paperless_api/paperless_api.dart';
import 'package:paperless_mobile/core/bloc/connectivity_cubit.dart'; import 'package:paperless_mobile/core/bloc/connectivity_cubit.dart';
import 'package:paperless_mobile/core/repository/state/impl/correspondent_repository_state.dart'; import 'package:paperless_mobile/core/repository/state/impl/correspondent_repository_state.dart';
import 'package:paperless_mobile/core/service/file_service.dart'; import 'package:paperless_mobile/core/translation/error_code_localization_mapper.dart';
import 'package:paperless_mobile/core/widgets/highlighted_text.dart'; import 'package:paperless_mobile/core/widgets/highlighted_text.dart';
import 'package:paperless_mobile/core/widgets/hint_card.dart';
import 'package:paperless_mobile/core/widgets/offline_widget.dart'; import 'package:paperless_mobile/core/widgets/offline_widget.dart';
import 'package:paperless_mobile/extensions/flutter_extensions.dart'; import 'package:paperless_mobile/extensions/flutter_extensions.dart';
import 'package:paperless_mobile/features/document_details/bloc/document_details_cubit.dart'; import 'package:paperless_mobile/features/document_details/bloc/document_details_cubit.dart';
@@ -20,8 +20,6 @@ import 'package:paperless_mobile/features/documents/view/pages/document_view.dar
import 'package:paperless_mobile/features/documents/view/widgets/delete_document_confirmation_dialog.dart'; import 'package:paperless_mobile/features/documents/view/widgets/delete_document_confirmation_dialog.dart';
import 'package:paperless_mobile/features/documents/view/widgets/document_preview.dart'; import 'package:paperless_mobile/features/documents/view/widgets/document_preview.dart';
import 'package:paperless_mobile/features/edit_document/cubit/edit_document_cubit.dart'; import 'package:paperless_mobile/features/edit_document/cubit/edit_document_cubit.dart';
import 'package:paperless_mobile/features/labels/correspondent/view/widgets/correspondent_widget.dart';
import 'package:paperless_mobile/features/labels/document_type/view/widgets/document_type_widget.dart';
import 'package:paperless_mobile/features/labels/storage_path/view/widgets/storage_path_widget.dart'; import 'package:paperless_mobile/features/labels/storage_path/view/widgets/storage_path_widget.dart';
import 'package:paperless_mobile/features/labels/tags/view/widgets/tags_widget.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/features/labels/view/widgets/label_text.dart';
@@ -75,9 +73,15 @@ class _DocumentDetailsPageState extends State<DocumentDetailsPage> {
return b.Badge( return b.Badge(
position: b.BadgePosition.topEnd(top: -12, end: -6), position: b.BadgePosition.topEnd(top: -12, end: -6),
showBadge: _filteredSuggestions.hasSuggestions, showBadge: _filteredSuggestions.hasSuggestions,
child: FloatingActionButton( child: Tooltip(
child: const Icon(Icons.edit), message:
onPressed: () => _onEdit(state.document), S.of(context).documentDetailsPageEditTooltip,
preferBelow: false,
verticalOffset: 40,
child: FloatingActionButton(
child: const Icon(Icons.edit),
onPressed: () => _onEdit(state.document),
),
), ),
badgeContent: Text( badgeContent: Text(
'${_filteredSuggestions.suggestionsCount}', '${_filteredSuggestions.suggestionsCount}',
@@ -86,7 +90,6 @@ class _DocumentDetailsPageState extends State<DocumentDetailsPage> {
), ),
), ),
badgeColor: Colors.red, badgeColor: Colors.red,
//TODO: Wait for stable version of m3, then use AlignmentDirectional.topEnd
); );
}, },
); );
@@ -104,33 +107,40 @@ class _DocumentDetailsPageState extends State<DocumentDetailsPage> {
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
IconButton( IconButton(
tooltip:
S.of(context).documentDetailsPageDeleteTooltip,
icon: const Icon(Icons.delete), icon: const Icon(Icons.delete),
onPressed: widget.allowEdit && isConnected onPressed: widget.allowEdit && isConnected
? () => _onDelete(state.document) ? () => _onDelete(state.document)
: null, : null,
).paddedSymmetrically(horizontal: 4), ).paddedSymmetrically(horizontal: 4),
Tooltip( Tooltip(
message: "Download", message:
S.of(context).documentDetailsPageDownloadTooltip,
child: DocumentDownloadButton( child: DocumentDownloadButton(
document: state.document, document: state.document,
enabled: isConnected, enabled: isConnected,
), ),
), ),
IconButton( IconButton(
tooltip:
S.of(context).documentDetailsPagePreviewTooltip,
icon: const Icon(Icons.visibility), icon: const Icon(Icons.visibility),
onPressed: isConnected onPressed: isConnected
? () => _onOpen(state.document) ? () => _onOpen(state.document)
: null, : null,
).paddedOnly(right: 4.0), ).paddedOnly(right: 4.0),
// IconButton(
// icon: const Icon(Icons.open_in_new),
// onPressed: isConnected
// ? context
// .read<DocumentDetailsCubit>()
// .openDocumentInSystemViewer
// : null,
// ).paddedOnly(right: 4.0),
IconButton( IconButton(
tooltip: S
.of(context)
.documentDetailsPageOpenInSystemViewerTooltip,
icon: const Icon(Icons.open_in_new),
onPressed:
isConnected ? _onOpenFileInSystemViewer : null,
).paddedOnly(right: 4.0),
IconButton(
tooltip:
S.of(context).documentDetailsPageShareTooltip,
icon: const Icon(Icons.share), icon: const Icon(Icons.share),
onPressed: isConnected onPressed: isConnected
? () => _onShare(state.document) ? () => _onShare(state.document)
@@ -270,6 +280,23 @@ class _DocumentDetailsPageState extends State<DocumentDetailsPage> {
} }
} }
void _onOpenFileInSystemViewer() async {
final status =
await context.read<DocumentDetailsCubit>().openDocumentInSystemViewer();
if (status == ResultType.done) return;
if (status == ResultType.noAppToOpen) {
showGenericError(context,
S.of(context).documentDetailsPageNoPdfViewerFoundErrorMessage);
}
if (status == ResultType.fileNotFound) {
showGenericError(context, translateError(context, ErrorCode.unknown));
}
if (status == ResultType.permissionDenied) {
showGenericError(context,
S.of(context).documentDetailsPageOpenPdfPermissionDeniedErrorMessage);
}
}
Widget _buildDocumentMetaDataView(DocumentModel document) { Widget _buildDocumentMetaDataView(DocumentModel document) {
return BlocBuilder<ConnectivityCubit, ConnectivityState>( return BlocBuilder<ConnectivityCubit, ConnectivityState>(
builder: (context, state) { builder: (context, state) {

View File

@@ -16,7 +16,7 @@ import 'package:paperless_mobile/features/documents/view/widgets/new_items_loadi
import 'package:paperless_mobile/features/documents/view/widgets/search/document_filter_panel.dart'; import 'package:paperless_mobile/features/documents/view/widgets/search/document_filter_panel.dart';
import 'package:paperless_mobile/features/documents/view/widgets/selection/bulk_delete_confirmation_dialog.dart'; import 'package:paperless_mobile/features/documents/view/widgets/selection/bulk_delete_confirmation_dialog.dart';
import 'package:paperless_mobile/features/documents/view/widgets/sort_documents_button.dart'; import 'package:paperless_mobile/features/documents/view/widgets/sort_documents_button.dart';
import 'package:paperless_mobile/features/home/view/widget/info_drawer.dart'; import 'package:paperless_mobile/features/home/view/widget/app_drawer.dart';
import 'package:paperless_mobile/features/labels/bloc/providers/labels_bloc_provider.dart'; import 'package:paperless_mobile/features/labels/bloc/providers/labels_bloc_provider.dart';
import 'package:paperless_mobile/features/login/bloc/authentication_cubit.dart'; import 'package:paperless_mobile/features/login/bloc/authentication_cubit.dart';
import 'package:paperless_mobile/features/saved_view/cubit/saved_view_cubit.dart'; import 'package:paperless_mobile/features/saved_view/cubit/saved_view_cubit.dart';
@@ -131,7 +131,7 @@ class _DocumentsPageState extends State<DocumentsPage> {
return Scaffold( return Scaffold(
drawer: BlocProvider.value( drawer: BlocProvider.value(
value: context.read<AuthenticationCubit>(), value: context.read<AuthenticationCubit>(),
child: InfoDrawer( child: AppDrawer(
afterInboxClosed: () => context.read<DocumentsCubit>().reload(), afterInboxClosed: () => context.read<DocumentsCubit>().reload(),
), ),
), ),

View File

@@ -84,8 +84,8 @@ class AdaptiveDocumentsView extends StatelessWidget {
Widget _buildGridView() { Widget _buildGridView() {
return SliverGrid.builder( return SliverGrid.builder(
gridDelegate: const SliverGridDelegateWithMaxCrossAxisExtent( gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
maxCrossAxisExtent: 178, crossAxisCount: 2,
mainAxisSpacing: 4, mainAxisSpacing: 4,
crossAxisSpacing: 4, crossAxisSpacing: 4,
childAspectRatio: 1 / 2, childAspectRatio: 1 / 2,

View File

@@ -21,7 +21,7 @@ import 'package:paperless_mobile/features/documents/bloc/documents_cubit.dart';
import 'package:paperless_mobile/features/documents/view/pages/documents_page.dart'; import 'package:paperless_mobile/features/documents/view/pages/documents_page.dart';
import 'package:paperless_mobile/features/home/view/route_description.dart'; import 'package:paperless_mobile/features/home/view/route_description.dart';
import 'package:paperless_mobile/features/home/view/widget/bottom_navigation_bar.dart'; import 'package:paperless_mobile/features/home/view/widget/bottom_navigation_bar.dart';
import 'package:paperless_mobile/features/home/view/widget/info_drawer.dart'; import 'package:paperless_mobile/features/home/view/widget/app_drawer.dart';
import 'package:paperless_mobile/features/labels/view/pages/labels_page.dart'; import 'package:paperless_mobile/features/labels/view/pages/labels_page.dart';
import 'package:paperless_mobile/features/notifications/services/local_notification_service.dart'; import 'package:paperless_mobile/features/notifications/services/local_notification_service.dart';
import 'package:paperless_mobile/features/saved_view/cubit/saved_view_cubit.dart'; import 'package:paperless_mobile/features/saved_view/cubit/saved_view_cubit.dart';
@@ -102,7 +102,7 @@ class _HomePageState extends State<HomePage> {
final filename = extractFilenameFromPath(mediaFile.path); final filename = extractFilenameFromPath(mediaFile.path);
final extension = p.extension(mediaFile.path); final extension = p.extension(mediaFile.path);
try { try {
if (File(mediaFile.path).existsSync()) { if (await File(mediaFile.path).exists()) {
final bytes = File(mediaFile.path).readAsBytesSync(); final bytes = File(mediaFile.path).readAsBytesSync();
final success = await Navigator.push<bool>( final success = await Navigator.push<bool>(
context, context,
@@ -238,7 +238,7 @@ class _HomePageState extends State<HomePage> {
if (!sizingInformation.isMobile) { if (!sizingInformation.isMobile) {
return Scaffold( return Scaffold(
key: rootScaffoldKey, key: rootScaffoldKey,
drawer: const InfoDrawer(), drawer: const AppDrawer(),
body: Row( body: Row(
children: [ children: [
NavigationRail( NavigationRail(
@@ -266,7 +266,7 @@ class _HomePageState extends State<HomePage> {
destinations: destinations:
destinations.map((e) => e.toNavigationDestination()).toList(), destinations.map((e) => e.toNavigationDestination()).toList(),
), ),
drawer: const InfoDrawer(), drawer: const AppDrawer(),
body: routes[_currentIndex], body: routes[_currentIndex],
); );
}, },

View File

@@ -1,5 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:hydrated_bloc/hydrated_bloc.dart';
import 'package:package_info_plus/package_info_plus.dart'; import 'package:package_info_plus/package_info_plus.dart';
import 'package:paperless_api/paperless_api.dart'; import 'package:paperless_api/paperless_api.dart';
import 'package:paperless_mobile/core/bloc/paperless_server_information_cubit.dart'; import 'package:paperless_mobile/core/bloc/paperless_server_information_cubit.dart';
@@ -23,24 +24,24 @@ import 'package:paperless_mobile/util.dart';
import 'package:url_launcher/link.dart'; import 'package:url_launcher/link.dart';
import 'package:url_launcher/url_launcher_string.dart'; import 'package:url_launcher/url_launcher_string.dart';
class InfoDrawer extends StatefulWidget { class AppDrawer extends StatefulWidget {
final VoidCallback? afterInboxClosed; final VoidCallback? afterInboxClosed;
const InfoDrawer({Key? key, this.afterInboxClosed}) : super(key: key); const AppDrawer({Key? key, this.afterInboxClosed}) : super(key: key);
@override @override
State<InfoDrawer> createState() => _InfoDrawerState(); State<AppDrawer> createState() => _AppDrawerState();
} }
enum NavigationDestinations { // enum NavigationDestinations {
inbox, // inbox,
settings, // settings,
reportBug, // reportBug,
about, // about,
logout; // logout;
} // }
class _InfoDrawerState extends State<InfoDrawer> { class _AppDrawerState extends State<AppDrawer> {
late final Future<PackageInfo> _packageInfo; late final Future<PackageInfo> _packageInfo;
@override @override
@@ -219,7 +220,7 @@ class _InfoDrawerState extends State<InfoDrawer> {
], ],
), ),
decoration: BoxDecoration( decoration: BoxDecoration(
color: Theme.of(context).colorScheme.surfaceVariant, color: Theme.of(context).colorScheme.primaryContainer,
), ),
), ),
...[ ...[
@@ -280,22 +281,23 @@ class _InfoDrawerState extends State<InfoDrawer> {
); );
} }
void _onLogout() { void _onLogout() async {
try { try {
context.read<AuthenticationCubit>().logout(); await context.read<AuthenticationCubit>().logout();
context.read<LocalVault>().clear(); await context.read<LocalVault>().clear();
context.read<ApplicationSettingsCubit>().clear(); await context.read<ApplicationSettingsCubit>().clear();
context.read<LabelRepository<Tag, TagRepositoryState>>().clear(); await context.read<LabelRepository<Tag, TagRepositoryState>>().clear();
context await context
.read<LabelRepository<Correspondent, CorrespondentRepositoryState>>() .read<LabelRepository<Correspondent, CorrespondentRepositoryState>>()
.clear(); .clear();
context await context
.read<LabelRepository<DocumentType, DocumentTypeRepositoryState>>() .read<LabelRepository<DocumentType, DocumentTypeRepositoryState>>()
.clear(); .clear();
context await context
.read<LabelRepository<StoragePath, StoragePathRepositoryState>>() .read<LabelRepository<StoragePath, StoragePathRepositoryState>>()
.clear(); .clear();
context.read<SavedViewRepository>().clear(); await context.read<SavedViewRepository>().clear();
await HydratedBloc.storage.clear();
} on PaperlessServerException catch (error, stackTrace) { } on PaperlessServerException catch (error, stackTrace) {
showErrorMessage(context, error, stackTrace); showErrorMessage(context, error, stackTrace);
} }

View File

@@ -80,6 +80,7 @@ class InboxCubit extends HydratedCubit<InboxState> with DocumentsPagingMixin {
), ),
); );
} }
emit(state.copyWith(inboxTags: inboxTags));
return updateFilter( return updateFilter(
filter: DocumentFilter( filter: DocumentFilter(
sortField: SortField.added, sortField: SortField.added,

View File

@@ -15,7 +15,7 @@ class TagWidget extends StatelessWidget {
this.isClickable = true, this.isClickable = true,
required this.onSelected, required this.onSelected,
this.showShortName = false, this.showShortName = false,
this.dense = false, this.dense = true,
}); });
@override @override

View File

@@ -45,7 +45,7 @@ class TagsWidget extends StatelessWidget {
return Wrap( return Wrap(
runAlignment: WrapAlignment.start, runAlignment: WrapAlignment.start,
children: children, children: children,
runSpacing: 8, runSpacing: 4,
spacing: 4, spacing: 4,
); );
} else { } else {

View File

@@ -16,7 +16,7 @@ import 'package:paperless_mobile/features/edit_label/view/impl/edit_corresponden
import 'package:paperless_mobile/features/edit_label/view/impl/edit_document_type_page.dart'; import 'package:paperless_mobile/features/edit_label/view/impl/edit_document_type_page.dart';
import 'package:paperless_mobile/features/edit_label/view/impl/edit_storage_path_page.dart'; import 'package:paperless_mobile/features/edit_label/view/impl/edit_storage_path_page.dart';
import 'package:paperless_mobile/features/edit_label/view/impl/edit_tag_page.dart'; import 'package:paperless_mobile/features/edit_label/view/impl/edit_tag_page.dart';
import 'package:paperless_mobile/features/home/view/widget/info_drawer.dart'; import 'package:paperless_mobile/features/home/view/widget/app_drawer.dart';
import 'package:paperless_mobile/features/labels/bloc/providers/correspondent_bloc_provider.dart'; import 'package:paperless_mobile/features/labels/bloc/providers/correspondent_bloc_provider.dart';
import 'package:paperless_mobile/features/labels/bloc/providers/document_type_bloc_provider.dart'; import 'package:paperless_mobile/features/labels/bloc/providers/document_type_bloc_provider.dart';
import 'package:paperless_mobile/features/labels/bloc/providers/storage_path_bloc_provider.dart'; import 'package:paperless_mobile/features/labels/bloc/providers/storage_path_bloc_provider.dart';
@@ -51,7 +51,7 @@ class _LabelsPageState extends State<LabelsPage>
child: BlocBuilder<ConnectivityCubit, ConnectivityState>( child: BlocBuilder<ConnectivityCubit, ConnectivityState>(
builder: (context, connectedState) { builder: (context, connectedState) {
return Scaffold( return Scaffold(
drawer: const InfoDrawer(), drawer: const AppDrawer(),
appBar: AppBar( appBar: AppBar(
title: Text( title: Text(
[ [

View File

@@ -22,7 +22,7 @@ import 'package:paperless_mobile/core/widgets/offline_banner.dart';
import 'package:paperless_mobile/features/document_upload/cubit/document_upload_cubit.dart'; import 'package:paperless_mobile/features/document_upload/cubit/document_upload_cubit.dart';
import 'package:paperless_mobile/features/document_upload/view/document_upload_preparation_page.dart'; import 'package:paperless_mobile/features/document_upload/view/document_upload_preparation_page.dart';
import 'package:paperless_mobile/features/documents/view/pages/document_view.dart'; import 'package:paperless_mobile/features/documents/view/pages/document_view.dart';
import 'package:paperless_mobile/features/home/view/widget/info_drawer.dart'; import 'package:paperless_mobile/features/home/view/widget/app_drawer.dart';
import 'package:paperless_mobile/features/scan/bloc/document_scanner_cubit.dart'; import 'package:paperless_mobile/features/scan/bloc/document_scanner_cubit.dart';
import 'package:paperless_mobile/features/scan/view/widgets/grid_image_item_widget.dart'; import 'package:paperless_mobile/features/scan/view/widgets/grid_image_item_widget.dart';
import 'package:paperless_mobile/features/tasks/cubit/task_status_cubit.dart'; import 'package:paperless_mobile/features/tasks/cubit/task_status_cubit.dart';
@@ -47,7 +47,7 @@ class _ScannerPageState extends State<ScannerPage>
return BlocBuilder<ConnectivityCubit, ConnectivityState>( return BlocBuilder<ConnectivityCubit, ConnectivityState>(
builder: (context, connectedState) { builder: (context, connectedState) {
return Scaffold( return Scaffold(
drawer: const InfoDrawer(), drawer: const AppDrawer(),
floatingActionButton: FloatingActionButton( floatingActionButton: FloatingActionButton(
onPressed: () => _openDocumentScanner(context), onPressed: () => _openDocumentScanner(context),
child: const Icon(Icons.add_a_photo_outlined), child: const Icon(Icons.add_a_photo_outlined),
@@ -82,7 +82,7 @@ class _ScannerPageState extends State<ScannerPage>
), ),
) )
: null, : null,
icon: const Icon(Icons.preview), icon: const Icon(Icons.visibility),
tooltip: S.of(context).documentScannerPageResetButtonTooltipText, tooltip: S.of(context).documentScannerPageResetButtonTooltipText,
); );
}, },

View File

@@ -1,4 +1,5 @@
import 'dart:collection'; import 'dart:collection';
import 'dart:developer';
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
import 'package:receive_sharing_intent/receive_sharing_intent.dart'; import 'package:receive_sharing_intent/receive_sharing_intent.dart';
@@ -11,11 +12,14 @@ class ShareIntentQueue extends ChangeNotifier {
static final instance = ShareIntentQueue._(); static final instance = ShareIntentQueue._();
void add(SharedMediaFile file) { void add(SharedMediaFile file) {
debugPrint("Adding received file to queue: ${file.path}");
_queue.add(file); _queue.add(file);
notifyListeners(); notifyListeners();
} }
void addAll(Iterable<SharedMediaFile> files) { void addAll(Iterable<SharedMediaFile> files) {
debugPrint(
"Adding received files to queue: ${files.map((e) => e.path).join(",")}");
_queue.addAll(files); _queue.addAll(files);
notifyListeners(); notifyListeners();
} }

View File

@@ -64,8 +64,24 @@
"@documentDeleteSuccessMessage": {}, "@documentDeleteSuccessMessage": {},
"documentDetailsPageAssignAsnButtonLabel": "Přiřadit", "documentDetailsPageAssignAsnButtonLabel": "Přiřadit",
"@documentDetailsPageAssignAsnButtonLabel": {}, "@documentDetailsPageAssignAsnButtonLabel": {},
"documentDetailsPageLoadFullContentLabel": "", "documentDetailsPageDeleteTooltip": "Delete",
"@documentDetailsPageDeleteTooltip": {},
"documentDetailsPageDownloadTooltip": "Download",
"@documentDetailsPageDownloadTooltip": {},
"documentDetailsPageEditTooltip": "Edit",
"@documentDetailsPageEditTooltip": {},
"documentDetailsPageLoadFullContentLabel": "Načíst celý obsah",
"@documentDetailsPageLoadFullContentLabel": {}, "@documentDetailsPageLoadFullContentLabel": {},
"documentDetailsPageNoPdfViewerFoundErrorMessage": "No app to display PDF files found!",
"@documentDetailsPageNoPdfViewerFoundErrorMessage": {},
"documentDetailsPageOpenInSystemViewerTooltip": "Open in system viewer",
"@documentDetailsPageOpenInSystemViewerTooltip": {},
"documentDetailsPageOpenPdfPermissionDeniedErrorMessage": "Could not open file: Permission denied.",
"@documentDetailsPageOpenPdfPermissionDeniedErrorMessage": {},
"documentDetailsPagePreviewTooltip": "Preview",
"@documentDetailsPagePreviewTooltip": {},
"documentDetailsPageShareTooltip": "Share",
"@documentDetailsPageShareTooltip": {},
"documentDetailsPageSimilarDocumentsLabel": "Podobné dokumenty", "documentDetailsPageSimilarDocumentsLabel": "Podobné dokumenty",
"@documentDetailsPageSimilarDocumentsLabel": {}, "@documentDetailsPageSimilarDocumentsLabel": {},
"documentDetailsPageTabContentLabel": "Obsah", "documentDetailsPageTabContentLabel": "Obsah",
@@ -78,7 +94,7 @@
"@documentDocumentTypePropertyLabel": {}, "@documentDocumentTypePropertyLabel": {},
"documentDownloadSuccessMessage": "Dokument úspěšně stažen.", "documentDownloadSuccessMessage": "Dokument úspěšně stažen.",
"@documentDownloadSuccessMessage": {}, "@documentDownloadSuccessMessage": {},
"documentEditPageSuggestionsLabel": "", "documentEditPageSuggestionsLabel": "Návrhy:",
"@documentEditPageSuggestionsLabel": {}, "@documentEditPageSuggestionsLabel": {},
"documentEditPageTitle": "Upravit dokument", "documentEditPageTitle": "Upravit dokument",
"@documentEditPageTitle": {}, "@documentEditPageTitle": {},
@@ -158,7 +174,7 @@
"@documentsPageEmptyStateNothingHereText": {}, "@documentsPageEmptyStateNothingHereText": {},
"documentsPageEmptyStateOopsText": "Ajaj.", "documentsPageEmptyStateOopsText": "Ajaj.",
"@documentsPageEmptyStateOopsText": {}, "@documentsPageEmptyStateOopsText": {},
"documentsPageNewDocumentAvailableText": "", "documentsPageNewDocumentAvailableText": "Dostupný nový dokument!",
"@documentsPageNewDocumentAvailableText": {}, "@documentsPageNewDocumentAvailableText": {},
"documentsPageOrderByLabel": "Řadit dle", "documentsPageOrderByLabel": "Řadit dle",
"@documentsPageOrderByLabel": {}, "@documentsPageOrderByLabel": {},
@@ -200,7 +216,7 @@
"@editLabelPageConfirmDeletionDialogTitle": {}, "@editLabelPageConfirmDeletionDialogTitle": {},
"editLabelPageDeletionDialogText": "Dokumenty mají přiřazen tento štítek. Odstraněním štítku bude označení odstraněno. Pokračovat?", "editLabelPageDeletionDialogText": "Dokumenty mají přiřazen tento štítek. Odstraněním štítku bude označení odstraněno. Pokračovat?",
"@editLabelPageDeletionDialogText": {}, "@editLabelPageDeletionDialogText": {},
"errorMessageAcknowledgeTasksError": "", "errorMessageAcknowledgeTasksError": "Could not acknowledge tasks.",
"@errorMessageAcknowledgeTasksError": {}, "@errorMessageAcknowledgeTasksError": {},
"errorMessageAuthenticationFailed": "Přihlášení selhalo, zkuste to znovu.", "errorMessageAuthenticationFailed": "Přihlášení selhalo, zkuste to znovu.",
"@errorMessageAuthenticationFailed": {}, "@errorMessageAuthenticationFailed": {},
@@ -258,7 +274,7 @@
"@errorMessageStoragePathCreateFailed": {}, "@errorMessageStoragePathCreateFailed": {},
"errorMessageStoragePathLoadFailed": "Nelze načíst cestu k úložišti.", "errorMessageStoragePathLoadFailed": "Nelze načíst cestu k úložišti.",
"@errorMessageStoragePathLoadFailed": {}, "@errorMessageStoragePathLoadFailed": {},
"errorMessageSuggestionsQueryError": "", "errorMessageSuggestionsQueryError": "Návrhy se nepodařilo načíst.",
"@errorMessageSuggestionsQueryError": {}, "@errorMessageSuggestionsQueryError": {},
"errorMessageTagCreateFailed": "Nelze vytvořit tag, zkuste to znovu.", "errorMessageTagCreateFailed": "Nelze vytvořit tag, zkuste to znovu.",
"@errorMessageTagCreateFailed": {}, "@errorMessageTagCreateFailed": {},
@@ -270,25 +286,25 @@
"@errorMessageUnsupportedFileFormat": {}, "@errorMessageUnsupportedFileFormat": {},
"errorReportLabel": "NAHLÁSIT", "errorReportLabel": "NAHLÁSIT",
"@errorReportLabel": {}, "@errorReportLabel": {},
"extendedDateRangeDialogAbsoluteLabel": "", "extendedDateRangeDialogAbsoluteLabel": "Absolutní",
"@extendedDateRangeDialogAbsoluteLabel": {}, "@extendedDateRangeDialogAbsoluteLabel": {},
"extendedDateRangeDialogHintText": "", "extendedDateRangeDialogHintText": "Tip: Kromě konkrétního data lze také specifikovat relativní časovou odchylku k aktuálnímu datu.",
"@extendedDateRangeDialogHintText": {}, "@extendedDateRangeDialogHintText": {},
"extendedDateRangeDialogRelativeAmountLabel": "", "extendedDateRangeDialogRelativeAmountLabel": "Počet",
"@extendedDateRangeDialogRelativeAmountLabel": {}, "@extendedDateRangeDialogRelativeAmountLabel": {},
"extendedDateRangeDialogRelativeLabel": "", "extendedDateRangeDialogRelativeLabel": "Relativní",
"@extendedDateRangeDialogRelativeLabel": {}, "@extendedDateRangeDialogRelativeLabel": {},
"extendedDateRangeDialogRelativeLastLabel": "", "extendedDateRangeDialogRelativeLastLabel": "Poslední",
"@extendedDateRangeDialogRelativeLastLabel": {}, "@extendedDateRangeDialogRelativeLastLabel": {},
"extendedDateRangeDialogRelativeTimeUnitLabel": "", "extendedDateRangeDialogRelativeTimeUnitLabel": "Časové jednotky",
"@extendedDateRangeDialogRelativeTimeUnitLabel": {}, "@extendedDateRangeDialogRelativeTimeUnitLabel": {},
"extendedDateRangeDialogTitle": "", "extendedDateRangeDialogTitle": "Vybrat časové rozmezí",
"@extendedDateRangeDialogTitle": {}, "@extendedDateRangeDialogTitle": {},
"extendedDateRangePickerAfterLabel": "", "extendedDateRangePickerAfterLabel": "Po",
"@extendedDateRangePickerAfterLabel": {}, "@extendedDateRangePickerAfterLabel": {},
"extendedDateRangePickerBeforeLabel": "", "extendedDateRangePickerBeforeLabel": "Před",
"@extendedDateRangePickerBeforeLabel": {}, "@extendedDateRangePickerBeforeLabel": {},
"extendedDateRangePickerDayText": "{count, plural, other{}}", "extendedDateRangePickerDayText": "{count, plural, zero{} one{den} few{dny} many{dnů} other{}}",
"@extendedDateRangePickerDayText": { "@extendedDateRangePickerDayText": {
"placeholders": { "placeholders": {
"count": {} "count": {}
@@ -306,9 +322,9 @@
"count": {} "count": {}
} }
}, },
"extendedDateRangePickerLastText": "", "extendedDateRangePickerLastText": "Poslední",
"@extendedDateRangePickerLastText": {}, "@extendedDateRangePickerLastText": {},
"extendedDateRangePickerLastWeeksLabel": "{count, plural, other{}}", "extendedDateRangePickerLastWeeksLabel": "{count, plural, zero{} one{minulý týden} few{poslední {count} týdny} many{posledních {count} týdnů} other{}}",
"@extendedDateRangePickerLastWeeksLabel": { "@extendedDateRangePickerLastWeeksLabel": {
"placeholders": { "placeholders": {
"count": {} "count": {}
@@ -320,25 +336,25 @@
"count": {} "count": {}
} }
}, },
"extendedDateRangePickerMonthText": "{count, plural, other{}}", "extendedDateRangePickerMonthText": "{count, plural, zero{} one{měsíc} few{mesíce} many{měsíců} other{}}",
"@extendedDateRangePickerMonthText": { "@extendedDateRangePickerMonthText": {
"placeholders": { "placeholders": {
"count": {} "count": {}
} }
}, },
"extendedDateRangePickerWeekText": "{count, plural, other{}}", "extendedDateRangePickerWeekText": "{count, plural, zero{} one{týden} few{týdny} many{týdnů} other{}}",
"@extendedDateRangePickerWeekText": { "@extendedDateRangePickerWeekText": {
"placeholders": { "placeholders": {
"count": {} "count": {}
} }
}, },
"extendedDateRangePickerYearText": "{count, plural, other{}}", "extendedDateRangePickerYearText": "{count, plural, zero{} one{rok} few{roky} many{let} other{}}",
"@extendedDateRangePickerYearText": { "@extendedDateRangePickerYearText": {
"placeholders": { "placeholders": {
"count": {} "count": {}
} }
}, },
"genericAcknowledgeLabel": "", "genericAcknowledgeLabel": "Rozumím!",
"@genericAcknowledgeLabel": {}, "@genericAcknowledgeLabel": {},
"genericActionCancelLabel": "Zrušit", "genericActionCancelLabel": "Zrušit",
"@genericActionCancelLabel": {}, "@genericActionCancelLabel": {},
@@ -360,7 +376,7 @@
"@genericActionUploadLabel": {}, "@genericActionUploadLabel": {},
"genericMessageOfflineText": "Jste offline.", "genericMessageOfflineText": "Jste offline.",
"@genericMessageOfflineText": {}, "@genericMessageOfflineText": {},
"inboxPageAssignAsnLabel": "", "inboxPageAssignAsnLabel": "Assign ASN",
"@inboxPageAssignAsnLabel": {}, "@inboxPageAssignAsnLabel": {},
"inboxPageDocumentRemovedMessageText": "Dokument odstraněn z inboxu.", "inboxPageDocumentRemovedMessageText": "Dokument odstraněn z inboxu.",
"@inboxPageDocumentRemovedMessageText": {}, "@inboxPageDocumentRemovedMessageText": {},
@@ -376,9 +392,9 @@
"@inboxPageNoNewDocumentsRefreshLabel": {}, "@inboxPageNoNewDocumentsRefreshLabel": {},
"inboxPageNoNewDocumentsText": "Nemáte neshlédnuté dokumenty.", "inboxPageNoNewDocumentsText": "Nemáte neshlédnuté dokumenty.",
"@inboxPageNoNewDocumentsText": {}, "@inboxPageNoNewDocumentsText": {},
"inboxPageQuickActionsLabel": "", "inboxPageQuickActionsLabel": "Quick Action",
"@inboxPageQuickActionsLabel": {}, "@inboxPageQuickActionsLabel": {},
"inboxPageSuggestionSuccessfullyAppliedMessage": "", "inboxPageSuggestionSuccessfullyAppliedMessage": "Suggestion successfully applied.",
"@inboxPageSuggestionSuccessfullyAppliedMessage": {}, "@inboxPageSuggestionSuccessfullyAppliedMessage": {},
"inboxPageTodayText": "Dnes", "inboxPageTodayText": "Dnes",
"@inboxPageTodayText": {}, "@inboxPageTodayText": {},
@@ -442,7 +458,7 @@
"@loginPageClientCertificateSettingLabel": {}, "@loginPageClientCertificateSettingLabel": {},
"loginPageClientCertificateSettingSelectFileText": "Vybrat soubor...", "loginPageClientCertificateSettingSelectFileText": "Vybrat soubor...",
"@loginPageClientCertificateSettingSelectFileText": {}, "@loginPageClientCertificateSettingSelectFileText": {},
"loginPageContinueLabel": "", "loginPageContinueLabel": "Pokračovat",
"@loginPageContinueLabel": {}, "@loginPageContinueLabel": {},
"loginPageIncorrectOrMissingCertificatePassphraseErrorMessageText": "Chybná nebo chybějící heslová fráze certifikátu.", "loginPageIncorrectOrMissingCertificatePassphraseErrorMessageText": "Chybná nebo chybějící heslová fráze certifikátu.",
"@loginPageIncorrectOrMissingCertificatePassphraseErrorMessageText": {}, "@loginPageIncorrectOrMissingCertificatePassphraseErrorMessageText": {},
@@ -452,31 +468,31 @@
"@loginPagePasswordFieldLabel": {}, "@loginPagePasswordFieldLabel": {},
"loginPagePasswordValidatorMessageText": "Heslo nesmí být prázdné.", "loginPagePasswordValidatorMessageText": "Heslo nesmí být prázdné.",
"@loginPagePasswordValidatorMessageText": {}, "@loginPagePasswordValidatorMessageText": {},
"loginPageReachabilityConnectionTimeoutText": "", "loginPageReachabilityConnectionTimeoutText": "Čas spojení vypršel.",
"@loginPageReachabilityConnectionTimeoutText": {}, "@loginPageReachabilityConnectionTimeoutText": {},
"loginPageReachabilityInvalidClientCertificateConfigurationText": "", "loginPageReachabilityInvalidClientCertificateConfigurationText": "Špatné nebo chybějící heslo certifikátu.",
"@loginPageReachabilityInvalidClientCertificateConfigurationText": {}, "@loginPageReachabilityInvalidClientCertificateConfigurationText": {},
"loginPageReachabilityMissingClientCertificateText": "", "loginPageReachabilityMissingClientCertificateText": "A client certificate was expected but not sent. Please provide a certificate.",
"@loginPageReachabilityMissingClientCertificateText": {}, "@loginPageReachabilityMissingClientCertificateText": {},
"loginPageReachabilityNotReachableText": "", "loginPageReachabilityNotReachableText": "Could not establish a connection to the server.",
"@loginPageReachabilityNotReachableText": {}, "@loginPageReachabilityNotReachableText": {},
"loginPageReachabilitySuccessText": "", "loginPageReachabilitySuccessText": "Připojení úspěšně vytvořeno.",
"@loginPageReachabilitySuccessText": {}, "@loginPageReachabilitySuccessText": {},
"loginPageReachabilityUnresolvedHostText": "", "loginPageReachabilityUnresolvedHostText": "Host could not be resolved. Please check the server address and your internet connection. ",
"@loginPageReachabilityUnresolvedHostText": {}, "@loginPageReachabilityUnresolvedHostText": {},
"loginPageServerUrlFieldLabel": "'Adresa serveru", "loginPageServerUrlFieldLabel": "'Adresa serveru",
"@loginPageServerUrlFieldLabel": {}, "@loginPageServerUrlFieldLabel": {},
"loginPageServerUrlValidatorMessageInvalidAddressText": "", "loginPageServerUrlValidatorMessageInvalidAddressText": "Neplatná adresa",
"@loginPageServerUrlValidatorMessageInvalidAddressText": {}, "@loginPageServerUrlValidatorMessageInvalidAddressText": {},
"loginPageServerUrlValidatorMessageMissingSchemeText": "", "loginPageServerUrlValidatorMessageMissingSchemeText": "Server address must include a scheme.",
"@loginPageServerUrlValidatorMessageMissingSchemeText": {}, "@loginPageServerUrlValidatorMessageMissingSchemeText": {},
"loginPageServerUrlValidatorMessageRequiredText": "Adresa serveru nesmí být prázdná.", "loginPageServerUrlValidatorMessageRequiredText": "Adresa serveru nesmí být prázdná.",
"@loginPageServerUrlValidatorMessageRequiredText": {}, "@loginPageServerUrlValidatorMessageRequiredText": {},
"loginPageSignInButtonLabel": "", "loginPageSignInButtonLabel": "Přihlásit",
"@loginPageSignInButtonLabel": {}, "@loginPageSignInButtonLabel": {},
"loginPageSignInTitle": "", "loginPageSignInTitle": "Přihlásit",
"@loginPageSignInTitle": {}, "@loginPageSignInTitle": {},
"loginPageSignInToPrefixText": "", "loginPageSignInToPrefixText": "Přihlásit k {serverAddress}",
"@loginPageSignInToPrefixText": { "@loginPageSignInToPrefixText": {
"placeholders": { "placeholders": {
"serverAddress": {} "serverAddress": {}
@@ -488,29 +504,29 @@
"@loginPageUsernameLabel": {}, "@loginPageUsernameLabel": {},
"loginPageUsernameValidatorMessageText": "Jméno uživatele nesmí být prázdné.", "loginPageUsernameValidatorMessageText": "Jméno uživatele nesmí být prázdné.",
"@loginPageUsernameValidatorMessageText": {}, "@loginPageUsernameValidatorMessageText": {},
"matchingAlgorithmAllDescription": "", "matchingAlgorithmAllDescription": "Document contains all of these words",
"@matchingAlgorithmAllDescription": {}, "@matchingAlgorithmAllDescription": {},
"matchingAlgorithmAllName": "", "matchingAlgorithmAllName": "Vše",
"@matchingAlgorithmAllName": {}, "@matchingAlgorithmAllName": {},
"matchingAlgorithmAnyDescription": "", "matchingAlgorithmAnyDescription": "Document contains any of these words",
"@matchingAlgorithmAnyDescription": {}, "@matchingAlgorithmAnyDescription": {},
"matchingAlgorithmAnyName": "", "matchingAlgorithmAnyName": "Jakékoliv slovo",
"@matchingAlgorithmAnyName": {}, "@matchingAlgorithmAnyName": {},
"matchingAlgorithmAutoDescription": "", "matchingAlgorithmAutoDescription": "Learn matching automatically",
"@matchingAlgorithmAutoDescription": {}, "@matchingAlgorithmAutoDescription": {},
"matchingAlgorithmAutoName": "", "matchingAlgorithmAutoName": "Auto",
"@matchingAlgorithmAutoName": {}, "@matchingAlgorithmAutoName": {},
"matchingAlgorithmExactDescription": "", "matchingAlgorithmExactDescription": "Document contains this string",
"@matchingAlgorithmExactDescription": {}, "@matchingAlgorithmExactDescription": {},
"matchingAlgorithmExactName": "", "matchingAlgorithmExactName": "Exact",
"@matchingAlgorithmExactName": {}, "@matchingAlgorithmExactName": {},
"matchingAlgorithmFuzzyDescription": "", "matchingAlgorithmFuzzyDescription": "Document contains a word similar to this word",
"@matchingAlgorithmFuzzyDescription": {}, "@matchingAlgorithmFuzzyDescription": {},
"matchingAlgorithmFuzzyName": "", "matchingAlgorithmFuzzyName": "Fuzzy",
"@matchingAlgorithmFuzzyName": {}, "@matchingAlgorithmFuzzyName": {},
"matchingAlgorithmRegexDescription": "", "matchingAlgorithmRegexDescription": "Document matches this regular expression",
"@matchingAlgorithmRegexDescription": {}, "@matchingAlgorithmRegexDescription": {},
"matchingAlgorithmRegexName": "", "matchingAlgorithmRegexName": "Regular Expression",
"@matchingAlgorithmRegexName": {}, "@matchingAlgorithmRegexName": {},
"offlineWidgetText": "Nezdařilo se vytvořit připojení k internetu.", "offlineWidgetText": "Nezdařilo se vytvořit připojení k internetu.",
"@offlineWidgetText": {}, "@offlineWidgetText": {},
@@ -518,7 +534,7 @@
"@onboardingDoneButtonLabel": {}, "@onboardingDoneButtonLabel": {},
"onboardingNextButtonLabel": "Další", "onboardingNextButtonLabel": "Další",
"@onboardingNextButtonLabel": {}, "@onboardingNextButtonLabel": {},
"receiveSharedFilePermissionDeniedMessage": "", "receiveSharedFilePermissionDeniedMessage": "Přístup k obdrženému souboru zamítnut. Než budeš sdílet, zkus nejdříve otevřít aplikaci.",
"@receiveSharedFilePermissionDeniedMessage": {}, "@receiveSharedFilePermissionDeniedMessage": {},
"referencedDocumentsReadOnlyHintText": "Tento náhled nelze upravovat! Nelze upravovat nebo odstraňovat dokumenty. Bude načteno maximálně 100 odkazovaných dokumentů.", "referencedDocumentsReadOnlyHintText": "Tento náhled nelze upravovat! Nelze upravovat nebo odstraňovat dokumenty. Bude načteno maximálně 100 odkazovaných dokumentů.",
"@referencedDocumentsReadOnlyHintText": {}, "@referencedDocumentsReadOnlyHintText": {},
@@ -582,12 +598,12 @@
"@tagInboxTagPropertyLabel": {}, "@tagInboxTagPropertyLabel": {},
"uploadPageAutomaticallInferredFieldsHintText": "Pokud specifikuješ hodnoty pro tato pole, paperless instance nebude automaticky přiřazovat naučené hodnoty. Pokud mají být tato pole automaticky vyplňována, nevyplňujte zde nic.", "uploadPageAutomaticallInferredFieldsHintText": "Pokud specifikuješ hodnoty pro tato pole, paperless instance nebude automaticky přiřazovat naučené hodnoty. Pokud mají být tato pole automaticky vyplňována, nevyplňujte zde nic.",
"@uploadPageAutomaticallInferredFieldsHintText": {}, "@uploadPageAutomaticallInferredFieldsHintText": {},
"verifyIdentityPageDescriptionText": "", "verifyIdentityPageDescriptionText": "Use the configured biometric factor to authenticate and unlock your documents.",
"@verifyIdentityPageDescriptionText": {}, "@verifyIdentityPageDescriptionText": {},
"verifyIdentityPageLogoutButtonLabel": "", "verifyIdentityPageLogoutButtonLabel": "Odpojit",
"@verifyIdentityPageLogoutButtonLabel": {}, "@verifyIdentityPageLogoutButtonLabel": {},
"verifyIdentityPageTitle": "", "verifyIdentityPageTitle": "Ověř svou identitu",
"@verifyIdentityPageTitle": {}, "@verifyIdentityPageTitle": {},
"verifyIdentityPageVerifyIdentityButtonLabel": "", "verifyIdentityPageVerifyIdentityButtonLabel": "Ověřit identitu",
"@verifyIdentityPageVerifyIdentityButtonLabel": {} "@verifyIdentityPageVerifyIdentityButtonLabel": {}
} }

View File

@@ -64,8 +64,24 @@
"@documentDeleteSuccessMessage": {}, "@documentDeleteSuccessMessage": {},
"documentDetailsPageAssignAsnButtonLabel": "Zuweisen", "documentDetailsPageAssignAsnButtonLabel": "Zuweisen",
"@documentDetailsPageAssignAsnButtonLabel": {}, "@documentDetailsPageAssignAsnButtonLabel": {},
"documentDetailsPageDeleteTooltip": "Löschen",
"@documentDetailsPageDeleteTooltip": {},
"documentDetailsPageDownloadTooltip": "Herunterladen",
"@documentDetailsPageDownloadTooltip": {},
"documentDetailsPageEditTooltip": "Bearbeiten",
"@documentDetailsPageEditTooltip": {},
"documentDetailsPageLoadFullContentLabel": "Lade gesamten Inhalt", "documentDetailsPageLoadFullContentLabel": "Lade gesamten Inhalt",
"@documentDetailsPageLoadFullContentLabel": {}, "@documentDetailsPageLoadFullContentLabel": {},
"documentDetailsPageNoPdfViewerFoundErrorMessage": "Es wurde keine App zum Anzeigen von PDF Dateien gefunden!",
"@documentDetailsPageNoPdfViewerFoundErrorMessage": {},
"documentDetailsPageOpenInSystemViewerTooltip": "In System-Viewer öffnen",
"@documentDetailsPageOpenInSystemViewerTooltip": {},
"documentDetailsPageOpenPdfPermissionDeniedErrorMessage": "Datei konnte nicht geöffnet werden: Zugriff verweigert.",
"@documentDetailsPageOpenPdfPermissionDeniedErrorMessage": {},
"documentDetailsPagePreviewTooltip": "Vorschau",
"@documentDetailsPagePreviewTooltip": {},
"documentDetailsPageShareTooltip": "Teilen",
"@documentDetailsPageShareTooltip": {},
"documentDetailsPageSimilarDocumentsLabel": "Similar Documents", "documentDetailsPageSimilarDocumentsLabel": "Similar Documents",
"@documentDetailsPageSimilarDocumentsLabel": {}, "@documentDetailsPageSimilarDocumentsLabel": {},
"documentDetailsPageTabContentLabel": "Inhalt", "documentDetailsPageTabContentLabel": "Inhalt",

View File

@@ -64,8 +64,24 @@
"@documentDeleteSuccessMessage": {}, "@documentDeleteSuccessMessage": {},
"documentDetailsPageAssignAsnButtonLabel": "Assign", "documentDetailsPageAssignAsnButtonLabel": "Assign",
"@documentDetailsPageAssignAsnButtonLabel": {}, "@documentDetailsPageAssignAsnButtonLabel": {},
"documentDetailsPageDeleteTooltip": "Delete",
"@documentDetailsPageDeleteTooltip": {},
"documentDetailsPageDownloadTooltip": "Download",
"@documentDetailsPageDownloadTooltip": {},
"documentDetailsPageEditTooltip": "Edit",
"@documentDetailsPageEditTooltip": {},
"documentDetailsPageLoadFullContentLabel": "Load full content", "documentDetailsPageLoadFullContentLabel": "Load full content",
"@documentDetailsPageLoadFullContentLabel": {}, "@documentDetailsPageLoadFullContentLabel": {},
"documentDetailsPageNoPdfViewerFoundErrorMessage": "No app to display PDF files found!",
"@documentDetailsPageNoPdfViewerFoundErrorMessage": {},
"documentDetailsPageOpenInSystemViewerTooltip": "Open in system viewer",
"@documentDetailsPageOpenInSystemViewerTooltip": {},
"documentDetailsPageOpenPdfPermissionDeniedErrorMessage": "Could not open file: Permission denied.",
"@documentDetailsPageOpenPdfPermissionDeniedErrorMessage": {},
"documentDetailsPagePreviewTooltip": "Preview",
"@documentDetailsPagePreviewTooltip": {},
"documentDetailsPageShareTooltip": "Share",
"@documentDetailsPageShareTooltip": {},
"documentDetailsPageSimilarDocumentsLabel": "Similar Documents", "documentDetailsPageSimilarDocumentsLabel": "Similar Documents",
"@documentDetailsPageSimilarDocumentsLabel": {}, "@documentDetailsPageSimilarDocumentsLabel": {},
"documentDetailsPageTabContentLabel": "Content", "documentDetailsPageTabContentLabel": "Content",
@@ -288,7 +304,7 @@
"@extendedDateRangePickerAfterLabel": {}, "@extendedDateRangePickerAfterLabel": {},
"extendedDateRangePickerBeforeLabel": "Before", "extendedDateRangePickerBeforeLabel": "Before",
"@extendedDateRangePickerBeforeLabel": {}, "@extendedDateRangePickerBeforeLabel": {},
"extendedDateRangePickerDayText": "{count, plural, zero{} one{day} other{days}}", "extendedDateRangePickerDayText": "{count, plural, zero{days} one{day} other{days}}",
"@extendedDateRangePickerDayText": { "@extendedDateRangePickerDayText": {
"placeholders": { "placeholders": {
"count": {} "count": {}

View File

@@ -1,6 +1,6 @@
{ {
"@@locale": "tr", "@@locale": "tr",
"aboutDialogDevelopedByText": "", "aboutDialogDevelopedByText": "Developed by {name}",
"@aboutDialogDevelopedByText": { "@aboutDialogDevelopedByText": {
"placeholders": { "placeholders": {
"name": {} "name": {}
@@ -50,7 +50,7 @@
"@deleteViewDialogContentText": {}, "@deleteViewDialogContentText": {},
"deleteViewDialogTitleText": "Görünümü sil", "deleteViewDialogTitleText": "Görünümü sil",
"@deleteViewDialogTitleText": {}, "@deleteViewDialogTitleText": {},
"documentAddedPropertyLabel": "", "documentAddedPropertyLabel": "Added at",
"@documentAddedPropertyLabel": {}, "@documentAddedPropertyLabel": {},
"documentArchiveSerialNumberPropertyLongLabel": "Arşiv Seri Numarası", "documentArchiveSerialNumberPropertyLongLabel": "Arşiv Seri Numarası",
"@documentArchiveSerialNumberPropertyLongLabel": {}, "@documentArchiveSerialNumberPropertyLongLabel": {},
@@ -58,14 +58,30 @@
"@documentArchiveSerialNumberPropertyShortLabel": {}, "@documentArchiveSerialNumberPropertyShortLabel": {},
"documentCorrespondentPropertyLabel": "Ek Yazarlar", "documentCorrespondentPropertyLabel": "Ek Yazarlar",
"@documentCorrespondentPropertyLabel": {}, "@documentCorrespondentPropertyLabel": {},
"documentCreatedPropertyLabel": "", "documentCreatedPropertyLabel": "Created at",
"@documentCreatedPropertyLabel": {}, "@documentCreatedPropertyLabel": {},
"documentDeleteSuccessMessage": "Doküman başarıyla silindi.", "documentDeleteSuccessMessage": "Doküman başarıyla silindi.",
"@documentDeleteSuccessMessage": {}, "@documentDeleteSuccessMessage": {},
"documentDetailsPageAssignAsnButtonLabel": "Ata", "documentDetailsPageAssignAsnButtonLabel": "Ata",
"@documentDetailsPageAssignAsnButtonLabel": {}, "@documentDetailsPageAssignAsnButtonLabel": {},
"documentDetailsPageDeleteTooltip": "Delete",
"@documentDetailsPageDeleteTooltip": {},
"documentDetailsPageDownloadTooltip": "Download",
"@documentDetailsPageDownloadTooltip": {},
"documentDetailsPageEditTooltip": "Edit",
"@documentDetailsPageEditTooltip": {},
"documentDetailsPageLoadFullContentLabel": "Tüm içeriği yükle", "documentDetailsPageLoadFullContentLabel": "Tüm içeriği yükle",
"@documentDetailsPageLoadFullContentLabel": {}, "@documentDetailsPageLoadFullContentLabel": {},
"documentDetailsPageNoPdfViewerFoundErrorMessage": "No app to display PDF files found!",
"@documentDetailsPageNoPdfViewerFoundErrorMessage": {},
"documentDetailsPageOpenInSystemViewerTooltip": "Open in system viewer",
"@documentDetailsPageOpenInSystemViewerTooltip": {},
"documentDetailsPageOpenPdfPermissionDeniedErrorMessage": "Could not open file: Permission denied.",
"@documentDetailsPageOpenPdfPermissionDeniedErrorMessage": {},
"documentDetailsPagePreviewTooltip": "Preview",
"@documentDetailsPagePreviewTooltip": {},
"documentDetailsPageShareTooltip": "Share",
"@documentDetailsPageShareTooltip": {},
"documentDetailsPageSimilarDocumentsLabel": "Benzer Belgeler", "documentDetailsPageSimilarDocumentsLabel": "Benzer Belgeler",
"@documentDetailsPageSimilarDocumentsLabel": {}, "@documentDetailsPageSimilarDocumentsLabel": {},
"documentDetailsPageTabContentLabel": "İçerik", "documentDetailsPageTabContentLabel": "İçerik",
@@ -108,7 +124,7 @@
"@documentMetaDataOriginalFileSizeLabel": {}, "@documentMetaDataOriginalFileSizeLabel": {},
"documentMetaDataOriginalMimeTypeLabel": "Orijinal MIME-Tipi", "documentMetaDataOriginalMimeTypeLabel": "Orijinal MIME-Tipi",
"@documentMetaDataOriginalMimeTypeLabel": {}, "@documentMetaDataOriginalMimeTypeLabel": {},
"documentModifiedPropertyLabel": "", "documentModifiedPropertyLabel": "Modified at",
"@documentModifiedPropertyLabel": {}, "@documentModifiedPropertyLabel": {},
"documentPreviewPageTitle": "Ön izleme", "documentPreviewPageTitle": "Ön izleme",
"@documentPreviewPageTitle": {}, "@documentPreviewPageTitle": {},
@@ -142,7 +158,7 @@
"@documentsFilterPageDateRangeLastYearLabel": {}, "@documentsFilterPageDateRangeLastYearLabel": {},
"documentsFilterPageQueryOptionsAsnLabel": "ASN", "documentsFilterPageQueryOptionsAsnLabel": "ASN",
"@documentsFilterPageQueryOptionsAsnLabel": {}, "@documentsFilterPageQueryOptionsAsnLabel": {},
"documentsFilterPageQueryOptionsExtendedLabel": "", "documentsFilterPageQueryOptionsExtendedLabel": "Extended",
"@documentsFilterPageQueryOptionsExtendedLabel": {}, "@documentsFilterPageQueryOptionsExtendedLabel": {},
"documentsFilterPageQueryOptionsTitleAndContentLabel": "Başlık & İçerik", "documentsFilterPageQueryOptionsTitleAndContentLabel": "Başlık & İçerik",
"@documentsFilterPageQueryOptionsTitleAndContentLabel": {}, "@documentsFilterPageQueryOptionsTitleAndContentLabel": {},
@@ -398,7 +414,7 @@
"@labelIsInsensivitePropertyLabel": {}, "@labelIsInsensivitePropertyLabel": {},
"labelMatchingAlgorithmPropertyLabel": "Eşleştirme Algoritması", "labelMatchingAlgorithmPropertyLabel": "Eşleştirme Algoritması",
"@labelMatchingAlgorithmPropertyLabel": {}, "@labelMatchingAlgorithmPropertyLabel": {},
"labelMatchPropertyLabel": "", "labelMatchPropertyLabel": "Match",
"@labelMatchPropertyLabel": {}, "@labelMatchPropertyLabel": {},
"labelNamePropertyLabel": "İsim", "labelNamePropertyLabel": "İsim",
"@labelNamePropertyLabel": {}, "@labelNamePropertyLabel": {},
@@ -408,7 +424,7 @@
"@labelsPageCorrespondentEmptyStateAddNewLabel": {}, "@labelsPageCorrespondentEmptyStateAddNewLabel": {},
"labelsPageCorrespondentEmptyStateDescriptionText": "Herhangi bir ek yazar ayarlamamışsınız gibi görünüyor.", "labelsPageCorrespondentEmptyStateDescriptionText": "Herhangi bir ek yazar ayarlamamışsınız gibi görünüyor.",
"@labelsPageCorrespondentEmptyStateDescriptionText": {}, "@labelsPageCorrespondentEmptyStateDescriptionText": {},
"labelsPageCorrespondentsTitleText": "", "labelsPageCorrespondentsTitleText": "Correspondents",
"@labelsPageCorrespondentsTitleText": {}, "@labelsPageCorrespondentsTitleText": {},
"labelsPageDocumentTypeEmptyStateAddNewLabel": "Yeni döküman türü ekle", "labelsPageDocumentTypeEmptyStateAddNewLabel": "Yeni döküman türü ekle",
"@labelsPageDocumentTypeEmptyStateAddNewLabel": {}, "@labelsPageDocumentTypeEmptyStateAddNewLabel": {},
@@ -488,29 +504,29 @@
"@loginPageUsernameLabel": {}, "@loginPageUsernameLabel": {},
"loginPageUsernameValidatorMessageText": "Kullanıcı adı boş bırakılamaz.", "loginPageUsernameValidatorMessageText": "Kullanıcı adı boş bırakılamaz.",
"@loginPageUsernameValidatorMessageText": {}, "@loginPageUsernameValidatorMessageText": {},
"matchingAlgorithmAllDescription": "", "matchingAlgorithmAllDescription": "Document contains all of these words",
"@matchingAlgorithmAllDescription": {}, "@matchingAlgorithmAllDescription": {},
"matchingAlgorithmAllName": "", "matchingAlgorithmAllName": "All",
"@matchingAlgorithmAllName": {}, "@matchingAlgorithmAllName": {},
"matchingAlgorithmAnyDescription": "", "matchingAlgorithmAnyDescription": "Document contains any of these words",
"@matchingAlgorithmAnyDescription": {}, "@matchingAlgorithmAnyDescription": {},
"matchingAlgorithmAnyName": "", "matchingAlgorithmAnyName": "Any",
"@matchingAlgorithmAnyName": {}, "@matchingAlgorithmAnyName": {},
"matchingAlgorithmAutoDescription": "", "matchingAlgorithmAutoDescription": "Learn matching automatically",
"@matchingAlgorithmAutoDescription": {}, "@matchingAlgorithmAutoDescription": {},
"matchingAlgorithmAutoName": "", "matchingAlgorithmAutoName": "Auto",
"@matchingAlgorithmAutoName": {}, "@matchingAlgorithmAutoName": {},
"matchingAlgorithmExactDescription": "", "matchingAlgorithmExactDescription": "Document contains this string",
"@matchingAlgorithmExactDescription": {}, "@matchingAlgorithmExactDescription": {},
"matchingAlgorithmExactName": "", "matchingAlgorithmExactName": "Exact",
"@matchingAlgorithmExactName": {}, "@matchingAlgorithmExactName": {},
"matchingAlgorithmFuzzyDescription": "", "matchingAlgorithmFuzzyDescription": "Document contains a word similar to this word",
"@matchingAlgorithmFuzzyDescription": {}, "@matchingAlgorithmFuzzyDescription": {},
"matchingAlgorithmFuzzyName": "", "matchingAlgorithmFuzzyName": "Fuzzy",
"@matchingAlgorithmFuzzyName": {}, "@matchingAlgorithmFuzzyName": {},
"matchingAlgorithmRegexDescription": "", "matchingAlgorithmRegexDescription": "Document matches this regular expression",
"@matchingAlgorithmRegexDescription": {}, "@matchingAlgorithmRegexDescription": {},
"matchingAlgorithmRegexName": "", "matchingAlgorithmRegexName": "Regular Expression",
"@matchingAlgorithmRegexName": {}, "@matchingAlgorithmRegexName": {},
"offlineWidgetText": "İnternet bağlantısı kurulamadı.", "offlineWidgetText": "İnternet bağlantısı kurulamadı.",
"@offlineWidgetText": {}, "@offlineWidgetText": {},

View File

@@ -1,3 +1,5 @@
import 'dart:developer';
import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:encrypted_shared_preferences/encrypted_shared_preferences.dart'; import 'package:encrypted_shared_preferences/encrypted_shared_preferences.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@@ -132,6 +134,7 @@ void main() async {
//Update language header in interceptor on language change. //Update language header in interceptor on language change.
appSettingsCubit.stream.listen((event) => languageHeaderInterceptor appSettingsCubit.stream.listen((event) => languageHeaderInterceptor
.preferredLocaleSubtag = event.preferredLocaleSubtag); .preferredLocaleSubtag = event.preferredLocaleSubtag);
runApp( runApp(
MultiProvider( MultiProvider(
providers: [ providers: [
@@ -261,9 +264,6 @@ class _PaperlessMobileEntrypointState extends State<PaperlessMobileEntrypoint> {
), ),
), ),
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
chipTheme: ChipThemeData(
backgroundColor: Colors.lightGreen[50],
),
listTileTheme: const ListTileThemeData( listTileTheme: const ListTileThemeData(
tileColor: Colors.transparent, tileColor: Colors.transparent,
), ),

View File

@@ -981,6 +981,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.0.2" version: "1.0.2"
open_filex:
dependency: "direct main"
description:
name: open_filex
sha256: "854aefd72dfd74219dc8c8d1767c34ec1eae64b8399a5be317bddb1ec2108915"
url: "https://pub.dev"
source: hosted
version: "4.3.2"
package_config: package_config:
dependency: transitive dependency: transitive
description: description:

View File

@@ -16,7 +16,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. # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
# Read more about iOS versioning at # Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version: 1.5.1+14 version: 1.5.2+15
environment: environment:
sdk: '>=3.0.0-35.0.dev <4.0.0' sdk: '>=3.0.0-35.0.dev <4.0.0'
@@ -86,6 +86,7 @@ dependencies:
flutter_local_notifications: ^13.0.0 flutter_local_notifications: ^13.0.0
flutter_staggered_grid_view: ^0.6.2 flutter_staggered_grid_view: ^0.6.2
responsive_builder: ^0.4.3 responsive_builder: ^0.4.3
open_filex: ^4.3.2
dev_dependencies: dev_dependencies:
integration_test: integration_test:
@@ -145,8 +146,10 @@ flutter:
flutter_intl: flutter_intl:
enabled: true enabled: true
main_locale: en main_locale: en
localizely: localizely:
project_id: 84b4144d-a628-4ba6-a8d0-4f9917444057 project_id: 84b4144d-a628-4ba6-a8d0-4f9917444057
download_empty_as: main
flutter_native_splash: flutter_native_splash:
image: assets/logos/paperless_logo_green.png image: assets/logos/paperless_logo_green.png