mirror of
https://github.com/GopeedLab/gopeed.git
synced 2026-11-08 09:30:27 +00:00
feat: new version check (#102)
This commit is contained in:
1 parent
701ea59035
commit
33f6325bf7
19 files changed
+235
-91
No files matched your search
@@ -1,7 +1,17 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:get/get.dart';
|
||||
import 'package:gopeed/api/api.dart';
|
||||
|
||||
class SettingController extends GetxController {
|
||||
final tapStatues = <String, bool>{}.obs;
|
||||
final latestVersion = "".obs;
|
||||
|
||||
@override
|
||||
void onInit() {
|
||||
super.onInit();
|
||||
fetchLatestVersion();
|
||||
}
|
||||
|
||||
// set all tap status to false
|
||||
void clearTap() {
|
||||
@@ -13,4 +23,22 @@ class SettingController extends GetxController {
|
||||
clearTap();
|
||||
tapStatues[key] = true;
|
||||
}
|
||||
|
||||
// fetch latest version
|
||||
void fetchLatestVersion() async {
|
||||
String? releaseDataStr;
|
||||
try {
|
||||
releaseDataStr =
|
||||
(await proxyRequest("https://gopeed.com/api/release")).data;
|
||||
} catch (e) {
|
||||
releaseDataStr = (await proxyRequest(
|
||||
"https://api.github.com/repos/GopeedLab/gopeed/releases/latest"))
|
||||
.data;
|
||||
}
|
||||
if (releaseDataStr == null) {
|
||||
return;
|
||||
}
|
||||
final releaseData = jsonDecode(releaseDataStr);
|
||||
latestVersion.value = releaseData["tag_name"].substring(1);
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,7 @@ import 'package:get/get.dart';
|
||||
import '../../../../util/message.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
import 'package:badges/badges.dart' as badges;
|
||||
|
||||
import '../../../../generated/locales.g.dart';
|
||||
import '../../../../util/localeManager.dart';
|
||||
@@ -236,10 +237,45 @@ class SettingView extends GetView<SettingController> {
|
||||
mode: LaunchMode.externalApplication);
|
||||
},
|
||||
);
|
||||
buildVersion() => ListTile(
|
||||
title: Text('version'.tr),
|
||||
subtitle: Text(packageInfo.version),
|
||||
);
|
||||
buildVersion() {
|
||||
final hasNewVersion = controller.latestVersion.value != '' &&
|
||||
controller.latestVersion.value != packageInfo.version;
|
||||
return ListTile(
|
||||
title: hasNewVersion
|
||||
? badges.Badge(
|
||||
position: badges.BadgePosition.topStart(start: 36),
|
||||
child: Text('version'.tr))
|
||||
: Text('version'.tr),
|
||||
subtitle: Text(packageInfo.version),
|
||||
onTap: () {
|
||||
if (hasNewVersion) {
|
||||
showDialog(
|
||||
context: context,
|
||||
builder: (context) => AlertDialog(
|
||||
content: Text('newVersionTitle'.trParams(
|
||||
{'version': controller.latestVersion.value})),
|
||||
actions: [
|
||||
TextButton(
|
||||
onPressed: () {
|
||||
Get.back();
|
||||
},
|
||||
child: Text('newVersionLater'.tr),
|
||||
),
|
||||
TextButton(
|
||||
onPressed: () {
|
||||
launchUrl(
|
||||
Uri.parse(
|
||||
'https://github.com/GopeedLab/gopeed/releases/latest'),
|
||||
mode: LaunchMode.externalApplication);
|
||||
},
|
||||
child: Text('newVersionUpdate'.tr),
|
||||
),
|
||||
],
|
||||
));
|
||||
}
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
// advanced config items start
|
||||
final buildApiProtocol = _buildConfigItem(
|
||||
|
||||
Reference in new issue
Block a user