From eadf7e81a5dc15a83124ebc6d4ca5a834e864822 Mon Sep 17 00:00:00 2001 From: zypherift Date: Wed, 8 Apr 2026 00:04:12 +0200 Subject: [PATCH] Remove in-app updater and open_filex integration --- refilc/lib/api/providers/update_provider.dart | 65 ------ refilc/lib/app.dart | 4 - refilc/lib/helpers/attachment_helper.dart | 14 +- refilc/lib/helpers/update_helper.dart | 80 -------- refilc/lib/ui/filter/widgets.dart | 12 -- refilc/lib/ui/filter/widgets/update.dart | 11 -- refilc/pubspec.yaml | 1 - .../common/widgets/update/update_tile.dart | 32 --- .../widgets/update/update_tile.i18n.dart | 21 -- .../widgets/update/update_viewable.dart | 18 -- .../common/widgets/update/updates_view.dart | 185 ------------------ .../widgets/update/updates_view.i18n.dart | 46 ----- .../lib/pages/absences/absences_page.dart | 5 +- .../lib/pages/grades/grades_page.dart | 5 +- .../lib/pages/home/home_page.dart | 5 +- .../lib/pages/messages/messages_page.dart | 5 +- .../lib/pages/notes/notes_page.dart | 6 +- .../lib/pages/timetable/timetable_page.dart | 5 +- .../screens/navigation/navigation_screen.dart | 6 - .../lib/screens/settings/settings_screen.dart | 34 +--- 20 files changed, 16 insertions(+), 544 deletions(-) delete mode 100644 refilc/lib/api/providers/update_provider.dart delete mode 100644 refilc/lib/helpers/update_helper.dart delete mode 100644 refilc/lib/ui/filter/widgets/update.dart delete mode 100644 refilc_mobile_ui/lib/common/widgets/update/update_tile.dart delete mode 100644 refilc_mobile_ui/lib/common/widgets/update/update_tile.i18n.dart delete mode 100644 refilc_mobile_ui/lib/common/widgets/update/update_viewable.dart delete mode 100644 refilc_mobile_ui/lib/common/widgets/update/updates_view.dart delete mode 100644 refilc_mobile_ui/lib/common/widgets/update/updates_view.i18n.dart diff --git a/refilc/lib/api/providers/update_provider.dart b/refilc/lib/api/providers/update_provider.dart deleted file mode 100644 index 64382862..00000000 --- a/refilc/lib/api/providers/update_provider.dart +++ /dev/null @@ -1,65 +0,0 @@ -import 'dart:io'; - -import 'package:refilc/api/client.dart'; -import 'package:refilc/models/release.dart'; -import 'package:flutter/material.dart'; -import 'package:package_info_plus/package_info_plus.dart'; - -class UpdateProvider extends ChangeNotifier { - // Private - late List _releases; - bool _available = false; - bool get available => _available && _releases.isNotEmpty; - - // Public - List get releases => _releases; - - UpdateProvider({ - List initialReleases = const [], - required BuildContext context, - }) { - _releases = List.castFrom(initialReleases); - } - - Future fetch() async { - late String currentVersion; - PackageInfo packageInfo = await PackageInfo.fromPlatform(); - currentVersion = packageInfo.version; - - if (!Platform.isAndroid) return; - - _releases = await FilcAPI.getReleases() ?? []; - _releases.sort((a, b) => -a.version.compareTo(b.version)); - - // Check for new releases - if (_releases.isNotEmpty) { - if (!_releases.first.prerelease) { - _available = _releases.first.version - .compareTo(Version.fromString(currentVersion)) == - 1; - } - - // ignore: avoid_print - if (_available) print("INFO: New update: ${releases.first.version}"); - notifyListeners(); - } - } - - Future installedVersion() async { - PackageInfo packageInfo = await PackageInfo.fromPlatform(); - - String appName = packageInfo.appName; - String packageName = packageInfo.packageName; - String version = packageInfo.version; - String buildNumber = packageInfo.buildNumber; - - Map release = { - "app_name": appName, - "package_name": packageName, - "version": version, - "build_number": buildNumber, - }; - - return release; - } -} diff --git a/refilc/lib/app.dart b/refilc/lib/app.dart index 3ece948d..55cfc30a 100644 --- a/refilc/lib/app.dart +++ b/refilc/lib/app.dart @@ -73,7 +73,6 @@ import 'package:refilc_kreta_api/providers/message_provider.dart'; import 'package:refilc_kreta_api/providers/note_provider.dart'; import 'package:refilc_kreta_api/providers/timetable_provider.dart'; import 'package:refilc/api/providers/user_provider.dart'; -import 'package:refilc/api/providers/update_provider.dart'; import 'package:refilc_mobile_ui/pages/grades/calculator/grade_calculator_provider.dart'; import 'package:flutter_displaymode/flutter_displaymode.dart'; import 'package:refilc_plus/providers/plus_provider.dart'; @@ -129,9 +128,6 @@ class App extends StatelessWidget { ChangeNotifierProvider( create: (context) => NewsProvider(context: context), ), - ChangeNotifierProvider( - create: (context) => UpdateProvider(context: context), - ), ChangeNotifierProvider( create: (context) => AdProvider(context: context), ), diff --git a/refilc/lib/helpers/attachment_helper.dart b/refilc/lib/helpers/attachment_helper.dart index 6fab131f..2666c679 100644 --- a/refilc/lib/helpers/attachment_helper.dart +++ b/refilc/lib/helpers/attachment_helper.dart @@ -9,8 +9,8 @@ import 'package:refilc_kreta_api/client/client.dart'; import 'package:refilc_kreta_api/models/attachment.dart'; import 'package:refilc_kreta_api/models/homework.dart'; import 'package:flutter/widgets.dart'; -import 'package:open_filex/open_filex.dart'; import 'package:provider/provider.dart'; +import 'package:url_launcher/url_launcher.dart'; extension AttachmentHelper on Attachment { Future download(BuildContext context, @@ -32,8 +32,10 @@ extension AttachmentHelper on Attachment { String downloads = await StorageHelper.downloadsPath(); if (!await File("$downloads/$name").exists()) await download(context); - var result = await OpenFilex.open("$downloads/$name"); - return result.type == ResultType.done; + return launchUrl( + Uri.file("$downloads/$name"), + mode: LaunchMode.externalApplication, + ); } } @@ -59,7 +61,9 @@ extension HomeworkAttachmentHelper on HomeworkAttachment { String downloads = await StorageHelper.downloadsPath(); if (!await File("$downloads/$name").exists()) await download(context); - var result = await OpenFilex.open("$downloads/$name"); - return result.type == ResultType.done; + return launchUrl( + Uri.file("$downloads/$name"), + mode: LaunchMode.externalApplication, + ); } } diff --git a/refilc/lib/helpers/update_helper.dart b/refilc/lib/helpers/update_helper.dart deleted file mode 100644 index 781f0a05..00000000 --- a/refilc/lib/helpers/update_helper.dart +++ /dev/null @@ -1,80 +0,0 @@ -import 'dart:async'; -import 'dart:io'; -import 'dart:typed_data'; - -import 'package:refilc/api/client.dart'; -import 'package:refilc/helpers/storage_helper.dart'; -import 'package:refilc/models/release.dart'; -import 'package:open_filex/open_filex.dart'; -import 'package:permission_handler/permission_handler.dart'; - -enum UpdateState { none, preparing, downloading, installing } - -typedef UpdateCallback = Function(double progress, UpdateState state); - -// ignore: todo -// TODO: cleanup old apk files - -extension UpdateHelper on Release { - Future install({UpdateCallback? updateCallback}) async { - updateCallback!(-1, UpdateState.preparing); - - String downloads = await StorageHelper.downloadsPath(); - File apk = File("$downloads/refilc-v$version.apk"); - - if (!await apk.exists()) { - updateCallback(-1, UpdateState.downloading); - - var bytes = await download(updateCallback: updateCallback); - if (!await StorageHelper.write(apk.path, bytes)) { - throw "failed to write apk: permission denied"; - } - } - - updateCallback(-1, UpdateState.installing); - - var installPerms = - (await Permission.manageExternalStorage.request().isGranted && - await Permission.requestInstallPackages.request().isGranted); - if (installPerms) { - var result = await OpenFilex.open(apk.path); - - if (result.type != ResultType.done) { - // ignore: avoid_print - print("ERROR: installUpdate.openFile: ${result.message}"); - throw result.message; - } - } - - updateCallback(-1, UpdateState.none); - } - - Future download({UpdateCallback? updateCallback}) async { - var response = await FilcAPI.downloadRelease(downloads.first); - - List> chunks = []; - int downloaded = 0; - - var completer = Completer(); - - response?.stream.listen((List chunk) { - updateCallback!( - downloaded / (response.contentLength ?? 0), UpdateState.downloading); - - chunks.add(chunk); - downloaded += chunk.length; - }, onDone: () { - // Save the file - final Uint8List bytes = Uint8List(response.contentLength ?? 0); - int offset = 0; - for (List chunk in chunks) { - bytes.setRange(offset, offset + chunk.length, chunk); - offset += chunk.length; - } - - completer.complete(bytes); - }); - - return completer.future; - } -} diff --git a/refilc/lib/ui/filter/widgets.dart b/refilc/lib/ui/filter/widgets.dart index 16953c29..453b96d2 100644 --- a/refilc/lib/ui/filter/widgets.dart +++ b/refilc/lib/ui/filter/widgets.dart @@ -1,5 +1,4 @@ import 'package:refilc/api/providers/ad_provider.dart'; -import 'package:refilc/api/providers/update_provider.dart'; import 'package:refilc/models/settings.dart'; import 'package:refilc/ui/date_widget.dart'; import 'package:refilc/ui/filter/widgets/grades.dart' as grade_filter; @@ -12,7 +11,6 @@ import 'package:refilc/ui/filter/widgets/exams.dart' as exam_filter; import 'package:refilc/ui/filter/widgets/notes.dart' as note_filter; import 'package:refilc/ui/filter/widgets/events.dart' as event_filter; import 'package:refilc/ui/filter/widgets/lessons.dart' as lesson_filter; -import 'package:refilc/ui/filter/widgets/update.dart' as update_filter; import 'package:refilc/ui/filter/widgets/missed_exams.dart' as missed_exam_filter; import 'package:refilc/ui/filter/widgets/ads.dart' as ad_filter; @@ -54,7 +52,6 @@ enum FilterType { notes, events, lessons, - updates, certifications, missedExams, ads, @@ -70,7 +67,6 @@ Future> getFilterWidgets(FilterType activeData, final examProvider = Provider.of(context); final noteProvider = Provider.of(context); final eventProvider = Provider.of(context); - final updateProvider = Provider.of(context); final settingsProvider = Provider.of(context); final adProvider = Provider.of(context); @@ -87,7 +83,6 @@ Future> getFilterWidgets(FilterType activeData, context: context, absencesNoExcused: true), getFilterWidgets(FilterType.homework, context: context), getFilterWidgets(FilterType.exams, context: context), - getFilterWidgets(FilterType.updates, context: context), getFilterWidgets(FilterType.certifications, context: context), getFilterWidgets(FilterType.missedExams, context: context), getFilterWidgets(FilterType.ads, context: context), @@ -162,13 +157,6 @@ Future> getFilterWidgets(FilterType activeData, .getWidgets(timetableProvider.getWeek(Week.current()) ?? []); break; - // Updates - case FilterType.updates: - if (updateProvider.available) { - items = [update_filter.getWidget(updateProvider.releases.first)]; - } - break; - // Missed Exams case FilterType.missedExams: items = missed_exam_filter diff --git a/refilc/lib/ui/filter/widgets/update.dart b/refilc/lib/ui/filter/widgets/update.dart deleted file mode 100644 index ce489696..00000000 --- a/refilc/lib/ui/filter/widgets/update.dart +++ /dev/null @@ -1,11 +0,0 @@ -import 'package:refilc/models/release.dart'; -import 'package:refilc/ui/date_widget.dart'; -import 'package:refilc_mobile_ui/common/widgets/update/update_viewable.dart' - as mobile; - -DateWidget getWidget(Release providerRelease) { - return DateWidget( - date: DateTime.now(), - widget: mobile.UpdateViewable(providerRelease), - ); -} diff --git a/refilc/pubspec.yaml b/refilc/pubspec.yaml index 86260813..82ad0cbb 100644 --- a/refilc/pubspec.yaml +++ b/refilc/pubspec.yaml @@ -33,7 +33,6 @@ dependencies: http: ^1.3.0 uuid: ^4.5.1 html: ^0.15.5 - open_filex: ^4.6.0 path_provider: ^2.1.5 permission_handler: ^12.0.0 share_plus: ^10.1.4 diff --git a/refilc_mobile_ui/lib/common/widgets/update/update_tile.dart b/refilc_mobile_ui/lib/common/widgets/update/update_tile.dart deleted file mode 100644 index e253d84c..00000000 --- a/refilc_mobile_ui/lib/common/widgets/update/update_tile.dart +++ /dev/null @@ -1,32 +0,0 @@ -import 'package:refilc/models/release.dart'; -import 'package:flutter/material.dart'; -import 'package:refilc_mobile_ui/common/panel/panel_button.dart'; -import 'package:flutter_feather_icons/flutter_feather_icons.dart'; -import 'update_tile.i18n.dart'; - -class UpdateTile extends StatelessWidget { - const UpdateTile(this.release, {super.key, this.onTap, this.padding}); - - final Release release; - final Function()? onTap; - final EdgeInsetsGeometry? padding; - - @override - Widget build(BuildContext context) { - return Padding( - padding: padding ?? const EdgeInsets.symmetric(horizontal: 8.0), - child: PanelButton( - onPressed: onTap, - title: Text("update_available".i18n), - leading: const Icon(FeatherIcons.download), - trailing: Text( - release.tag, - style: TextStyle( - fontWeight: FontWeight.w500, - color: Theme.of(context).colorScheme.secondary, - ), - ), - ), - ); - } -} diff --git a/refilc_mobile_ui/lib/common/widgets/update/update_tile.i18n.dart b/refilc_mobile_ui/lib/common/widgets/update/update_tile.i18n.dart deleted file mode 100644 index be1183a2..00000000 --- a/refilc_mobile_ui/lib/common/widgets/update/update_tile.i18n.dart +++ /dev/null @@ -1,21 +0,0 @@ -import 'package:i18n_extension/i18n_extension.dart'; - -extension Localization on String { - static final _t = Translations.byLocale("hu_hu") + - { - "en_en": { - "update_available": "Update Available", - }, - "hu_hu": { - "update_available": "Frissítés elérhető", - }, - "de_de": { - "update_available": "Update verfügbar", - }, - }; - - String get i18n => localize(this, _t); - String fill(List params) => localizeFill(this, params); - String plural(int value) => localizePlural(value, this, _t); - String version(Object modifier) => localizeVersion(modifier, this, _t); -} diff --git a/refilc_mobile_ui/lib/common/widgets/update/update_viewable.dart b/refilc_mobile_ui/lib/common/widgets/update/update_viewable.dart deleted file mode 100644 index bc4733d9..00000000 --- a/refilc_mobile_ui/lib/common/widgets/update/update_viewable.dart +++ /dev/null @@ -1,18 +0,0 @@ -import 'package:refilc/models/release.dart'; -import 'package:refilc_mobile_ui/common/widgets/update/update_tile.dart'; -import 'package:refilc_mobile_ui/common/widgets/update/updates_view.dart'; -import 'package:flutter/material.dart'; - -class UpdateViewable extends StatelessWidget { - const UpdateViewable(this.release, {super.key}); - - final Release release; - - @override - Widget build(BuildContext context) { - return UpdateTile( - release, - onTap: () => UpdateView.show(release, context: context), - ); - } -} diff --git a/refilc_mobile_ui/lib/common/widgets/update/updates_view.dart b/refilc_mobile_ui/lib/common/widgets/update/updates_view.dart deleted file mode 100644 index 15c69da4..00000000 --- a/refilc_mobile_ui/lib/common/widgets/update/updates_view.dart +++ /dev/null @@ -1,185 +0,0 @@ -import 'package:refilc/api/providers/status_provider.dart'; -import 'package:refilc/models/release.dart'; -import 'package:refilc/theme/colors/colors.dart'; -import 'package:refilc/utils/color.dart'; -import 'package:refilc_mobile_ui/common/bottom_card.dart'; -import 'package:refilc_mobile_ui/common/custom_snack_bar.dart'; -import 'package:refilc_mobile_ui/common/material_action_button.dart'; -import 'package:refilc/helpers/update_helper.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_custom_tabs/flutter_custom_tabs.dart'; -import 'package:flutter_markdown/flutter_markdown.dart'; -import 'package:provider/provider.dart'; -import 'package:connectivity_plus/connectivity_plus.dart'; -import 'updates_view.i18n.dart'; - -class UpdateView extends StatefulWidget { - const UpdateView(this.release, {super.key}); - - final Release release; - - static void show(Release release, {required BuildContext context}) => - showBottomCard(context: context, child: UpdateView(release)); - - @override - UpdateViewState createState() => UpdateViewState(); -} - -class UpdateViewState extends State { - double progress = 0.0; - UpdateState state = UpdateState.none; - - @override - Widget build(BuildContext context) { - return Padding( - padding: const EdgeInsets.all(12.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Padding( - padding: const EdgeInsets.symmetric(horizontal: 12.0), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - "new_update".i18n, - style: const TextStyle( - fontWeight: FontWeight.w700, fontSize: 18.0), - ), - Text( - "${widget.release.version}", - style: TextStyle( - fontWeight: FontWeight.w600, - fontSize: 16.0, - color: - AppColors.of(context).text.withValues(alpha: 0.6), - ), - ), - ], - ), - ClipRRect( - borderRadius: BorderRadius.circular(18.0), - child: Image.asset( - "assets/images/pixel.png", - width: 64.0, - ), - ) - ], - ), - ), - - // Description - Container( - margin: const EdgeInsets.only(top: 8.0), - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(12.0), - ), - child: SizedBox( - height: 200.0, - child: Markdown( - padding: const EdgeInsets.symmetric(horizontal: 12.0), - physics: const BouncingScrollPhysics(), - data: widget.release.body, - onTapLink: (text, href, title) => - launchUrl(Uri.parse(href ?? "")), - ), - ), - ), - - // Download button - Center( - child: MaterialActionButton( - backgroundColor: AppColors.of(context).filc, - onPressed: - state == UpdateState.none ? () => downloadPrecheck() : null, - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - if (state == UpdateState.downloading || - state == UpdateState.preparing) - Container( - height: 18.0, - width: 18.0, - margin: const EdgeInsets.only(right: 8.0), - child: CircularProgressIndicator( - value: progress > 0.05 ? progress : null, - color: ColorUtils.foregroundColor( - AppColors.of(context).filc), - ), - ), - Text([ - "download".i18n, - "downloading".i18n, - "downloading".i18n, - "installing".i18n - ][state.index] - .toUpperCase()), - ], - ), - ), - ), - ], - ), - ); - } - - String fmtSize() => - "${(widget.release.downloads.first.size / 1024 / 1024).toStringAsFixed(1)} MB"; - - void downloadPrecheck() { - final status = Provider.of(context, listen: false); - if (status.networkType == ConnectivityResult.mobile) { - showDialog( - context: context, - builder: (context) => AlertDialog( - title: Text("mobileAlertTitle".i18n), - content: Text("mobileAlertDesc".i18n.fill([fmtSize()])), - actions: [ - TextButton( - onPressed: () { - Navigator.of(context).pop(false); - }, - child: Text("no".i18n), - ), - TextButton( - onPressed: () { - Navigator.of(context).pop(true); - }, - child: Text("yes".i18n), - ), - ], - ), - ).then((value) => value ? download() : null); - } else { - download(); - } - } - - void download() { - widget.release - .install(updateCallback: (p, s) { - if (mounted) { - setState(() { - progress = p; - state = s; - }); - } - }) - .then((_) => Navigator.of(context).maybePop()) - .catchError((error, stackTrace) { - if (mounted) { - Navigator.of(context).maybePop(); - ScaffoldMessenger.of(context).showSnackBar(CustomSnackBar( - context: context, - content: Text("error".i18n), - backgroundColor: AppColors.of(context).red, - )); - setState(() => state = UpdateState.none); - } - return true; - }); - } -} diff --git a/refilc_mobile_ui/lib/common/widgets/update/updates_view.i18n.dart b/refilc_mobile_ui/lib/common/widgets/update/updates_view.i18n.dart deleted file mode 100644 index 012924bc..00000000 --- a/refilc_mobile_ui/lib/common/widgets/update/updates_view.i18n.dart +++ /dev/null @@ -1,46 +0,0 @@ -import 'package:i18n_extension/i18n_extension.dart'; - -extension Localization on String { - static final _t = Translations.byLocale("hu_hu") + - { - "en_en": { - "new_update": "New Update", - "download": "download", - "downloading": "downloading", - "installing": "installing", - "error": "Failed to install update!", - "no": "No", - "yes": "Yes", - "mobileAlertTitle": "Hold up!", - "mobileAlertDesc": "You're on mobile network trying to download a %s update. Are you sure you want to continue?" - }, - "hu_hu": { - "new_update": "Új frissítés", - "download": "Letöltés", - "downloading": "Letöltés", - "installing": "Telepítés", - "error": "Nem sikerült telepíteni a frissítést!", - "no": "Nem", - "yes": "Igen", - "mobileAlertTitle": "Figyelem!", - "mobileAlertDesc": "Jelenleg mobil interneten vagy, és egy %s méretű frissítést próbálsz letölteni. Biztosan folytatod?" - }, - "de_de": { - "new_update": "Neues Update", - "download": "herunterladen", - "downloading": "Herunterladen", - "installing": "Installation", - "error": "Update konnte nicht installiert werden!", - "no": "Nein", - "yes": "Ja", - "mobileAlertTitle": "Achtung!", - "mobileAlertDesc": - "Sie befinden sich gerade im mobilen Internet und versuchen, ein %s Update herunterzuladen. Sind Sie sicher, dass Sie weitermachen wollen?" - }, - }; - - String get i18n => localize(this, _t); - String fill(List params) => localizeFill(this, params); - String plural(int value) => localizePlural(value, this, _t); - String version(Object modifier) => localizeVersion(modifier, this, _t); -} diff --git a/refilc_mobile_ui/lib/pages/absences/absences_page.dart b/refilc_mobile_ui/lib/pages/absences/absences_page.dart index fc978811..a93acf94 100644 --- a/refilc_mobile_ui/lib/pages/absences/absences_page.dart +++ b/refilc_mobile_ui/lib/pages/absences/absences_page.dart @@ -5,7 +5,6 @@ import 'dart:math'; import 'package:animations/animations.dart'; import 'package:collection/collection.dart'; import 'package:google_fonts/google_fonts.dart'; -import 'package:refilc/api/providers/update_provider.dart'; import 'package:refilc/models/settings.dart'; import 'package:refilc/theme/colors/utils.dart'; import 'package:refilc/ui/date_widget.dart'; @@ -59,7 +58,6 @@ class AbsencesPageState extends State late AbsenceProvider absenceProvider; late TimetableProvider timetableProvider; late NoteProvider noteProvider; - late UpdateProvider updateProvider; late String firstName; late TabController _tabController; late List absences = []; @@ -136,7 +134,6 @@ class AbsencesPageState extends State user = Provider.of(context); absenceProvider = Provider.of(context); noteProvider = Provider.of(context); - updateProvider = Provider.of(context); timetableProvider = Provider.of(context); List nameParts = user.displayName?.split(" ") ?? ["?"]; @@ -168,7 +165,7 @@ class AbsencesPageState extends State backgroundColor: Theme.of(context) .colorScheme .tertiary, //ColorUtils.stringToColor(user.displayName ?? "?"), - badge: updateProvider.available, + badge: false, role: user.role, profilePictureString: user.picture, gradeStreak: (user.gradeStreak ?? 0) > 1, diff --git a/refilc_mobile_ui/lib/pages/grades/grades_page.dart b/refilc_mobile_ui/lib/pages/grades/grades_page.dart index 32130c8b..9d34058e 100644 --- a/refilc_mobile_ui/lib/pages/grades/grades_page.dart +++ b/refilc_mobile_ui/lib/pages/grades/grades_page.dart @@ -9,7 +9,6 @@ import 'package:collection/collection.dart'; import 'package:file_picker/file_picker.dart'; import 'package:flutter/foundation.dart'; import 'package:google_fonts/google_fonts.dart'; -import 'package:refilc/api/providers/update_provider.dart'; import 'package:refilc/models/settings.dart'; import 'package:refilc/ui/widgets/grade/grade_tile.dart'; import 'package:refilc_kreta_api/models/exam.dart'; @@ -79,7 +78,6 @@ class GradesPageState extends State { late UserProvider user; late GradeProvider gradeProvider; - late UpdateProvider updateProvider; late GradeCalculatorProvider calculatorProvider; late HomeworkProvider homeworkProvider; late ExamProvider examProvider; @@ -450,7 +448,6 @@ class GradesPageState extends State { Widget build(BuildContext context) { user = Provider.of(context); gradeProvider = Provider.of(context); - updateProvider = Provider.of(context); calculatorProvider = Provider.of(context); homeworkProvider = Provider.of(context); examProvider = Provider.of(context); @@ -587,7 +584,7 @@ class GradesPageState extends State { backgroundColor: Theme.of(context) .colorScheme .tertiary, //ColorUtils.stringToColor(user.displayName ?? "?"), - badge: updateProvider.available, + badge: false, role: user.role, profilePictureString: user.picture, gradeStreak: (user.gradeStreak ?? 0) > 1, diff --git a/refilc_mobile_ui/lib/pages/home/home_page.dart b/refilc_mobile_ui/lib/pages/home/home_page.dart index 8ccd9c62..5fcdbbfd 100644 --- a/refilc_mobile_ui/lib/pages/home/home_page.dart +++ b/refilc_mobile_ui/lib/pages/home/home_page.dart @@ -13,7 +13,6 @@ import 'package:intl/intl.dart'; import 'package:refilc_mobile_ui/pages/messages/messages_page.dart'; import 'package:refilc_plus/providers/plus_provider.dart'; import 'package:animated_list_plus/animated_list_plus.dart'; -import 'package:refilc/api/providers/update_provider.dart'; import 'package:refilc/api/providers/sync.dart'; import 'package:confetti/confetti.dart'; import 'package:refilc/models/settings.dart'; @@ -51,7 +50,6 @@ class HomePageState extends State with TickerProviderStateMixin { late TabController _tabController; late UserProvider user; late SettingsProvider settings; - late UpdateProvider updateProvider; late StatusProvider statusProvider; late GradeProvider gradeProvider; late TimetableProvider timetableProvider; @@ -174,7 +172,6 @@ class HomePageState extends State with TickerProviderStateMixin { user = Provider.of(context); settings = Provider.of(context); statusProvider = Provider.of(context, listen: false); - updateProvider = Provider.of(context); _liveCard = Provider.of(context); gradeProvider = Provider.of(context); context.watch(); @@ -335,7 +332,7 @@ class HomePageState extends State with TickerProviderStateMixin { .tertiary, //!settings.presentationMode //? ColorUtils.stringToColor(user.displayName ?? "?") //: Theme.of(context).colorScheme.secondary, - badge: updateProvider.available, + badge: false, role: user.role, profilePictureString: user.picture, gradeStreak: (user.gradeStreak ?? 0) > 1, diff --git a/refilc_mobile_ui/lib/pages/messages/messages_page.dart b/refilc_mobile_ui/lib/pages/messages/messages_page.dart index 6d7cdbfa..525f9f16 100644 --- a/refilc_mobile_ui/lib/pages/messages/messages_page.dart +++ b/refilc_mobile_ui/lib/pages/messages/messages_page.dart @@ -1,7 +1,6 @@ import 'dart:math'; import 'package:google_fonts/google_fonts.dart'; -import 'package:refilc/api/providers/update_provider.dart'; import 'package:refilc/models/settings.dart'; import 'package:refilc/ui/date_widget.dart'; import 'package:refilc_kreta_api/providers/message_provider.dart'; @@ -35,7 +34,6 @@ class MessagesPageState extends State late UserProvider user; late MessageProvider messageProvider; - late UpdateProvider updateProvider; late String firstName; late TabController tabController; @@ -50,7 +48,6 @@ class MessagesPageState extends State Widget build(BuildContext context) { user = Provider.of(context); messageProvider = Provider.of(context); - updateProvider = Provider.of(context); List nameParts = user.displayName?.split(" ") ?? ["?"]; firstName = nameParts.length > 1 ? nameParts[1] : nameParts[0]; @@ -108,7 +105,7 @@ class MessagesPageState extends State backgroundColor: Theme.of(context) .colorScheme .tertiary, //ColorUtils.stringToColor(user.displayName ?? "?"), - badge: updateProvider.available, + badge: false, role: user.role, profilePictureString: user.picture, gradeStreak: (user.gradeStreak ?? 0) > 1, diff --git a/refilc_mobile_ui/lib/pages/notes/notes_page.dart b/refilc_mobile_ui/lib/pages/notes/notes_page.dart index 96d2d98c..d6752fdc 100644 --- a/refilc_mobile_ui/lib/pages/notes/notes_page.dart +++ b/refilc_mobile_ui/lib/pages/notes/notes_page.dart @@ -26,7 +26,6 @@ import 'package:flutter_feather_icons/flutter_feather_icons.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:refilc/api/providers/database_provider.dart'; import 'package:refilc/api/providers/self_note_provider.dart'; -import 'package:refilc/api/providers/update_provider.dart'; import 'package:refilc/models/self_note.dart'; import 'package:refilc/models/settings.dart'; import 'package:refilc/utils/format.dart'; @@ -76,7 +75,6 @@ class NotesPage extends StatefulWidget { class NotesPageState extends State with TickerProviderStateMixin { late UserProvider user; - late UpdateProvider updateProvider; late DatabaseProvider databaseProvider; late SelfNoteProvider selfNoteProvider; @@ -112,7 +110,6 @@ Future deleteTodoItem(TodoItem item) async { user = Provider.of(context, listen: false); databaseProvider = Provider.of(context, listen: false); - updateProvider = Provider.of(context, listen: false); selfNoteProvider = Provider.of(context, listen: false); doneItems = await databaseProvider.userQuery.toDoItems(userId: user.id!); @@ -287,7 +284,6 @@ if (selfNoteProvider.todos.isNotEmpty) { Widget build(BuildContext context) { user = Provider.of(context); databaseProvider = Provider.of(context); - updateProvider = Provider.of(context); selfNoteProvider = Provider.of(context); List nameParts = user.displayName?.split(" ") ?? ["?"]; @@ -357,7 +353,7 @@ if (selfNoteProvider.todos.isNotEmpty) { name: firstName, backgroundColor: Theme.of(context).colorScheme.tertiary, //ColorUtils.stringToColor(user.displayName ?? "?"), - badge: updateProvider.available, + badge: false, role: user.role, profilePictureString: user.picture, gradeStreak: (user.gradeStreak ?? 0) > 1, diff --git a/refilc_mobile_ui/lib/pages/timetable/timetable_page.dart b/refilc_mobile_ui/lib/pages/timetable/timetable_page.dart index 6c4ee002..601d6e2e 100644 --- a/refilc_mobile_ui/lib/pages/timetable/timetable_page.dart +++ b/refilc_mobile_ui/lib/pages/timetable/timetable_page.dart @@ -3,7 +3,6 @@ import 'package:animations/animations.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:i18n_extension/i18n_extension.dart'; import 'package:refilc/api/providers/database_provider.dart'; -import 'package:refilc/api/providers/update_provider.dart'; import 'package:refilc/models/settings.dart'; import 'package:refilc/utils/format.dart'; import 'package:refilc_kreta_api/client/client.dart'; @@ -77,7 +76,6 @@ class TimetablePageState extends State late UserProvider user; late TimetableProvider timetableProvider; - late UpdateProvider updateProvider; late SettingsProvider settingsProvider; late DatabaseProvider db; @@ -209,7 +207,6 @@ class TimetablePageState extends State Widget build(BuildContext context) { user = Provider.of(context); timetableProvider = Provider.of(context); - updateProvider = Provider.of(context); settingsProvider = Provider.of(context); getCustom(); @@ -315,7 +312,7 @@ class TimetablePageState extends State backgroundColor: Theme.of(context) .colorScheme .tertiary, //ColorUtils.stringToColor(user.displayName ?? "?"), - badge: updateProvider.available, + badge: false, role: user.role, profilePictureString: user.picture, gradeStreak: (user.gradeStreak ?? 0) > 1, diff --git a/refilc_mobile_ui/lib/screens/navigation/navigation_screen.dart b/refilc_mobile_ui/lib/screens/navigation/navigation_screen.dart index 03952f52..95db9e55 100644 --- a/refilc_mobile_ui/lib/screens/navigation/navigation_screen.dart +++ b/refilc_mobile_ui/lib/screens/navigation/navigation_screen.dart @@ -1,7 +1,6 @@ // ignore_for_file: deprecated_member_use import 'package:flutter_svg/svg.dart'; -import 'package:refilc/api/providers/update_provider.dart'; import 'package:refilc/helpers/quick_actions.dart'; import 'package:refilc/models/settings.dart'; import 'package:refilc/theme/observer.dart'; @@ -54,7 +53,6 @@ class NavigationScreenState extends State late SettingsProvider settings; late NewsProvider newsProvider; late GoalProvider goalProvider; - late UpdateProvider updateProvider; late GradeProvider gradeProvicer; late AdProvider adProvider; @@ -181,10 +179,6 @@ class NavigationScreenState extends State goalProvider = Provider.of(context, listen: false); goalProvider.fetchDone(gradeProvider: gradeProvicer); - // get releases - updateProvider = Provider.of(context, listen: false); - updateProvider.fetch(); - // get advertisements adProvider = Provider.of(context, listen: false); adProvider.fetch(); diff --git a/refilc_mobile_ui/lib/screens/settings/settings_screen.dart b/refilc_mobile_ui/lib/screens/settings/settings_screen.dart index 8c62e72b..9763aac2 100644 --- a/refilc_mobile_ui/lib/screens/settings/settings_screen.dart +++ b/refilc_mobile_ui/lib/screens/settings/settings_screen.dart @@ -22,7 +22,6 @@ import 'dart:convert'; import 'dart:io'; import 'package:refilc/api/providers/live_card_provider.dart'; -import 'package:refilc/api/providers/update_provider.dart'; import 'package:refilc_kreta_api/providers/absence_provider.dart'; import 'package:refilc_kreta_api/providers/event_provider.dart'; import 'package:refilc_kreta_api/providers/exam_provider.dart'; @@ -52,7 +51,6 @@ import 'package:refilc_mobile_ui/common/splitted_panel/splitted_panel.dart'; import 'package:refilc_mobile_ui/common/system_chrome.dart'; // import 'package:refilc_mobile_ui/common/system_chrome.dart'; -import 'package:refilc_mobile_ui/common/widgets/update/updates_view.dart'; import 'package:refilc_mobile_ui/screens/news/news_screen.dart'; // import 'package:refilc_mobile_ui/screens/notes/notes_screen.dart'; @@ -105,7 +103,6 @@ class SettingsScreenState extends State Future? futureRelease; late UserProvider user; - late UpdateProvider updateProvider; late SettingsProvider settings; late DatabaseProvider databaseProvider; late KretaClient kretaClient; @@ -270,10 +267,6 @@ class SettingsScreenState extends State @override void initState() { super.initState(); - Future.delayed(Duration.zero, () { - futureRelease = Provider.of(context, listen: false) - .installedVersion(); - }); _hideContainersController = AnimationController( vsync: this, duration: const Duration(milliseconds: 200)); } @@ -293,7 +286,6 @@ class SettingsScreenState extends State Widget build(BuildContext context) { user = Provider.of(context); settings = Provider.of(context); - updateProvider = Provider.of(context); databaseProvider = Provider.of(context); kretaClient = Provider.of(context); @@ -393,7 +385,7 @@ class SettingsScreenState extends State radius: 48.42069, onTap: () => _showBottomSheet(user.getUser(user.id ?? "")), name: firstName, - badge: updateProvider.available, + badge: false, role: user.role, profilePictureString: user.picture, gradeStreak: (user.gradeStreak ?? 0) > 1, @@ -610,27 +602,6 @@ class SettingsScreenState extends State // ), // ), - // updates - if (updateProvider.available) - Padding( - padding: const EdgeInsets.symmetric( - vertical: 12.0, horizontal: 24.0), - child: Panel( - child: PanelButton( - onPressed: () => _openUpdates(context), - title: Text("update_available".i18n), - leading: const Icon(FeatherIcons.download), - trailing: Text( - updateProvider.releases.first.tag, - style: TextStyle( - fontWeight: FontWeight.w500, - color: Theme.of(context).colorScheme.secondary, - ), - ), - ), - ), - ), - // const Padding( // padding: EdgeInsets.symmetric(vertical: 12.0, horizontal: 24.0), // child: PremiumBannerButton(), @@ -1174,9 +1145,6 @@ class SettingsScreenState extends State Navigator.of(context, rootNavigator: true) .push(CupertinoPageRoute(builder: (context) => const NewsScreen())); - void _openUpdates(BuildContext context) => - UpdateView.show(updateProvider.releases.first, context: context); - void _openPrivacy(BuildContext context) => PrivacyView.show(context); // void _openNotes(BuildContext context, Map doneItems) async =>