From cddeaafde7124cb298341a37b75ab0ccd6689d3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maty=C3=A1=C5=A1=20Caras?= Date: Tue, 28 Nov 2023 20:10:34 +0100 Subject: [PATCH] =?UTF-8?q?feat:=20p=C5=99idat=20zobrazen=C3=AD=20alergen?= =?UTF-8?q?=C5=AF,=20opravit=20v=C4=9Bci=20po=20upgradu=20z=C3=A1vislost?= =?UTF-8?q?=C3=AD=20(#52)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-on: https://git.mnau.xyz/hernik/opencanteen/pulls/52 --- .flutter | 2 +- CHANGELOG.md | 6 + android/app/build.gradle | 2 +- android/app/src/main/AndroidManifest.xml | 1 + lib/l10n/app_cs.arb | 3 +- lib/l10n/app_en.arb | 3 +- lib/main.dart | 5 +- lib/okna/burza.dart | 2 +- lib/okna/jidelnicek.dart | 8 +- lib/okna/login.dart | 10 +- lib/okna/nastaveni.dart | 28 ++++- lib/okna/offline_jidelnicek.dart | 2 +- lib/okna/welcome.dart | 2 +- lib/pw/platformfield.dart | 4 +- lib/util.dart | 1 + pubspec.lock | 142 ++++++++++++----------- pubspec.yaml | 4 +- 17 files changed, 131 insertions(+), 94 deletions(-) diff --git a/.flutter b/.flutter index 2524052..7f20e5d 160000 --- a/.flutter +++ b/.flutter @@ -1 +1 @@ -Subproject commit 2524052335ec76bb03e04ede244b071f1b86d190 +Subproject commit 7f20e5d18ce4cb80c621533090a7c5113f5bdc52 diff --git a/CHANGELOG.md b/CHANGELOG.md index 954abf6..d586a18 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +# 1.10.0 +- Aktualizovat závislosti +- Změnit minSdk na 21 +- Přidat možnost zobrazit alergeny +- Změnit fungování oznámení s aktualizací knihovny +- Žádost o oprávnění k posílání oznámení by se mělo posílat už jen v případě, že uživatel bude chtít používat funkci oznámení # 1.9.1 - Opravit chybu s propisováním HTML do názvu obědů # 1.9.0 diff --git a/android/app/build.gradle b/android/app/build.gradle index 718fead..a9686a7 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -51,7 +51,7 @@ android { defaultConfig { applicationId "cz.hernikplays.opencanteen" - minSdkVersion 19 + minSdkVersion 21 targetSdkVersion 33 versionCode flutterVersionCode.toInteger() versionName flutterVersionName diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index ae6036b..52aa6ac 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,6 +1,7 @@ + createState() => _BurzaViewState(); diff --git a/lib/okna/jidelnicek.dart b/lib/okna/jidelnicek.dart index 60ebf83..6837597 100644 --- a/lib/okna/jidelnicek.dart +++ b/lib/okna/jidelnicek.dart @@ -18,7 +18,7 @@ import 'package:url_launcher/url_launcher.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; class MealView extends StatefulWidget { - const MealView({Key? key, required this.canteen}) : super(key: key); + const MealView({super.key, required this.canteen}); final Canteen canteen; @override State createState() => _MealViewState(); @@ -90,7 +90,7 @@ class _MealViewState extends State { try { uzivatel = await widget.canteen.ziskejUzivatele(); } catch (e) { - if (!widget.canteen.prihlasen) { + if (!widget.canteen.prihlasen && mounted) { Navigator.pushReplacement( context, platformRouter((c) => const LoginPage())); } @@ -122,7 +122,9 @@ class _MealViewState extends State { const SizedBox(width: 10), Flexible( child: Text( - j.nazev, + (settings.allergens && j.alergeny.isNotEmpty) + ? "${j.nazev} (${j.alergeny.map((e) => (e.kod != null) ? e.kod.toString() : e.nazev).join(', ')})" + : j.nazev, ), ), Text((j.naBurze) diff --git a/lib/okna/login.dart b/lib/okna/login.dart index d7d8640..d5f2d82 100644 --- a/lib/okna/login.dart +++ b/lib/okna/login.dart @@ -1,7 +1,6 @@ import 'package:canteenlib/canteenlib.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; import 'package:opencanteen/okna/welcome.dart'; import 'package:opencanteen/pw/platformbutton.dart'; @@ -9,14 +8,13 @@ import 'package:opencanteen/pw/platformfield.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import '../../loginmanager.dart'; -import '../../main.dart'; import '../../util.dart'; import '../pw/platformswitch.dart'; import 'jidelnicek.dart'; import 'offline_jidelnicek.dart'; class LoginPage extends StatefulWidget { - const LoginPage({Key? key}) : super(key: key); + const LoginPage({super.key}); @override State createState() => _LoginPageState(); } @@ -33,12 +31,6 @@ class _LoginPageState extends State { void initState() { super.initState(); LoginManager.getDetails().then((r) async { - // request android notification access - flutterLocalNotificationsPlugin - .resolvePlatformSpecificImplementation< - AndroidFlutterLocalNotificationsPlugin>() - ?.requestPermission(); - if (r != null) { // Autologin showDialog( diff --git a/lib/okna/nastaveni.dart b/lib/okna/nastaveni.dart index ada6201..38bc6f7 100644 --- a/lib/okna/nastaveni.dart +++ b/lib/okna/nastaveni.dart @@ -19,7 +19,7 @@ import '../../main.dart'; import '../../util.dart'; class AndroidNastaveni extends StatefulWidget { - const AndroidNastaveni({Key? key}) : super(key: key); + const AndroidNastaveni({super.key}); @override State createState() => _AndroidNastaveniState(); @@ -31,6 +31,7 @@ class _AndroidNastaveniState extends State { bool _checkWeek = false; bool _notifyMeal = false; bool _remember = false; + bool _allergens = false; TimeOfDay _notifTime = TimeOfDay.now(); final TextEditingController _countController = TextEditingController(text: "1"); @@ -81,6 +82,16 @@ class _AndroidNastaveniState extends State { sections: [ SettingsSection( tiles: [ + SettingsTile.switchTile( + initialValue: _allergens, + onToggle: (value) { + _allergens = value; + settings.allergens = value; + changeSetting("allergens", _allergens); + setState(() {}); + }, + title: Text(AppLocalizations.of(context)!.showAllergens), + ), SettingsTile.switchTile( initialValue: _saveOffline, onToggle: (value) { @@ -281,6 +292,19 @@ class _AndroidNastaveniState extends State { ticker: 'today meal'); var l = tz.getLocation(await FlutterNativeTimezone.getLocalTimezone()); + var notifGranted = await flutterLocalNotificationsPlugin + .resolvePlatformSpecificImplementation< + AndroidFlutterLocalNotificationsPlugin>() + ?.requestNotificationsPermission() ?? + true; // request android notification access + + var granted = await flutterLocalNotificationsPlugin + .resolvePlatformSpecificImplementation< + AndroidFlutterLocalNotificationsPlugin>() + ?.requestExactAlarmsPermission() ?? + true; // request android exact alarm permission + + if (!granted || !notifGranted) return; if (!mounted) return; await flutterLocalNotificationsPlugin.zonedSchedule( // schedules a notification @@ -289,7 +313,7 @@ class _AndroidNastaveniState extends State { "${jidlo.varianta} - ${jidlo.nazev}", tz.TZDateTime.from(den, l), const NotificationDetails(android: androidSpec), - androidAllowWhileIdle: true, + androidScheduleMode: AndroidScheduleMode.exactAllowWhileIdle, uiLocalNotificationDateInterpretation: UILocalNotificationDateInterpretation.absoluteTime); } on StateError catch (_) { diff --git a/lib/okna/offline_jidelnicek.dart b/lib/okna/offline_jidelnicek.dart index d70eb39..818cf4c 100644 --- a/lib/okna/offline_jidelnicek.dart +++ b/lib/okna/offline_jidelnicek.dart @@ -14,7 +14,7 @@ import 'package:url_launcher/url_launcher.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; class OfflineMealView extends StatefulWidget { - const OfflineMealView({Key? key}) : super(key: key); + const OfflineMealView({super.key}); @override State createState() => _OfflineMealViewState(); } diff --git a/lib/okna/welcome.dart b/lib/okna/welcome.dart index 5c1b9c5..ab736d7 100644 --- a/lib/okna/welcome.dart +++ b/lib/okna/welcome.dart @@ -7,7 +7,7 @@ import 'package:opencanteen/okna/jidelnicek.dart'; import 'package:opencanteen/util.dart'; class WelcomePage extends StatefulWidget { - const WelcomePage({Key? key, required this.canteen}) : super(key: key); + const WelcomePage({super.key, required this.canteen}); final Canteen canteen; diff --git a/lib/pw/platformfield.dart b/lib/pw/platformfield.dart index 17c8b51..8f23c80 100644 --- a/lib/pw/platformfield.dart +++ b/lib/pw/platformfield.dart @@ -5,7 +5,7 @@ import 'package:opencanteen/pw/platformwidget.dart'; class PlatformField extends PlatformWidget { final TextEditingController? controller; - final bool? enabled; + final bool enabled; final bool obscureText; final String? labelText; final bool autocorrect; @@ -16,13 +16,13 @@ class PlatformField extends PlatformWidget { const PlatformField({ super.key, this.controller, - this.enabled, this.labelText, this.obscureText = false, this.autocorrect = false, this.keyboardType, this.inputFormatters = const [], this.onChanged, + this.enabled = true, this.autofillHints, }); diff --git a/lib/util.dart b/lib/util.dart index 98d893f..64b5fc1 100644 --- a/lib/util.dart +++ b/lib/util.dart @@ -128,4 +128,5 @@ class SettingsManager { bool skipWeekend = false; bool checkOrdered = false; bool saveOffline = false; + bool allergens = false; } diff --git a/pubspec.lock b/pubspec.lock index 3a5ee75..481cd14 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,10 +5,10 @@ packages: dependency: transitive description: name: archive - sha256: e0902a06f0e00414e4e3438a084580161279f137aeb862274710f29ec10cf01e + sha256: "7b875fd4a20b165a3084bd2d210439b22ebc653f21cea4842729c0c30c82596b" url: "https://pub.dev" source: hosted - version: "3.3.9" + version: "3.4.9" args: dependency: transitive description: @@ -29,10 +29,10 @@ packages: dependency: "direct main" description: name: canteenlib - sha256: "28148d5e0bc833233c99b25e555a868b165d414463f40898215f141cbae51b40" + sha256: "7051fd7ad1b2e4e5471b7f55dd092a6586972aad2c0c8f31edf7f0ee5a7e4ee9" url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "3.0.6" characters: dependency: transitive description: @@ -89,14 +89,22 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.3" + csslib: + dependency: transitive + description: + name: csslib + sha256: "706b5707578e0c1b4b7550f64078f0a0f19dec3f50a178ffae7006b0a9ca58fb" + url: "https://pub.dev" + source: hosted + version: "1.0.0" dbus: dependency: transitive description: name: dbus - sha256: "6f07cba3f7b3448d42d015bfd3d53fe12e5b36da2423f23838efc1d5fb31a263" + sha256: "365c771ac3b0e58845f39ec6deebc76e3276aa9922b0cc60840712094d9047ac" url: "https://pub.dev" source: hosted - version: "0.7.8" + version: "0.7.10" dots_indicator: dependency: transitive description: @@ -117,10 +125,10 @@ packages: dependency: transitive description: name: file - sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" + sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c" url: "https://pub.dev" source: hosted - version: "6.1.4" + version: "7.0.0" flutter: dependency: "direct main" description: flutter @@ -284,18 +292,26 @@ packages: dependency: "direct main" description: name: fluttertoast - sha256: "474f7d506230897a3cd28c965ec21c5328ae5605fc9c400cd330e9e9d6ac175c" + sha256: dfdde255317af381bfc1c486ed968d5a43a2ded9c931e87cbecd88767d6a71c1 url: "https://pub.dev" source: hosted - version: "8.2.2" + version: "8.2.4" + html: + dependency: transitive + description: + name: html + sha256: "3a7812d5bcd2894edf53dfaf8cd640876cf6cef50a8f238745c8b8120ea74d3a" + url: "https://pub.dev" + source: hosted + version: "0.15.4" http: dependency: transitive description: name: http - sha256: "5895291c13fa8a3bd82e76d5627f69e0d85ca6a30dcac95c4ea19a5d555879c2" + sha256: d4872660c46d929f6b8a9ef4e7a7eff7e49bbf0c4ec3f385ee32df5119175139 url: "https://pub.dev" source: hosted - version: "0.13.6" + version: "1.1.2" http_parser: dependency: transitive description: @@ -308,10 +324,10 @@ packages: dependency: transitive description: name: image - sha256: a72242c9a0ffb65d03de1b7113bc4e189686fc07c7147b8b41811d0dd0e0d9bf + sha256: "028f61960d56f26414eb616b48b04eb37d700cbe477b7fb09bf1d7ce57fd9271" url: "https://pub.dev" source: hosted - version: "4.0.17" + version: "4.1.3" intl: dependency: "direct main" description: @@ -324,10 +340,10 @@ packages: dependency: "direct main" description: name: introduction_screen - sha256: ef5a5479a8e06a84b9a7eff16c698b9b82f70cd1b6203b264bc3686f9bfb77e2 + sha256: "72d25ceb71471773783f72783608e17585af93d4bc6474df577fcfe9e7842852" url: "https://pub.dev" source: hosted - version: "3.1.11" + version: "3.1.12" js: dependency: transitive description: @@ -356,18 +372,18 @@ packages: dependency: transitive description: name: material_color_utilities - sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" url: "https://pub.dev" source: hosted - version: "0.8.0" + version: "0.5.0" meta: dependency: transitive description: name: meta - sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04 + sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e url: "https://pub.dev" source: hosted - version: "1.11.0" + version: "1.10.0" package_info_plus: dependency: "direct main" description: @@ -404,10 +420,10 @@ packages: dependency: transitive description: name: path_provider_android - sha256: "6b8b19bd80da4f11ce91b2d1fb931f3006911477cec227cce23d3253d80df3f1" + sha256: e595b98692943b4881b219f0a9e3945118d3c16bd7e2813f98ec6e532d905f72 url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.2.1" path_provider_foundation: dependency: transitive description: @@ -444,26 +460,26 @@ packages: dependency: transitive description: name: petitparser - sha256: cb3798bef7fc021ac45b308f4b51208a152792445cce0448c9a4ba5879dd8750 + sha256: eeb2d1428ee7f4170e2bd498827296a18d4e7fc462b71727d111c0ac7707cfa6 url: "https://pub.dev" source: hosted - version: "5.4.0" + version: "6.0.1" platform: dependency: transitive description: name: platform - sha256: ae68c7bfcd7383af3629daafb32fb4e8681c7154428da4febcff06200585f102 + sha256: "0a279f0707af40c890e80b1e9df8bb761694c074ba7e1d4ab1bc4b728e200b59" url: "https://pub.dev" source: hosted - version: "3.1.2" + version: "3.1.3" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface - sha256: da3fdfeccc4d4ff2da8f8c556704c08f912542c5fb3cf2233ed75372384a034d + sha256: f4f88d4a900933e7267e2b353594774fc0d07fb072b47eedcd5b54e1ea3269f8 url: "https://pub.dev" source: hosted - version: "2.1.6" + version: "2.1.7" pointycastle: dependency: transitive description: @@ -472,14 +488,6 @@ packages: url: "https://pub.dev" source: hosted version: "3.7.3" - process: - dependency: transitive - description: - name: process - sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09" - url: "https://pub.dev" - source: hosted - version: "4.2.4" settings_ui: dependency: "direct main" description: @@ -492,10 +500,10 @@ packages: dependency: "direct main" description: name: shared_preferences - sha256: b7f41bad7e521d205998772545de63ff4e6c97714775902c199353f8bf1511ac + sha256: "81429e4481e1ccfb51ede496e916348668fd0921627779233bd24cc3ff6abd02" url: "https://pub.dev" source: hosted - version: "2.2.1" + version: "2.2.2" shared_preferences_android: dependency: transitive description: @@ -516,10 +524,10 @@ packages: dependency: transitive description: name: shared_preferences_linux - sha256: c2eb5bf57a2fe9ad6988121609e47d3e07bb3bdca5b6f8444e4cf302428a128a + sha256: "9f2cbcf46d4270ea8be39fa156d86379077c8a5228d9dfdb1164ae0bb93f1faa" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.3.2" shared_preferences_platform_interface: dependency: transitive description: @@ -532,18 +540,18 @@ packages: dependency: transitive description: name: shared_preferences_web - sha256: d762709c2bbe80626ecc819143013cc820fa49ca5e363620ee20a8b15a3e3daf + sha256: "7b15ffb9387ea3e237bb7a66b8a23d2147663d391cafc5c8f37b2e7b4bde5d21" url: "https://pub.dev" source: hosted - version: "2.2.1" + version: "2.2.2" shared_preferences_windows: dependency: transitive description: name: shared_preferences_windows - sha256: f763a101313bd3be87edffe0560037500967de9c394a714cd598d945517f694f + sha256: "841ad54f3c8381c480d0c9b508b89a34036f512482c407e6df7a9c4aa2ef8f59" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.3.2" sky_engine: dependency: transitive description: flutter @@ -593,66 +601,66 @@ packages: dependency: "direct main" description: name: url_launcher - sha256: "47e208a6711459d813ba18af120d9663c20bdf6985d6ad39fe165d2538378d27" + sha256: b1c9e98774adf8820c96fbc7ae3601231d324a7d5ebd8babe27b6dfac91357ba url: "https://pub.dev" source: hosted - version: "6.1.14" + version: "6.2.1" url_launcher_android: dependency: transitive description: name: url_launcher_android - sha256: b04af59516ab45762b2ca6da40fa830d72d0f6045cd97744450b73493fa76330 + sha256: "31222ffb0063171b526d3e569079cf1f8b294075ba323443fdc690842bfd4def" url: "https://pub.dev" source: hosted - version: "6.1.0" + version: "6.2.0" url_launcher_ios: dependency: transitive description: name: url_launcher_ios - sha256: "7c65021d5dee51813d652357bc65b8dd4a6177082a9966bc8ba6ee477baa795f" + sha256: bba3373219b7abb6b5e0d071b0fe66dfbe005d07517a68e38d4fc3638f35c6d3 url: "https://pub.dev" source: hosted - version: "6.1.5" + version: "6.2.1" url_launcher_linux: dependency: transitive description: name: url_launcher_linux - sha256: b651aad005e0cb06a01dbd84b428a301916dc75f0e7ea6165f80057fee2d8e8e + sha256: "9f2d390e096fdbe1e6e6256f97851e51afc2d9c423d3432f1d6a02a8a9a8b9fd" url: "https://pub.dev" source: hosted - version: "3.0.6" + version: "3.1.0" url_launcher_macos: dependency: transitive description: name: url_launcher_macos - sha256: b55486791f666e62e0e8ff825e58a023fd6b1f71c49926483f1128d3bbd8fe88 + sha256: b7244901ea3cf489c5335bdacda07264a6e960b1c1b1a9f91e4bc371d9e68234 url: "https://pub.dev" source: hosted - version: "3.0.7" + version: "3.1.0" url_launcher_platform_interface: dependency: transitive description: name: url_launcher_platform_interface - sha256: "95465b39f83bfe95fcb9d174829d6476216f2d548b79c38ab2506e0458787618" + sha256: "980e8d9af422f477be6948bdfb68df8433be71f5743a188968b0c1b887807e50" url: "https://pub.dev" source: hosted - version: "2.1.5" + version: "2.2.0" url_launcher_web: dependency: transitive description: name: url_launcher_web - sha256: "2942294a500b4fa0b918685aff406773ba0a4cd34b7f42198742a94083020ce5" + sha256: "138bd45b3a456dcfafc46d1a146787424f8d2edfbf2809c9324361e58f851cf7" url: "https://pub.dev" source: hosted - version: "2.0.20" + version: "2.2.1" url_launcher_windows: dependency: transitive description: name: url_launcher_windows - sha256: "95fef3129dc7cfaba2bc3d5ba2e16063bb561fc6d78e63eee16162bc70029069" + sha256: "7754a1ad30ee896b265f8d14078b0513a4dba28d358eabb9d5f339886f4a1adc" url: "https://pub.dev" source: hosted - version: "3.0.8" + version: "3.1.0" vector_math: dependency: transitive description: @@ -673,26 +681,26 @@ packages: dependency: transitive description: name: win32 - sha256: "9e82a402b7f3d518fb9c02d0e9ae45952df31b9bf34d77baf19da2de03fc2aaa" + sha256: "7c99c0e1e2fa190b48d25c81ca5e42036d5cac81430ef249027d97b0935c553f" url: "https://pub.dev" source: hosted - version: "5.0.7" + version: "5.1.0" xdg_directories: dependency: transitive description: name: xdg_directories - sha256: bd512f03919aac5f1313eb8249f223bacf4927031bf60b02601f81f687689e86 + sha256: "589ada45ba9e39405c198fe34eb0f607cddb2108527e658136120892beac46d2" url: "https://pub.dev" source: hosted - version: "0.2.0+3" + version: "1.0.3" xml: dependency: transitive description: name: xml - sha256: "5bc72e1e45e941d825fd7468b9b4cc3b9327942649aeb6fc5cdbf135f0a86e84" + sha256: af5e77e9b83f2f4adc5d3f0a4ece1c7f45a2467b695c2540381bac793e34e556 url: "https://pub.dev" source: hosted - version: "6.3.0" + version: "6.4.2" yaml: dependency: transitive description: @@ -703,4 +711,4 @@ packages: version: "3.1.2" sdks: dart: ">=3.2.0 <4.0.0" - flutter: ">=3.13.0" + flutter: ">=3.16.0" diff --git a/pubspec.yaml b/pubspec.yaml index 67e7805..25cf801 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -6,13 +6,13 @@ publish_to: 'none' # The following defines the version and build number for your application. # A version number is three numbers separated by dots, like 1.2.43 # followed by an optional build number separated by a +. -version: 1.9.1+31 +version: 1.10.0+32 environment: sdk: ">=2.18.2 <3.0.0" dependencies: - canteenlib: ^2.0.0 + canteenlib: ^3.0.0 flutter: sdk: flutter flutter_local_notifications: ^16.0.0