forked from firka/student-legacy
fix #122
This commit is contained in:
parent
446fad4c5f
commit
fcb1d8d6d9
@ -121,19 +121,16 @@ class FilcAPI {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Future<http.StreamedResponse?> downloadRelease(Release release) {
|
static Future<http.StreamedResponse?> downloadRelease(ReleaseDownload release) {
|
||||||
if (release.downloads.isNotEmpty) {
|
|
||||||
try {
|
try {
|
||||||
var client = http.Client();
|
var client = http.Client();
|
||||||
var request = http.Request('GET', Uri.parse(release.downloads.first));
|
var request = http.Request('GET', Uri.parse(release.url));
|
||||||
return client.send(request);
|
return client.send(request);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
print("ERROR: FilcAPI.downloadRelease: $error");
|
print("ERROR: FilcAPI.downloadRelease: $error");
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return Future.value(null);
|
return Future.value(null);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static Future<void> sendReport(ErrorReport report) async {
|
static Future<void> sendReport(ErrorReport report) async {
|
||||||
try {
|
try {
|
||||||
|
@ -7,9 +7,12 @@ enum Status { network, maintenance, syncing }
|
|||||||
class StatusProvider extends ChangeNotifier {
|
class StatusProvider extends ChangeNotifier {
|
||||||
final List<Status> _stack = [];
|
final List<Status> _stack = [];
|
||||||
double _progress = 0.0;
|
double _progress = 0.0;
|
||||||
|
ConnectivityResult _networkType = ConnectivityResult.none;
|
||||||
|
ConnectivityResult get networkType => _networkType;
|
||||||
|
|
||||||
StatusProvider() {
|
StatusProvider() {
|
||||||
_handleNetworkChanges();
|
_handleNetworkChanges();
|
||||||
|
Connectivity().checkConnectivity().then((value) => _networkType = value);
|
||||||
}
|
}
|
||||||
|
|
||||||
Status? getStatus() => _stack.isNotEmpty ? _stack[0] : null;
|
Status? getStatus() => _stack.isNotEmpty ? _stack[0] : null;
|
||||||
@ -18,6 +21,7 @@ class StatusProvider extends ChangeNotifier {
|
|||||||
|
|
||||||
void _handleNetworkChanges() {
|
void _handleNetworkChanges() {
|
||||||
Connectivity().onConnectivityChanged.listen((event) {
|
Connectivity().onConnectivityChanged.listen((event) {
|
||||||
|
_networkType = event;
|
||||||
if (event == ConnectivityResult.none) {
|
if (event == ConnectivityResult.none) {
|
||||||
if (!_stack.contains(Status.network)) {
|
if (!_stack.contains(Status.network)) {
|
||||||
_stack.insert(0, Status.network);
|
_stack.insert(0, Status.network);
|
||||||
|
@ -86,7 +86,7 @@ class App extends StatelessWidget {
|
|||||||
ChangeNotifierProvider<UpdateProvider>(create: (context) => UpdateProvider(context: context)),
|
ChangeNotifierProvider<UpdateProvider>(create: (context) => UpdateProvider(context: context)),
|
||||||
|
|
||||||
// User data providers
|
// 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<TimetableProvider>(create: (_) => timetable),
|
||||||
ChangeNotifierProvider<ExamProvider>(create: (context) => ExamProvider(context: context)),
|
ChangeNotifierProvider<ExamProvider>(create: (context) => ExamProvider(context: context)),
|
||||||
ChangeNotifierProvider<HomeworkProvider>(create: (context) => HomeworkProvider(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<EventProvider>(create: (context) => EventProvider(context: context)),
|
||||||
ChangeNotifierProvider<AbsenceProvider>(create: (context) => AbsenceProvider(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))
|
ChangeNotifierProvider<LiveCardProvider>(create: (context) => LiveCardProvider(timetable: timetable, settings: settings))
|
||||||
],
|
],
|
||||||
child: Consumer<ThemeModeObserver>(
|
child: Consumer<ThemeModeObserver>(
|
||||||
|
@ -40,7 +40,7 @@ extension UpdateHelper on Release {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Future<Uint8List> download({UpdateCallback? updateCallback}) async {
|
Future<Uint8List> download({UpdateCallback? updateCallback}) async {
|
||||||
var response = await FilcAPI.downloadRelease(this);
|
var response = await FilcAPI.downloadRelease(downloads.first);
|
||||||
|
|
||||||
List<List<int>> chunks = [];
|
List<List<int>> chunks = [];
|
||||||
int downloaded = 0;
|
int downloaded = 0;
|
||||||
|
@ -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 {
|
class Release {
|
||||||
String tag;
|
String tag;
|
||||||
Version version;
|
Version version;
|
||||||
String author;
|
String author;
|
||||||
String body;
|
String body;
|
||||||
List<String> downloads;
|
List<ReleaseDownload> downloads;
|
||||||
bool prerelease;
|
bool prerelease;
|
||||||
|
|
||||||
Release({
|
Release({
|
||||||
@ -20,7 +37,7 @@ class Release {
|
|||||||
tag: json["tag_name"] ?? Version.zero.toString(),
|
tag: json["tag_name"] ?? Version.zero.toString(),
|
||||||
author: json["author"] != null ? json["author"]["login"] ?? "" : "",
|
author: json["author"] != null ? json["author"]["login"] ?? "" : "",
|
||||||
body: json["body"] ?? "",
|
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,
|
prerelease: json["prerelease"] ?? false,
|
||||||
version: Version.fromString(json["tag_name"] ?? ""),
|
version: Version.fromString(json["tag_name"] ?? ""),
|
||||||
);
|
);
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit 01cf6ca701f944e21ffb6e16cc543cc3a981c38c
|
Subproject commit bcd97552227f418898d6a42f671024e479ecb1b4
|
@ -1 +1 @@
|
|||||||
Subproject commit 1e32a601cb001522c62afc0fe4527ea9b1d46b31
|
Subproject commit 950c49ba8976e5b338271669de2f97fc703c0999
|
Loading…
x
Reference in New Issue
Block a user