This commit is contained in:
55nknown 2022-11-14 09:14:08 +01:00
parent 446fad4c5f
commit fcb1d8d6d9
7 changed files with 37 additions and 18 deletions

View File

@ -121,18 +121,15 @@ class FilcAPI {
return null;
}
static Future<http.StreamedResponse?> 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<http.StreamedResponse?> 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<void> sendReport(ErrorReport report) async {

View File

@ -7,9 +7,12 @@ enum Status { network, maintenance, syncing }
class StatusProvider extends ChangeNotifier {
final List<Status> _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);

View File

@ -86,7 +86,7 @@ class App extends StatelessWidget {
ChangeNotifierProvider<UpdateProvider>(create: (context) => UpdateProvider(context: context)),
// User data providers
ChangeNotifierProvider<GradeProvider>(create: (context) => GradeProvider(settings: settings, user: user, database: database, kreta: kreta)),
ChangeNotifierProvider<GradeProvider>(create: (_) => GradeProvider(settings: settings, user: user, database: database, kreta: kreta)),
ChangeNotifierProvider<TimetableProvider>(create: (_) => timetable),
ChangeNotifierProvider<ExamProvider>(create: (context) => ExamProvider(context: context)),
ChangeNotifierProvider<HomeworkProvider>(create: (context) => HomeworkProvider(context: context)),
@ -95,7 +95,8 @@ class App extends StatelessWidget {
ChangeNotifierProvider<EventProvider>(create: (context) => EventProvider(context: context)),
ChangeNotifierProvider<AbsenceProvider>(create: (context) => AbsenceProvider(context: context)),
ChangeNotifierProvider<GradeCalculatorProvider>(create: (context) => GradeCalculatorProvider(context)),
ChangeNotifierProvider<GradeCalculatorProvider>(
create: (_) => GradeCalculatorProvider(settings: settings, user: user, database: database, kreta: kreta)),
ChangeNotifierProvider<LiveCardProvider>(create: (context) => LiveCardProvider(timetable: timetable, settings: settings))
],
child: Consumer<ThemeModeObserver>(

View File

@ -40,7 +40,7 @@ extension UpdateHelper on Release {
}
Future<Uint8List> download({UpdateCallback? updateCallback}) async {
var response = await FilcAPI.downloadRelease(this);
var response = await FilcAPI.downloadRelease(downloads.first);
List<List<int>> chunks = [];
int downloaded = 0;

View File

@ -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<String> downloads;
List<ReleaseDownload> 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<String>() : [],
downloads: json["assets"] != null ? json["assets"].map((a) => ReleaseDownload.fromJson(a)).toList().cast<ReleaseDownload>() : [],
prerelease: json["prerelease"] ?? false,
version: Version.fromString(json["tag_name"] ?? ""),
);

@ -1 +1 @@
Subproject commit 01cf6ca701f944e21ffb6e16cc543cc3a981c38c
Subproject commit bcd97552227f418898d6a42f671024e479ecb1b4

@ -1 +1 @@
Subproject commit 1e32a601cb001522c62afc0fe4527ea9b1d46b31
Subproject commit 950c49ba8976e5b338271669de2f97fc703c0999