From 3708b917c4febbf6161acb5dd97a7544e9127078 Mon Sep 17 00:00:00 2001 From: Kima Date: Wed, 13 Nov 2024 20:25:13 +0100 Subject: [PATCH] finished qr scanner (test) --- refilc/lib/api/providers/sync.dart | 4 +- .../settings/settings_screen.i18n.dart | 9 ++++ .../settings/submenu/code_scanner.dart | 42 +++++++++++++++++-- 3 files changed, 50 insertions(+), 5 deletions(-) diff --git a/refilc/lib/api/providers/sync.dart b/refilc/lib/api/providers/sync.dart index 81fca47..94b28d4 100644 --- a/refilc/lib/api/providers/sync.dart +++ b/refilc/lib/api/providers/sync.dart @@ -59,8 +59,8 @@ Future syncAll(BuildContext context) { tasks = [ // refresh login syncStatus(() async { - // print(user.user?.accessTokenExpire); - // print('${user.user?.accessToken ?? "no token"} - ACCESS TOKEN'); + print(user.user?.accessTokenExpire); + print('${user.user?.accessToken ?? "no token"} - ACCESS TOKEN'); if (user.user == null) return; if (user.user!.accessTokenExpire.isBefore(DateTime.now())) { diff --git a/refilc_mobile_ui/lib/screens/settings/settings_screen.i18n.dart b/refilc_mobile_ui/lib/screens/settings/settings_screen.i18n.dart index 26a9cf1..a2a5e8f 100644 --- a/refilc_mobile_ui/lib/screens/settings/settings_screen.i18n.dart +++ b/refilc_mobile_ui/lib/screens/settings/settings_screen.i18n.dart @@ -132,6 +132,9 @@ extension SettingsLocalization on String { "other": "Other", "stickermap": "Sticker Map", "qr_scanner": "QR Scanner", + "camera_perm_error": + "Camera permission is required to scan QR codes.", + "invalid_qr_code": "Invalid QR code!", }, "hu_hu": { "heads_up": "Figyelem!", @@ -262,6 +265,9 @@ extension SettingsLocalization on String { "other": "Egyéb", "stickermap": "Matrica térkép", "qr_scanner": "QR Kódolvasó", + "camera_perm_error": + "A kamera engedély szükséges a QR kódok beolvasásához.", + "invalid_qr_code": "Érvénytelen QR kód!", }, "de_de": { "heads_up": "Achtung!", @@ -392,6 +398,9 @@ extension SettingsLocalization on String { "other": "Sonstiges", "stickermap": "Sticker Map", "qr_scanner": "QR-Scanner", + "camera_perm_error": + "Kameraberechtigung ist erforderlich, um QR-Codes zu scannen.", + "invalid_qr_code": "Ungültiger QR-Code!", }, }; diff --git a/refilc_mobile_ui/lib/screens/settings/submenu/code_scanner.dart b/refilc_mobile_ui/lib/screens/settings/submenu/code_scanner.dart index 5aec597..132f9d1 100644 --- a/refilc_mobile_ui/lib/screens/settings/submenu/code_scanner.dart +++ b/refilc_mobile_ui/lib/screens/settings/submenu/code_scanner.dart @@ -3,7 +3,10 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:flutter_feather_icons/flutter_feather_icons.dart'; import 'package:qr_code_scanner_plus/qr_code_scanner_plus.dart'; +import 'package:refilc/theme/colors/colors.dart'; +import 'package:refilc_mobile_ui/common/custom_snack_bar.dart'; import 'package:refilc_mobile_ui/screens/settings/settings_screen.i18n.dart'; +import 'package:url_launcher/url_launcher.dart'; class CodeScannerScreen extends StatefulWidget { const CodeScannerScreen({super.key}); @@ -113,18 +116,51 @@ class _CodeScannerScreenState extends State { this.controller = controller; }); controller.scannedDataStream.listen((scanData) { + controller.pauseCamera(); + setState(() { result = scanData; }); + + Navigator.of(context).pop(); + + if (scanData.code != null) { + if (scanData.code!.startsWith('qw://')) { + // String data = scanData.code!.replaceFirst('qw://', ''); + // check the qr id from api + // TODO: this qr shit + } else if (scanData.code!.startsWith('https://') || + scanData.code!.startsWith('http://')) { + Uri uri = Uri.parse(scanData.code!.replaceFirst('http', 'https')); + + if (uri.host.contains('refilc.hu') || + uri.host.contains('refilcapp.hu') || + uri.host.contains('filc.one')) { + launchUrl(uri, mode: LaunchMode.inAppBrowserView); + } else { + ScaffoldMessenger.of(context).showSnackBar(CustomSnackBar( + content: Text("invalid_qr_code".i18n, + style: const TextStyle(color: Colors.white)), + backgroundColor: AppColors.of(context).red, + context: context, + )); + } + } + // log(scanData.code); + // Provider.of(context, listen: false).syncAll(context); + } }); } void _onPermissionSet(BuildContext context, QRViewController ctrl, bool p) { // log('${DateTime.now().toIso8601String()}_onPermissionSet $p'); if (!p) { - ScaffoldMessenger.of(context).showSnackBar( - const SnackBar(content: Text('no Permission')), - ); + ScaffoldMessenger.of(context).showSnackBar(CustomSnackBar( + content: Text("camera_perm_error".i18n, + style: const TextStyle(color: Colors.white)), + backgroundColor: AppColors.of(context).red, + context: context, + )); } }