diff --git a/filcnaplo/lib/api/client.dart b/filcnaplo/lib/api/client.dart index 0a8e049..dcab1eb 100644 --- a/filcnaplo/lib/api/client.dart +++ b/filcnaplo/lib/api/client.dart @@ -121,18 +121,15 @@ class FilcAPI { return null; } - static Future downloadRelease(Release release) { - if (release.downloads.isNotEmpty) { - try { - var client = http.Client(); - var request = http.Request('GET', Uri.parse(release.downloads.first)); - return client.send(request); - } catch (error) { - print("ERROR: FilcAPI.downloadRelease: $error"); - } + static Future downloadRelease(ReleaseDownload release) { + try { + var client = http.Client(); + var request = http.Request('GET', Uri.parse(release.url)); + return client.send(request); + } catch (error) { + print("ERROR: FilcAPI.downloadRelease: $error"); + return Future.value(null); } - - return Future.value(null); } static Future sendReport(ErrorReport report) async { diff --git a/filcnaplo/lib/api/providers/status_provider.dart b/filcnaplo/lib/api/providers/status_provider.dart index c8bb94f..274a942 100644 --- a/filcnaplo/lib/api/providers/status_provider.dart +++ b/filcnaplo/lib/api/providers/status_provider.dart @@ -7,9 +7,12 @@ enum Status { network, maintenance, syncing } class StatusProvider extends ChangeNotifier { final List _stack = []; double _progress = 0.0; + ConnectivityResult _networkType = ConnectivityResult.none; + ConnectivityResult get networkType => _networkType; StatusProvider() { _handleNetworkChanges(); + Connectivity().checkConnectivity().then((value) => _networkType = value); } Status? getStatus() => _stack.isNotEmpty ? _stack[0] : null; @@ -18,6 +21,7 @@ class StatusProvider extends ChangeNotifier { void _handleNetworkChanges() { Connectivity().onConnectivityChanged.listen((event) { + _networkType = event; if (event == ConnectivityResult.none) { if (!_stack.contains(Status.network)) { _stack.insert(0, Status.network); diff --git a/filcnaplo/lib/app.dart b/filcnaplo/lib/app.dart index c8e32e1..3a9e2a3 100644 --- a/filcnaplo/lib/app.dart +++ b/filcnaplo/lib/app.dart @@ -86,7 +86,7 @@ class App extends StatelessWidget { ChangeNotifierProvider(create: (context) => UpdateProvider(context: context)), // User data providers - ChangeNotifierProvider(create: (context) => GradeProvider(settings: settings, user: user, database: database, kreta: kreta)), + ChangeNotifierProvider(create: (_) => GradeProvider(settings: settings, user: user, database: database, kreta: kreta)), ChangeNotifierProvider(create: (_) => timetable), ChangeNotifierProvider(create: (context) => ExamProvider(context: context)), ChangeNotifierProvider(create: (context) => HomeworkProvider(context: context)), @@ -95,7 +95,8 @@ class App extends StatelessWidget { ChangeNotifierProvider(create: (context) => EventProvider(context: context)), ChangeNotifierProvider(create: (context) => AbsenceProvider(context: context)), - ChangeNotifierProvider(create: (context) => GradeCalculatorProvider(context)), + ChangeNotifierProvider( + create: (_) => GradeCalculatorProvider(settings: settings, user: user, database: database, kreta: kreta)), ChangeNotifierProvider(create: (context) => LiveCardProvider(timetable: timetable, settings: settings)) ], child: Consumer( diff --git a/filcnaplo/lib/helpers/update_helper.dart b/filcnaplo/lib/helpers/update_helper.dart index 2d6f15c..5c78a08 100644 --- a/filcnaplo/lib/helpers/update_helper.dart +++ b/filcnaplo/lib/helpers/update_helper.dart @@ -40,7 +40,7 @@ extension UpdateHelper on Release { } Future download({UpdateCallback? updateCallback}) async { - var response = await FilcAPI.downloadRelease(this); + var response = await FilcAPI.downloadRelease(downloads.first); List> chunks = []; int downloaded = 0; diff --git a/filcnaplo/lib/models/release.dart b/filcnaplo/lib/models/release.dart index 6d1696d..52d5331 100644 --- a/filcnaplo/lib/models/release.dart +++ b/filcnaplo/lib/models/release.dart @@ -1,9 +1,26 @@ +class ReleaseDownload { + String url; + int size; + + ReleaseDownload({ + required this.url, + required this.size, + }); + + factory ReleaseDownload.fromJson(Map json) { + return ReleaseDownload( + url: json["browser_download_url"] ?? "", + size: json["size"] ?? 0, + ); + } +} + class Release { String tag; Version version; String author; String body; - List downloads; + List downloads; bool prerelease; Release({ @@ -20,7 +37,7 @@ class Release { tag: json["tag_name"] ?? Version.zero.toString(), author: json["author"] != null ? json["author"]["login"] ?? "" : "", body: json["body"] ?? "", - downloads: json["assets"] != null ? json["assets"].map((a) => a["browser_download_url"] ?? "").toList().cast() : [], + downloads: json["assets"] != null ? json["assets"].map((a) => ReleaseDownload.fromJson(a)).toList().cast() : [], prerelease: json["prerelease"] ?? false, version: Version.fromString(json["tag_name"] ?? ""), ); diff --git a/filcnaplo_kreta_api b/filcnaplo_kreta_api index 01cf6ca..bcd9755 160000 --- a/filcnaplo_kreta_api +++ b/filcnaplo_kreta_api @@ -1 +1 @@ -Subproject commit 01cf6ca701f944e21ffb6e16cc543cc3a981c38c +Subproject commit bcd97552227f418898d6a42f671024e479ecb1b4 diff --git a/filcnaplo_mobile_ui b/filcnaplo_mobile_ui index 1e32a60..950c49b 160000 --- a/filcnaplo_mobile_ui +++ b/filcnaplo_mobile_ui @@ -1 +1 @@ -Subproject commit 1e32a601cb001522c62afc0fe4527ea9b1d46b31 +Subproject commit 950c49ba8976e5b338271669de2f97fc703c0999