From 28eba7d9ab176607bcc86456d1aae67019248aa2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maty=C3=A1=C5=A1=20Caras?= Date: Mon, 12 Sep 2022 16:49:42 +0200 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20p=C5=99idat=20v=C3=BDb=C4=9Br=20z?= =?UTF-8?q?=20funk=C4=8Dn=C3=ADch=20instanc=C3=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/main.dart | 81 ++++++++++++++++++++++++++++----------------------- lib/util.dart | 5 ++++ 2 files changed, 49 insertions(+), 37 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 84357e2..0cd28cb 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -179,6 +179,8 @@ class _LoginPageState extends State { TextEditingController passControl = TextEditingController(); TextEditingController canteenControl = TextEditingController(); bool rememberMe = false; + bool _showUrl = false; + String dropdownUrl = instance.first["url"] ?? ""; @override void initState() { @@ -301,12 +303,39 @@ class _LoginPageState extends State { controller: passControl, obscureText: true, ), - TextField( - autofillHints: const [AutofillHints.url], - decoration: InputDecoration( - labelText: Languages.of(context)!.iCanteenUrl), - keyboardType: TextInputType.url, - controller: canteenControl, + const SizedBox( + height: 10, + ), + DropdownButton( + isExpanded: true, + value: dropdownUrl, + items: instance.map>((e) { + return DropdownMenuItem( + value: e["url"], + child: Text(e["name"]!), + ); + }).toList(), + onChanged: (String? value) { + setState(() { + if (value == "") { + _showUrl = true; + } else { + _showUrl = false; + } + dropdownUrl = value!; + }); + }, + ), + AnimatedOpacity( + opacity: _showUrl ? 1.0 : 0.0, + duration: const Duration(milliseconds: 300), + child: TextField( + autofillHints: const [AutofillHints.url], + decoration: InputDecoration( + labelText: Languages.of(context)!.iCanteenUrl), + keyboardType: TextInputType.url, + controller: canteenControl, + ), ), Row(mainAxisAlignment: MainAxisAlignment.center, children: [ Switch( @@ -320,36 +349,14 @@ class _LoginPageState extends State { ]), TextButton( onPressed: () async { - if (canteenControl.text.contains("http://")) { - // kontrolujeme šifrované spojení - var d = await showDialog( - context: context, - builder: (c) => AlertDialog( - title: Text(Languages.of(context)!.warning), - content: SingleChildScrollView( - child: Text( - Languages.of(context)!.httpLogin)), - actions: [ - TextButton( - onPressed: () => - Navigator.pop(c, true), - child: - Text(Languages.of(context)!.yes)), - TextButton( - onPressed: () => - Navigator.pop(c, false), - child: Text( - Languages.of(context)!.noChange)) - ], - )); - if (!d!) return; + var canteenUrl = (dropdownUrl == "") + ? canteenControl.text + : dropdownUrl; + if (!canteenUrl.startsWith("https://") && + !canteenUrl.startsWith("http://")) { + canteenUrl = "https://$canteenUrl"; } - if (!canteenControl.text.startsWith("https://") && - !canteenControl.text.startsWith("http://")) { - canteenControl.text = - "https://${canteenControl.text}"; - } - var canteen = Canteen(canteenControl.text); + var canteen = Canteen(canteenUrl); try { var l = await canteen.login( userControl.text, passControl.text); @@ -365,8 +372,8 @@ class _LoginPageState extends State { return; } if (rememberMe) { - LoginManager.setDetails(userControl.text, - passControl.text, canteenControl.text); + LoginManager.setDetails( + userControl.text, passControl.text, canteenUrl); } // souhlas const storage = FlutterSecureStorage(); diff --git a/lib/util.dart b/lib/util.dart index 1eccf9f..adc34fa 100644 --- a/lib/util.dart +++ b/lib/util.dart @@ -90,3 +90,8 @@ DateTime casNaDate(TimeOfDay c) { return DateTime.parse( "${now.year}-${(now.month < 10 ? "0" : "") + now.month.toString()}-${(now.day < 10 ? "0" : "") + now.day.toString()} ${(c.hour < 10 ? "0" : "") + c.hour.toString()}:${(c.minute < 10 ? "0" : "") + c.minute.toString()}:00"); } + +List> instance = [ + {"name": "SŠTE Brno, Olomoucká", "url": "https://stravovani.sstebrno.cz"}, + {"name": "Jiné", "url": ""} +]; From ce9eb97ac96ecfc80bddc752798a89ba1df6f591 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maty=C3=A1=C5=A1=20Caras?= Date: Mon, 12 Sep 2022 17:13:12 +0200 Subject: [PATCH 2/3] =?UTF-8?q?feat:=20vylep=C5=A1it=20ozn=C3=A1men=C3=AD?= =?UTF-8?q?=20o=20neobjednan=C3=A9m=20j=C3=ADdle?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/lang/lang.dart | 2 ++ lib/lang/lang_cz.dart | 3 +++ lib/lang/lang_en.dart | 3 +++ lib/okna/jidelnicek.dart | 41 +++++++++++++++++++++++++++------------- 4 files changed, 36 insertions(+), 13 deletions(-) diff --git a/lib/lang/lang.dart b/lib/lang/lang.dart index 129b784..df15826 100644 --- a/lib/lang/lang.dart +++ b/lib/lang/lang.dart @@ -91,6 +91,8 @@ abstract class Languages { String get signOutWarn; + String get jump; + // Uvítací obrazovka String get welcome; diff --git a/lib/lang/lang_cz.dart b/lib/lang/lang_cz.dart index a2f3329..b23a4a3 100644 --- a/lib/lang/lang_cz.dart +++ b/lib/lang/lang_cz.dart @@ -231,4 +231,7 @@ class LanguageCz extends Languages { @override String get signOutWarn => "Opravdu se chcete odhlásit?"; + + @override + String get jump => "Přeskočit"; } diff --git a/lib/lang/lang_en.dart b/lib/lang/lang_en.dart index 2563053..2044f32 100644 --- a/lib/lang/lang_en.dart +++ b/lib/lang/lang_en.dart @@ -229,4 +229,7 @@ class LanguageEn extends Languages { @override String get signOutWarn => "Do you really want to sign out?"; + + @override + String get jump => "Jump"; } diff --git a/lib/okna/jidelnicek.dart b/lib/okna/jidelnicek.dart index 467955b..2fa7081 100644 --- a/lib/okna/jidelnicek.dart +++ b/lib/okna/jidelnicek.dart @@ -35,18 +35,31 @@ class _JidelnicekPageState extends State { var prefs = await SharedPreferences.getInstance(); if (prefs.getBool("tyden") ?? false) { // Zjistit jestli je objednáno na přístí týden - var pristi = den.add(const Duration(days: 7)); - var jidelnicek = await widget.canteen.jidelnicekDen(den: pristi); - if (jidelnicek.jidla.isNotEmpty && - !jidelnicek.jidla.any((element) => element.objednano == true)) { - if (!mounted) return; - ScaffoldMessenger.of(context).hideCurrentSnackBar(); - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - content: Text(Languages.of(context)!.noOrder), - duration: const Duration(seconds: 5), - ), - ); + var pristi = den.add(const Duration(days: 6)); + for (var i = 0; i < 5; i++) { + var jidelnicek = await widget.canteen + .jidelnicekDen(den: pristi.add(Duration(days: i + 1))); + if (jidelnicek.jidla.isNotEmpty && + !jidelnicek.jidla.any((element) => element.objednano == true)) { + if (!mounted) break; + ScaffoldMessenger.of(context).hideCurrentSnackBar(); + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text(Languages.of(context)!.noOrder), + duration: const Duration(seconds: 5), + action: SnackBarAction( + onPressed: () => setState( + () { + den = pristi.add(Duration(days: i + 1)); + nactiJidlo(); + }, + ), + label: Languages.of(context)!.jump, + ), + ), + ); + break; + } } } } @@ -294,7 +307,6 @@ class _JidelnicekPageState extends State { ); } } - kontrolaTyden(context); }); }); }).catchError((o) { @@ -343,6 +355,9 @@ class _JidelnicekPageState extends State { void nactiNastaveni() async { var prefs = await SharedPreferences.getInstance(); _skipWeekend = prefs.getBool("skip") ?? false; + print(mounted); + if (!mounted) return; + kontrolaTyden(context); } /// uložení jídelníčku pro dnešek offline From 30f08a6108710c6a51f710781b46a049ddef5db7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maty=C3=A1=C5=A1=20Caras?= Date: Mon, 12 Sep 2022 17:19:07 +0200 Subject: [PATCH 3/3] fix: odstranit print --- lib/okna/jidelnicek.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/okna/jidelnicek.dart b/lib/okna/jidelnicek.dart index 2fa7081..d67ac54 100644 --- a/lib/okna/jidelnicek.dart +++ b/lib/okna/jidelnicek.dart @@ -355,7 +355,6 @@ class _JidelnicekPageState extends State { void nactiNastaveni() async { var prefs = await SharedPreferences.getInstance(); _skipWeekend = prefs.getBool("skip") ?? false; - print(mounted); if (!mounted) return; kontrolaTyden(context); }