- optimize TextField
- opt apt pwd req times
- use logger in update.dart
This commit is contained in:
Junyuan Feng
2022-05-15 13:48:57 +08:00
parent 282443a548
commit 36d7dc7bb2
15 changed files with 90 additions and 83 deletions

View File

@@ -10,7 +10,8 @@ import 'package:toolbox/core/provider_base.dart';
import 'package:toolbox/data/model/apt/upgrade_pkg_info.dart';
import 'package:toolbox/data/model/distribution.dart';
typedef PwdRequestFunc = Future<String> Function(String? userName);
typedef PwdRequestFunc = Future<String> Function(
bool lastTimes, String? userName);
final pwdRequestWithUserReg = RegExp(r'\[sudo\] password for (.+):');
class AptProvider extends BusyProvider {
@@ -27,7 +28,8 @@ class AptProvider extends BusyProvider {
String? error;
String? upgradeLog;
String? updateLog;
String? savedPwd;
String lastLog = '';
int triedTimes = 0;
AptProvider();
@@ -49,10 +51,10 @@ class AptProvider extends BusyProvider {
error = null;
upgradeLog = null;
updateLog = whoami = null;
savedPwd = null;
onUpgrade = null;
onUpdate = null;
onPasswordRequest = null;
triedTimes = 0;
}
Future<void> refreshInstalled() async {
@@ -128,7 +130,10 @@ class AptProvider extends BusyProvider {
session.stderr.listen((e) => _onPwd(e, session.stdin));
session.stdout.listen((data) async {
upgradeLog = (upgradeLog ?? '') + data.string;
final log = data.string;
if (lastLog == log.trim()) return;
upgradeLog = (upgradeLog ?? '') + log;
lastLog = log.trim();
notifyListeners();
onUpgrade!();
});
@@ -143,16 +148,12 @@ class AptProvider extends BusyProvider {
if (event.contains('[sudo] password for ')) {
final user = pwdRequestWithUserReg.firstMatch(event)?.group(1);
logger.info('sudo password request for $user');
final pwd = await () async {
if (savedPwd != null) return savedPwd!;
final inputPwd = await (onPasswordRequest ?? (_) async => '')(user);
if (inputPwd.isNotEmpty) {
savedPwd = inputPwd;
}
return inputPwd;
}();
triedTimes++;
final pwd =
await (onPasswordRequest ?? (_) async => '')(triedTimes == 3, user);
if (pwd.isEmpty) {
logger.info('sudo password request cancelled');
return;
}
stdin.add(Uint8List.fromList(utf8.encode('$pwd\n')));
}

View File

@@ -2,9 +2,9 @@
class BuildData {
static const String name = "ServerBox";
static const int build = 134;
static const int build = 135;
static const String engine =
"Flutter 3.0.0 • channel stable • https://github.com/flutter/flutter.git\nFramework • revision ee4e09cce0 (2 days ago) • 2022-05-09 16:45:18 -0700\nEngine • revision d1b9a6938a\nTools • Dart 2.17.0 • DevTools 2.12.2\n";
static const String buildAt = "2022-05-12 14:31:57.568409";
static const int modifications = 37;
"Flutter 3.0.0 • channel stable • https://github.com/flutter/flutter.git\nFramework • revision ee4e09cce0 (3 days ago) • 2022-05-09 16:45:18 -0700\nEngine • revision d1b9a6938a\nTools • Dart 2.17.0 • DevTools 2.12.2\n";
static const String buildAt = "2022-05-13 09:32:15.654170";
static const int modifications = 15;
}