FEATURE move button to the scanner page

This commit is contained in:
konrad.lys@eu.equinix.com
2023-06-05 20:07:38 +02:00
parent dc552dc4a7
commit bf0351f23f
6 changed files with 142 additions and 82 deletions

View File

@@ -5,8 +5,6 @@ import 'package:equatable/equatable.dart';
import 'package:flutter/foundation.dart';
import 'package:paperless_api/paperless_api.dart';
import 'package:paperless_mobile/core/repository/label_repository.dart';
import 'package:paperless_mobile/features/notifications/services/local_notification_service.dart';
import 'package:paperless_mobile/core/service/file_service.dart';
part 'document_upload_state.dart';
@@ -15,9 +13,7 @@ class DocumentUploadCubit extends Cubit<DocumentUploadState> {
final LabelRepository _labelRepository;
final LocalNotificationService _notificationService;
DocumentUploadCubit(this._labelRepository, this._documentApi, this._notificationService)
DocumentUploadCubit(this._labelRepository, this._documentApi)
: super(const DocumentUploadState()) {
_labelRepository.addListener(
this,
@@ -53,18 +49,6 @@ class DocumentUploadCubit extends Cubit<DocumentUploadState> {
);
}
Future<void> saveLocally(
Uint8List bytes, String fileName, String preferredLocaleSubtag
) async {
var file = await FileService.saveToFile(bytes, fileName);
_notificationService.notifyFileSaved(
filename: fileName,
filePath: file.path,
finished: true,
locale: preferredLocaleSubtag,
);
}
@override
Future<void> close() async {
_labelRepository.removeListener(this);

View File

@@ -1,17 +1,12 @@
import 'dart:io';
import 'dart:typed_data';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_form_builder/flutter_form_builder.dart';
import 'package:hive/hive.dart';
import 'package:intl/date_symbol_data_local.dart';
import 'package:intl/intl.dart';
import 'package:paperless_api/paperless_api.dart';
import 'package:paperless_mobile/constants.dart';
import 'package:paperless_mobile/core/config/hive/hive_config.dart';
import 'package:paperless_mobile/core/database/tables/global_settings.dart';
import 'package:paperless_mobile/core/database/tables/local_user_account.dart';
import 'package:paperless_mobile/core/repository/label_repository.dart';
import 'package:paperless_mobile/core/type/types.dart';
@@ -24,8 +19,6 @@ import 'package:paperless_mobile/features/labels/view/widgets/label_form_field.d
import 'package:paperless_mobile/generated/l10n/app_localizations.dart';
import 'package:paperless_mobile/helpers/message_helpers.dart';
import 'package:paperless_mobile/helpers/permission_helpers.dart';
import 'package:permission_handler/permission_handler.dart';
class DocumentUploadResult {
final bool success;
@@ -82,8 +75,6 @@ class _DocumentUploadPreparationPageState extends State<DocumentUploadPreparatio
child: LinearProgressIndicator(), preferredSize: Size.fromHeight(4.0))
: null,
),
bottomNavigationBar: _buildBottomAppBar(),
floatingActionButtonLocation: FloatingActionButtonLocation.endDocked,
floatingActionButton: Visibility(
visible: MediaQuery.of(context).viewInsets.bottom == 0,
child: FloatingActionButton.extended(
@@ -300,30 +291,6 @@ class _DocumentUploadPreparationPageState extends State<DocumentUploadPreparatio
}
}
BlocBuilder<DocumentUploadCubit, DocumentUploadState> _buildBottomAppBar() {
return BlocBuilder<DocumentUploadCubit, DocumentUploadState>(
builder: (context, state) {
return BottomAppBar(
child: BlocBuilder<DocumentUploadCubit, DocumentUploadState>(
builder: (context, connectivityState) {
return Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
IconButton(
tooltip: "Save a local copy",
icon: const Icon(Icons.download),
onPressed: () => _onLocalSave(),
).paddedOnly(right: 4.0),
],
);
},
),
);
},
);
}
String _padWithExtension(String source, [String? extension]) {
final ext = extension ?? '.pdf';
return source.endsWith(ext) ? source : '$source$ext';
@@ -332,27 +299,4 @@ class _DocumentUploadPreparationPageState extends State<DocumentUploadPreparatio
String _formatFilename(String source) {
return source.replaceAll(RegExp(r"[\W_]"), "_").toLowerCase();
}
Future<void> _onLocalSave() async {
final cubit = context.read<DocumentUploadCubit>();
try {
final globalSettings = Hive.box<GlobalSettings>(HiveBoxes.globalSettings).getValue()!;
if (Platform.isAndroid && androidInfo!.version.sdkInt <= 29) {
final isGranted = await askForPermission(Permission.storage);
if (!isGranted) {
return;
//TODO: Ask user to grant permissions
}
}
final title = (_formKey.currentState?.fields[fkFileName]?.value ?? widget.filename) as String;
var fileName = "$title.${widget.fileExtension}";
await cubit.saveLocally(widget.fileBytes, fileName, globalSettings.preferredLocaleSubtag);
} catch (error) {
showGenericError(context, error);
}
}
}