From ded7c51f44e945966c43244c681d7f4956504833 Mon Sep 17 00:00:00 2001 From: Tihanyi Marcell Date: Mon, 12 Jun 2023 21:54:13 +0200 Subject: [PATCH] Block empty fullscreen timetable --- .../lib/pages/timetable/timetable_page.dart | 2 +- .../pages/timetable/timetable_page.i18n.dart | 3 +++ .../mobile/timetable/fs_timetable_button.dart | 27 +++++++++++++++---- 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/filcnaplo_mobile_ui/lib/pages/timetable/timetable_page.dart b/filcnaplo_mobile_ui/lib/pages/timetable/timetable_page.dart index b58cd31..f447a73 100755 --- a/filcnaplo_mobile_ui/lib/pages/timetable/timetable_page.dart +++ b/filcnaplo_mobile_ui/lib/pages/timetable/timetable_page.dart @@ -199,7 +199,7 @@ class _TimetablePageState extends State snap: false, surfaceTintColor: Theme.of(context).scaffoldBackgroundColor, actions: [ - PremiumFSTimetableButton(controller: _controller), + PremiumFSTimetableButton(controller: _controller, tabcontroller: _tabController), // Profile Icon Padding( diff --git a/filcnaplo_mobile_ui/lib/pages/timetable/timetable_page.i18n.dart b/filcnaplo_mobile_ui/lib/pages/timetable/timetable_page.i18n.dart index 21eaa51..0f97f62 100755 --- a/filcnaplo_mobile_ui/lib/pages/timetable/timetable_page.i18n.dart +++ b/filcnaplo_mobile_ui/lib/pages/timetable/timetable_page.i18n.dart @@ -8,18 +8,21 @@ extension Localization on String { "empty": "No school this week!", "week": "Week", "error": "Failed to fetch timetable!", + "empty_timetable": "Timetable is empty!", }, "hu_hu": { "timetable": "Órarend", "empty": "Ezen a héten nincs iskola.", "week": "Hét", "error": "Nem sikerült lekérni az órarendet!", + "empty_timetable": "Az órarend üres!", }, "de_de": { "timetable": "Zeitplan", "empty": "Keine Schule diese Woche.", "week": "Woche", "error": "Der Fahrplan konnte nicht abgerufen werden!", + "empty_timetable": "Der Zeitplan ist blank!", }, }; diff --git a/filcnaplo_premium/lib/ui/mobile/timetable/fs_timetable_button.dart b/filcnaplo_premium/lib/ui/mobile/timetable/fs_timetable_button.dart index 8b97db2..db5e22d 100644 --- a/filcnaplo_premium/lib/ui/mobile/timetable/fs_timetable_button.dart +++ b/filcnaplo_premium/lib/ui/mobile/timetable/fs_timetable_button.dart @@ -9,11 +9,15 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_feather_icons/flutter_feather_icons.dart'; import 'package:provider/provider.dart'; +import 'package:filcnaplo_mobile_ui/pages/timetable/timetable_page.i18n.dart'; class PremiumFSTimetableButton extends StatelessWidget { - const PremiumFSTimetableButton({Key? key, required this.controller}) : super(key: key); + const PremiumFSTimetableButton( + {Key? key, required this.controller, required this.tabcontroller}) + : super(key: key); final TimetableController controller; + final TabController tabcontroller; @override Widget build(BuildContext context) { @@ -22,19 +26,32 @@ class PremiumFSTimetableButton extends StatelessWidget { child: IconButton( splashRadius: 24.0, onPressed: () { - if (!Provider.of(context, listen: false).hasScope(PremiumScopes.fsTimetable)) { - PremiumLockedFeatureUpsell.show(context: context, feature: PremiumFeature.weeklytimetable); + if (!Provider.of(context, listen: false) + .hasScope(PremiumScopes.fsTimetable)) { + PremiumLockedFeatureUpsell.show( + context: context, feature: PremiumFeature.weeklytimetable); + return; + } + + // If timetable empty, show empty + if (tabcontroller.length == 0) { + ScaffoldMessenger.of(context).showSnackBar(SnackBar( + content: Text("empty_timetable".i18n), + duration: const Duration(seconds: 2), + )); return; } Navigator.of(context, rootNavigator: true) .push(PageRouteBuilder( - pageBuilder: (context, animation, secondaryAnimation) => PremiumFSTimetable( + pageBuilder: (context, animation, secondaryAnimation) => + PremiumFSTimetable( controller: controller, ), )) .then((_) { - SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); + SystemChrome.setPreferredOrientations( + [DeviceOrientation.portraitUp]); setSystemChrome(context); }); },