new: upgrade on macos

This commit is contained in:
lollipopkit
2023-08-30 17:06:24 +08:00
parent 8004c41094
commit 2f4b522189
11 changed files with 44 additions and 88 deletions

View File

@@ -6,10 +6,8 @@ import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:logging/logging.dart';
import 'package:r_upgrade/r_upgrade.dart';
import 'package:toolbox/core/extension/context.dart';
import 'package:toolbox/core/utils/misc.dart' hide pathJoin;
import 'package:toolbox/data/model/app/update.dart';
import 'package:toolbox/data/res/path.dart';
import 'package:toolbox/data/res/ui.dart';
import '../data/provider/app.dart';
import '../data/res/build_data.dart';
@@ -88,55 +86,16 @@ Future<void> doUpdate(BuildContext context, {bool force = false}) async {
}
Future<void> _doUpdate(AppUpdate update, BuildContext context, S s) async {
final url = update.url.current;
if (url == null) return;
if (isAndroid) {
final url = update.url.current;
if (url == null) return;
final fileName = url.split('/').last;
final id = await RUpgrade.upgrade(
url,
fileName: fileName,
isAutoRequestInstall: false,
);
RUpgrade.stream.listen((event) async {
if (event.status?.value == 3) {
if (id == null) {
showSnackBar(context, const Text('install id is null'));
return;
}
final sha256 = () {
try {
return fileName.split('.').first;
} catch (e) {
_logger.warning('sha256 parse failed: $e');
return null;
}
}();
final dlPath = pathJoin(await _dlDir, fileName);
final computed = await getFileSha256(dlPath);
if (computed != sha256) {
_logger.info('Mismatch sha256: $computed, $sha256');
final resume = await showRoundDialog(
context: context,
title: Text(s.attention),
child: const Text('sha256 is null'),
actions: [
TextButton(
onPressed: () => context.pop(false),
child: Text(s.cancel),
),
TextButton(
onPressed: () => context.pop(true),
child: Text(s.ok, style: textRed),
),
],
);
if (!resume) return;
}
RUpgrade.install(id);
}
});
await RUpgrade.upgrade(url, fileName: fileName);
} else if (isIOS) {
await RUpgrade.upgradeFromAppStore('1586449703');
} else if (isMacOS) {
await openUrl(url);
} else {
showRoundDialog(
context: context,
@@ -160,4 +119,4 @@ Future<void> _rmDownloadApks() async {
}
}
Future<String> get _dlDir async => pathJoin((await docDir).path, 'Download');
Future<String> get _dlDir async => joinPath((await docDir).path, 'Download');