diff --git a/lib/lang/lang.dart b/lib/lang/lang.dart index 6c2a9d1..1c1f34a 100644 --- a/lib/lang/lang.dart +++ b/lib/lang/lang.dart @@ -149,6 +149,8 @@ abstract class Languages { String get notifyAt; + String get notifyWarning; + // Offline String get offline; diff --git a/lib/lang/lang_cz.dart b/lib/lang/lang_cz.dart index 749d04f..445d1ae 100644 --- a/lib/lang/lang_cz.dart +++ b/lib/lang/lang_cz.dart @@ -224,4 +224,8 @@ class LanguageCz extends Languages { @override String get needRemember => "Musíte své přihlašovací údaje uložit na přihlašovací obrazovce"; + + @override + String get notifyWarning => + "Vaše zařízení může mít povolenou optimalizaci baterie, což může způsobovat neodesílání oznámení. Zkontrolujte nastavení ve vašem zařízení."; } diff --git a/lib/lang/lang_en.dart b/lib/lang/lang_en.dart index 2e653dc..f0dbd9d 100644 --- a/lib/lang/lang_en.dart +++ b/lib/lang/lang_en.dart @@ -222,4 +222,8 @@ class LanguageEn extends Languages { @override String get needRemember => "You need to save your login details on the login screen first"; + + @override + String get notifyWarning => + "Your device may have battery optimization enabled. This may cause notifications to not be sent. Check the application info in your device's settings."; } diff --git a/lib/main.dart b/lib/main.dart index eb561fb..1c7a8c6 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -55,44 +55,44 @@ void oznamitPredem(SharedPreferences prefs, tz.Location l) async { title = LanguageEn().lunchNotif; } - if (prefs.getBool("offline") ?? false) { + /*if (prefs.getBool("offline") ?? false) { // TODO možnost brát z offline dat - } else { - // bere online - var d = await LoginManager.getDetails(); // získat údaje - if (d != null) { - var c = Canteen(d["url"]!); - if (await c.login(d["user"]!, d["pass"]!)) { - var jidla = await c.jidelnicekDen(); - try { - var jidlo = jidla.jidla.singleWhere((element) => element.objednano); - var kdy = DateTime.parse(prefs.getString("oznameni_cas")!); - const AndroidNotificationDetails androidSpec = - AndroidNotificationDetails('opencanteen', 'predobjedem', - channelDescription: 'Oznámení o dnešním jídle', - importance: Importance.max, - priority: Priority.high, - ticker: 'today meal'); - const IOSNotificationDetails iOSpec = - IOSNotificationDetails(presentAlert: true, presentBadge: true); - await flutterLocalNotificationsPlugin.zonedSchedule( - 0, - title, - "${jidlo.nazev} - ${jidlo.varianta}", - tz.TZDateTime.from( - casNaDate( - TimeOfDay(hour: kdy.hour, minute: kdy.minute), - ), - l), - const NotificationDetails(android: androidSpec, iOS: iOSpec), - androidAllowWhileIdle: true, - uiLocalNotificationDateInterpretation: - UILocalNotificationDateInterpretation.absoluteTime); - } on StateError catch (_) { - // nenalezeno - } + } else {*/ + // bere online + var d = await LoginManager.getDetails(); // získat údaje + if (d != null) { + var c = Canteen(d["url"]!); + if (await c.login(d["user"]!, d["pass"]!)) { + var jidla = await c.jidelnicekDen(); + try { + var jidlo = jidla.jidla.singleWhere((element) => element.objednano); + var kdy = DateTime.parse(prefs.getString("oznameni_cas")!); + const AndroidNotificationDetails androidSpec = + AndroidNotificationDetails('opencanteen', 'predobjedem', + channelDescription: 'Oznámení o dnešním jídle', + importance: Importance.max, + priority: Priority.high, + ticker: 'today meal'); + const IOSNotificationDetails iOSpec = + IOSNotificationDetails(presentAlert: true, presentBadge: true); + await flutterLocalNotificationsPlugin.zonedSchedule( + 0, + title, + "${jidlo.nazev} - ${jidlo.varianta}", + tz.TZDateTime.from( + casNaDate( + TimeOfDay(hour: kdy.hour, minute: kdy.minute), + ), + l), + const NotificationDetails(android: androidSpec, iOS: iOSpec), + androidAllowWhileIdle: true, + uiLocalNotificationDateInterpretation: + UILocalNotificationDateInterpretation.absoluteTime); + } on StateError catch (_) { + // nenalezeno } } + // } } } diff --git a/lib/okna/nastaveni.dart b/lib/okna/nastaveni.dart index 05baa81..6713e61 100644 --- a/lib/okna/nastaveni.dart +++ b/lib/okna/nastaveni.dart @@ -143,6 +143,23 @@ class _NastaveniState extends State { setState(() { _oznameniObed = value; if (_oznameniObed) { + showDialog( + context: context, + builder: (context) => AlertDialog( + title: + Text(Languages.of(context)!.warning), + content: Text( + Languages.of(context)!.notifyWarning), + actions: [ + TextButton( + child: + Text(Languages.of(context)!.ok), + onPressed: () { + Navigator.of(context).pop(); + }, + ) + ], + )); vytvoritOznameni(casNaDate(_oznameniCas)); } zmenitNastaveni("oznamit", value); diff --git a/pubspec.yaml b/pubspec.yaml index 9c73992..4856caa 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -6,7 +6,7 @@ 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.3.0+15 +version: 1.3.1+16 environment: sdk: ">=2.16.1 <3.0.0"