rm: r_upgrade
This commit is contained in:
@@ -1,9 +1,6 @@
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:r_upgrade/r_upgrade.dart';
|
||||
import 'package:toolbox/core/extension/context/common.dart';
|
||||
import 'package:toolbox/core/extension/context/dialog.dart';
|
||||
import 'package:toolbox/core/extension/context/locale.dart';
|
||||
import 'package:toolbox/core/extension/context/snackbar.dart';
|
||||
@@ -13,10 +10,7 @@ import 'package:toolbox/core/utils/ui.dart';
|
||||
import 'package:toolbox/data/model/app/update.dart';
|
||||
import 'package:toolbox/data/res/build_data.dart';
|
||||
import 'package:toolbox/data/res/logger.dart';
|
||||
import 'package:toolbox/data/res/path.dart';
|
||||
import 'package:toolbox/data/res/provider.dart';
|
||||
import 'package:toolbox/data/res/store.dart';
|
||||
import 'package:toolbox/data/res/ui.dart';
|
||||
import 'package:toolbox/data/service/app.dart';
|
||||
import 'package:toolbox/locator.dart';
|
||||
|
||||
@@ -25,17 +19,15 @@ Future<bool> isFileAvailable(String url) async {
|
||||
final resp = await Dio().head(url);
|
||||
return resp.statusCode == 200;
|
||||
} catch (e) {
|
||||
Loggers.app.warning('HEAD update file failed', e);
|
||||
Loggers.app.warning('HEAD update file failed', e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> doUpdate(BuildContext context, {bool force = false}) async {
|
||||
await _rmDownloadApks();
|
||||
|
||||
final update = await locator<AppService>().getUpdate();
|
||||
|
||||
final newest = update.build.last.current;
|
||||
final newest = update.build.last.current;
|
||||
if (newest == null) {
|
||||
Loggers.app.warning('Update not available on ${OS.type}');
|
||||
return;
|
||||
@@ -81,81 +73,10 @@ Future<void> doUpdate(BuildContext context, {bool force = false}) async {
|
||||
Future<void> _doUpdate(AppUpdate update, BuildContext context) async {
|
||||
final url = update.url.current;
|
||||
if (url == null) {
|
||||
Loggers.app.warning('Update url not is null');
|
||||
Loggers.app.warning('Update url is null');
|
||||
context.showSnackBar(l10n.failed);
|
||||
return;
|
||||
}
|
||||
|
||||
if (isAndroid) {
|
||||
final useBrowser = await _openUrlUpdate(context);
|
||||
final _ = switch (useBrowser) {
|
||||
1 => await RUpgrade.upgrade(url, fileName: url.split('/').last),
|
||||
2 => await openUrl(url),
|
||||
_ => null,
|
||||
};
|
||||
} else if (isIOS) {
|
||||
await RUpgrade.upgradeFromAppStore('1586449703');
|
||||
} else {
|
||||
await openUrl(url);
|
||||
}
|
||||
}
|
||||
|
||||
Future<int?> _openUrlUpdate(BuildContext context) async {
|
||||
final inAppUpdate = Stores.setting.inAppUpdate;
|
||||
final val = inAppUpdate.fetch();
|
||||
if (val == 0) {
|
||||
var remember = true;
|
||||
final selection = await context.showRoundDialog<int>(
|
||||
title: Text(l10n.attention),
|
||||
child: StatefulBuilder(builder: (_, setState) {
|
||||
return Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
Text(l10n.inAppUpdate, style: UIs.text15Bold),
|
||||
CheckboxListTile(
|
||||
contentPadding: EdgeInsets.zero,
|
||||
value: remember,
|
||||
onChanged: (v) => setState(() => remember = v ?? true),
|
||||
title: Text(l10n.rememberChoice),
|
||||
),
|
||||
],
|
||||
);
|
||||
}),
|
||||
actions: [
|
||||
TextButton(
|
||||
onPressed: () => context.pop(0),
|
||||
child: Text(l10n.cancel),
|
||||
),
|
||||
TextButton(
|
||||
onPressed: () {
|
||||
if (remember) {
|
||||
inAppUpdate.put(1);
|
||||
}
|
||||
context.pop(1);
|
||||
},
|
||||
child: const Text('App'),
|
||||
),
|
||||
TextButton(
|
||||
onPressed: () {
|
||||
if (remember) {
|
||||
inAppUpdate.put(2);
|
||||
}
|
||||
context.pop(2);
|
||||
},
|
||||
child: Text(l10n.browser),
|
||||
),
|
||||
],
|
||||
);
|
||||
return selection;
|
||||
}
|
||||
return val;
|
||||
}
|
||||
|
||||
// rmdir Download
|
||||
Future<void> _rmDownloadApks() async {
|
||||
if (!isAndroid) return;
|
||||
final dlDir = Directory(await Paths.dl);
|
||||
if (await dlDir.exists()) {
|
||||
await dlDir.delete(recursive: true);
|
||||
}
|
||||
await openUrl(url);
|
||||
}
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
|
||||
class BuildData {
|
||||
static const String name = "ServerBox";
|
||||
static const int build = 888;
|
||||
static const int build = 891;
|
||||
static const String engine = "3.19.6";
|
||||
static const String buildAt = "2024-05-09 23:31:53";
|
||||
static const int modifications = 2;
|
||||
static const String buildAt = "2024-05-10 11:30:47";
|
||||
static const int modifications = 3;
|
||||
static const int script = 46;
|
||||
}
|
||||
|
||||
@@ -260,11 +260,6 @@ class SettingStore extends PersistentStore {
|
||||
|
||||
late final displayCpuIndex = property('displayCpuIndex', true);
|
||||
|
||||
/// Some Android device are unable display the download progress notification,
|
||||
/// open url in external browser.
|
||||
/// 0 -> unset, 1 -> true, 2 -> false
|
||||
late final inAppUpdate = property('inAppUpdate', 0);
|
||||
|
||||
late final editorSoftWrap = property('editorSoftWrap', isIOS);
|
||||
|
||||
late final sshTermHelpShown = property('sshTermHelpShown', false);
|
||||
|
||||
@@ -104,48 +104,47 @@ class _ServerDetailPageState extends State<ServerDetailPage>
|
||||
final buildFuncs = !Stores.setting.moveOutServerTabFuncBtns.fetch();
|
||||
final logoUrl = si.spi.custom?.logoUrl;
|
||||
final buildLogo = logoUrl != null;
|
||||
final moreLen = () {
|
||||
var len = 0;
|
||||
if (buildLogo) len++;
|
||||
if (buildFuncs) len++;
|
||||
return len;
|
||||
}();
|
||||
final children = [
|
||||
if (buildLogo)
|
||||
_buildLogo(logoUrl, si.status.more[StatusCmdType.sys]?.dist),
|
||||
if (buildFuncs) ServerFuncBtns(spi: widget.spi),
|
||||
];
|
||||
for (final card in _cardsOrder) {
|
||||
final buildFunc = _cardBuildMap[card];
|
||||
if (buildFunc != null) {
|
||||
children.add(buildFunc(si.status));
|
||||
}
|
||||
}
|
||||
return Scaffold(
|
||||
appBar: CustomAppBar(
|
||||
title: Text(si.spi.name, style: UIs.text18),
|
||||
actions: [
|
||||
IconButton(
|
||||
icon: const Icon(Icons.edit),
|
||||
onPressed: () async {
|
||||
final delete = await AppRoute.serverEdit(spi: si.spi).go(context);
|
||||
if (delete == true) {
|
||||
context.pop();
|
||||
}
|
||||
},
|
||||
)
|
||||
],
|
||||
),
|
||||
body: ListView.builder(
|
||||
appBar: _buildAppBar(si),
|
||||
body: ListView(
|
||||
padding: EdgeInsets.only(
|
||||
left: 13,
|
||||
right: 13,
|
||||
bottom: _media.padding.bottom + 77,
|
||||
),
|
||||
itemCount: _cardsOrder.length + moreLen,
|
||||
itemBuilder: (context, index) {
|
||||
index -= moreLen;
|
||||
if (index == -2 && buildLogo) {
|
||||
return _buildLogo(logoUrl, si.status.more[StatusCmdType.sys]?.dist);
|
||||
}
|
||||
if (index == -1 && buildFuncs) {
|
||||
return ServerFuncBtns(spi: widget.spi);
|
||||
}
|
||||
return _cardBuildMap[_cardsOrder[index]]?.call(si.status);
|
||||
},
|
||||
children: children,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
CustomAppBar _buildAppBar(Server si) {
|
||||
return CustomAppBar(
|
||||
title: Text(si.spi.name, style: UIs.text18),
|
||||
actions: [
|
||||
IconButton(
|
||||
icon: const Icon(Icons.edit),
|
||||
onPressed: () async {
|
||||
final delete = await AppRoute.serverEdit(spi: si.spi).go(context);
|
||||
if (delete == true) {
|
||||
context.pop();
|
||||
}
|
||||
},
|
||||
)
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildLogo(String logoUrl, Dist? dist) {
|
||||
if (dist != null) {
|
||||
logoUrl = logoUrl.replaceFirst('{DIST}', dist.name);
|
||||
|
||||
@@ -43,9 +43,10 @@ final class _AutoHideState extends State<AutoHide> {
|
||||
_timer = Timer.periodic(const Duration(seconds: 3), (_) {
|
||||
if (_isScrolling) return;
|
||||
if (!_visible) return;
|
||||
if (!widget.controller.positions.any((e) => e.maxScrollExtent >= 0)) {
|
||||
return;
|
||||
}
|
||||
final canScroll =
|
||||
widget.controller.positions.any((e) => e.maxScrollExtent >= 0);
|
||||
if (!canScroll) return;
|
||||
|
||||
setState(() {
|
||||
_visible = false;
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user