mirror of
https://github.com/lollipopkit/flutter_server_box.git
synced 2025-12-18 07:44:26 +01:00
opt
- optimize TextField - opt apt pwd req times - use logger in update.dart
This commit is contained in:
@@ -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')));
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user