mirror of
https://github.com/lollipopkit/flutter_server_box.git
synced 2025-12-17 07:14:28 +01:00
opt.: migrate fl_lib
This commit is contained in:
@@ -1,13 +1,11 @@
|
||||
import 'dart:convert';
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:fl_lib/fl_lib.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:toolbox/core/persistant_store.dart';
|
||||
import 'package:toolbox/data/model/server/private_key_info.dart';
|
||||
import 'package:toolbox/data/model/server/server_private_info.dart';
|
||||
import 'package:toolbox/data/model/server/snippet.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/rebuild.dart';
|
||||
import 'package:toolbox/data/res/store.dart';
|
||||
@@ -76,7 +74,7 @@ class Backup {
|
||||
|
||||
static Future<String> backup([String? name]) async {
|
||||
final result = _diyEncrypt(json.encode(Backup.loadFromStore().toJson()));
|
||||
final path = '${await Paths.doc}/${name ?? Paths.bakName}';
|
||||
final path = '${Paths.doc}/${name ?? 'srvbox_bak.json'}';
|
||||
await File(path).writeAsString(result);
|
||||
return path;
|
||||
}
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
import 'package:flutter/widgets.dart';
|
||||
import 'package:toolbox/core/extension/context/common.dart';
|
||||
|
||||
class DynamicColor {
|
||||
/// 白天模式显示的颜色
|
||||
final Color light;
|
||||
|
||||
/// 暗黑模式显示的颜色
|
||||
final Color dark;
|
||||
|
||||
const DynamicColor(this.light, this.dark);
|
||||
|
||||
Color resolve(BuildContext context) => context.isDark ? dark : light;
|
||||
}
|
||||
@@ -1,15 +1,18 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
abstract class PopMenu {
|
||||
static PopupMenuItem<T> build<T>(T t, IconData icon, String text) {
|
||||
static PopupMenuItem<T> build<T>(
|
||||
T t,
|
||||
IconData icon,
|
||||
String text, {
|
||||
double? iconSize,
|
||||
}) {
|
||||
return PopupMenuItem<T>(
|
||||
value: t,
|
||||
child: Row(
|
||||
children: [
|
||||
Icon(icon),
|
||||
const SizedBox(
|
||||
width: 10,
|
||||
),
|
||||
Icon(icon, size: iconSize),
|
||||
const SizedBox(width: 10),
|
||||
Text(text),
|
||||
],
|
||||
),
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:toolbox/core/extension/context/locale.dart';
|
||||
import 'package:toolbox/data/model/app/menu/base.dart';
|
||||
|
||||
enum ContainerMenu {
|
||||
start,
|
||||
@@ -64,10 +63,4 @@ enum ContainerMenu {
|
||||
// return s.stats;
|
||||
}
|
||||
}
|
||||
|
||||
PopupMenuItem<ContainerMenu> get widget => PopMenu.build(
|
||||
this,
|
||||
icon,
|
||||
toStr,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -34,14 +34,14 @@ enum ServerFuncBtn {
|
||||
snippet,
|
||||
].map((e) => e.index).toList();
|
||||
|
||||
Icon icon([double? sizeDiff]) => switch (this) {
|
||||
sftp => Icon(Icons.insert_drive_file, size: 15 + (sizeDiff ?? 0)),
|
||||
snippet => Icon(Icons.code, size: 15 + (sizeDiff ?? 0)),
|
||||
pkg => Icon(Icons.system_security_update, size: 15 + (sizeDiff ?? 0)),
|
||||
container => Icon(FontAwesome.docker_brand, size: 14 + (sizeDiff ?? 0)),
|
||||
process => Icon(Icons.list_alt_outlined, size: 15 + (sizeDiff ?? 0)),
|
||||
terminal => Icon(Icons.terminal, size: 15 + (sizeDiff ?? 0)),
|
||||
iperf => Icon(Icons.speed, size: 15 + (sizeDiff ?? 0)),
|
||||
IconData get icon => switch (this) {
|
||||
sftp => Icons.insert_drive_file,
|
||||
snippet => Icons.code,
|
||||
pkg => Icons.system_security_update,
|
||||
container => FontAwesome.docker_brand,
|
||||
process => Icons.list_alt_outlined,
|
||||
terminal => Icons.terminal,
|
||||
iperf => Icons.speed,
|
||||
};
|
||||
|
||||
String get toStr => switch (this) {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:toolbox/core/utils/platform/path.dart';
|
||||
import 'package:fl_lib/fl_lib.dart';
|
||||
|
||||
/// It's used on platform's file system.
|
||||
/// So use [Platform.pathSeparator] to join path.
|
||||
@@ -23,7 +23,7 @@ class LocalPath {
|
||||
_path = '/';
|
||||
return;
|
||||
}
|
||||
_path = joinPath(_path, newPath);
|
||||
_path = _path.joinPath(newPath);
|
||||
}
|
||||
|
||||
bool get canBack => path != '$_prefixPath/';
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import 'package:fl_lib/fl_lib.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:icons_plus/icons_plus.dart';
|
||||
import 'package:toolbox/core/extension/context/locale.dart';
|
||||
import 'package:toolbox/core/extension/listx.dart';
|
||||
import 'package:toolbox/data/model/app/version_related.dart';
|
||||
import 'package:toolbox/data/res/store.dart';
|
||||
|
||||
|
||||
@@ -1,140 +0,0 @@
|
||||
/*
|
||||
{
|
||||
"changelog": {
|
||||
"mac": "xxx",
|
||||
"ios": "xxx",
|
||||
"android": ""
|
||||
},
|
||||
"build": {
|
||||
"min": {
|
||||
"mac": 1,
|
||||
"ios": 1,
|
||||
"android": 1
|
||||
},
|
||||
"last": {
|
||||
"mac": 1,
|
||||
"ios": 1,
|
||||
"android": 1
|
||||
}
|
||||
},
|
||||
"url": {
|
||||
"mac": "https://apps.apple.com/app/id1586449703",
|
||||
"ios": "https://apps.apple.com/app/id1586449703",
|
||||
"android": "https://cdn3.cust.app/uploads/ServerBox_262_Arm64.apk"
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:toolbox/core/utils/platform/base.dart';
|
||||
|
||||
class AppUpdate {
|
||||
const AppUpdate({
|
||||
required this.changelog,
|
||||
required this.build,
|
||||
required this.url,
|
||||
});
|
||||
|
||||
final AppUpdatePlatformSpecific<String> changelog;
|
||||
final Build build;
|
||||
final AppUpdatePlatformSpecific<String> url;
|
||||
|
||||
factory AppUpdate.fromRawJson(String str) =>
|
||||
AppUpdate.fromJson(json.decode(str));
|
||||
|
||||
String toRawJson() => json.encode(toJson());
|
||||
|
||||
factory AppUpdate.fromJson(Map<String, dynamic> json) => AppUpdate(
|
||||
changelog: AppUpdatePlatformSpecific.fromJson(json["changelog"]),
|
||||
build: Build.fromJson(json["build"]),
|
||||
url: AppUpdatePlatformSpecific.fromJson(json["url"]),
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
"changelog": changelog.toJson(),
|
||||
"build": build.toJson(),
|
||||
"url": url.toJson(),
|
||||
};
|
||||
}
|
||||
|
||||
class Build {
|
||||
Build({
|
||||
required this.min,
|
||||
required this.last,
|
||||
});
|
||||
|
||||
final AppUpdatePlatformSpecific<int> min;
|
||||
final AppUpdatePlatformSpecific<int> last;
|
||||
|
||||
factory Build.fromRawJson(String str) => Build.fromJson(json.decode(str));
|
||||
|
||||
String toRawJson() => json.encode(toJson());
|
||||
|
||||
factory Build.fromJson(Map<String, dynamic> json) => Build(
|
||||
min: AppUpdatePlatformSpecific.fromJson(json["min"]),
|
||||
last: AppUpdatePlatformSpecific.fromJson(json["last"]),
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
"min": min.toJson(),
|
||||
"last": last.toJson(),
|
||||
};
|
||||
}
|
||||
|
||||
class AppUpdatePlatformSpecific<T> {
|
||||
AppUpdatePlatformSpecific({
|
||||
required this.mac,
|
||||
required this.ios,
|
||||
required this.android,
|
||||
required this.windows,
|
||||
required this.linux,
|
||||
});
|
||||
|
||||
final T mac;
|
||||
final T ios;
|
||||
final T android;
|
||||
final T windows;
|
||||
final T linux;
|
||||
|
||||
factory AppUpdatePlatformSpecific.fromRawJson(String str) =>
|
||||
AppUpdatePlatformSpecific.fromJson(json.decode(str));
|
||||
|
||||
String toRawJson() => json.encode(toJson());
|
||||
|
||||
factory AppUpdatePlatformSpecific.fromJson(Map<String, dynamic> json) =>
|
||||
AppUpdatePlatformSpecific(
|
||||
mac: json["mac"],
|
||||
ios: json["ios"],
|
||||
android: json["android"],
|
||||
windows: json["windows"],
|
||||
linux: json["linux"],
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
"mac": mac,
|
||||
"ios": ios,
|
||||
"android": android,
|
||||
"windows": windows,
|
||||
"linux": linux,
|
||||
};
|
||||
|
||||
T? get current {
|
||||
switch (OS.type) {
|
||||
case OS.macos:
|
||||
return mac;
|
||||
case OS.ios:
|
||||
return ios;
|
||||
case OS.android:
|
||||
return android;
|
||||
case OS.windows:
|
||||
return windows;
|
||||
case OS.linux:
|
||||
return linux;
|
||||
|
||||
/// Not implemented yet.
|
||||
case OS.web || OS.fuchsia || OS.unknown:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:toolbox/core/extension/numx.dart';
|
||||
import 'package:fl_lib/fl_lib.dart';
|
||||
import 'package:toolbox/data/model/container/type.dart';
|
||||
|
||||
abstract final class ContainerImg {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:fl_lib/fl_lib.dart';
|
||||
import 'package:toolbox/core/extension/context/locale.dart';
|
||||
import 'package:toolbox/core/extension/numx.dart';
|
||||
import 'package:toolbox/data/model/container/type.dart';
|
||||
|
||||
abstract final class ContainerPs {
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import 'package:toolbox/data/res/logger.dart';
|
||||
|
||||
import 'package:fl_lib/fl_lib.dart';
|
||||
|
||||
/// raw dat from server:
|
||||
/// ```text
|
||||
@@ -92,7 +93,7 @@ abstract final class Batteries {
|
||||
if (onlyLiPoly && !bat.isLiPoly) continue;
|
||||
batteries.add(bat);
|
||||
} catch (e, s) {
|
||||
Loggers.parse.warning(e, s);
|
||||
Loggers.app.warning(e, s);
|
||||
}
|
||||
oneBatLines.clear();
|
||||
} else {
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import 'package:toolbox/core/extension/listx.dart';
|
||||
import 'package:toolbox/core/extension/numx.dart';
|
||||
import 'package:fl_lib/fl_lib.dart';
|
||||
import 'package:toolbox/data/model/server/time_seq.dart';
|
||||
|
||||
import '../../res/misc.dart';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:toolbox/core/extension/listx.dart';
|
||||
import 'package:fl_lib/fl_lib.dart';
|
||||
|
||||
class Memory {
|
||||
final int total;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:toolbox/core/extension/numx.dart';
|
||||
import 'package:fl_lib/fl_lib.dart';
|
||||
|
||||
import 'time_seq.dart';
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:toolbox/data/res/logger.dart';
|
||||
import 'package:fl_lib/fl_lib.dart';
|
||||
|
||||
import '../../../data/res/misc.dart';
|
||||
|
||||
@@ -142,7 +142,7 @@ class PsResult {
|
||||
procs.add(Proc.parse(line, map));
|
||||
} catch (e, trace) {
|
||||
errs.add('$line: $e');
|
||||
Loggers.parse.warning('Process failed', e, trace);
|
||||
Loggers.app.warning('Process failed', e, trace);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
import 'package:fl_lib/fl_lib.dart';
|
||||
import 'package:toolbox/core/extension/context/locale.dart';
|
||||
import 'package:toolbox/core/extension/duration.dart';
|
||||
import 'package:toolbox/core/extension/numx.dart';
|
||||
import 'package:toolbox/core/extension/order.dart';
|
||||
|
||||
enum PveResType {
|
||||
lxc,
|
||||
@@ -132,7 +130,12 @@ final class PveLxc extends PveResIface implements PveCtrlIface {
|
||||
@override
|
||||
String get summary {
|
||||
if (available) {
|
||||
return uptime.secondsToDuration().toStr;
|
||||
return uptime.secondsToDuration().toAgoStr(
|
||||
day: l10n.day,
|
||||
hour: l10n.hour,
|
||||
minute: l10n.minute,
|
||||
second: l10n.second,
|
||||
);
|
||||
}
|
||||
return l10n.stopped;
|
||||
}
|
||||
@@ -210,7 +213,12 @@ final class PveQemu extends PveResIface implements PveCtrlIface {
|
||||
@override
|
||||
String get summary {
|
||||
if (available) {
|
||||
return uptime.secondsToDuration().toStr;
|
||||
return uptime.secondsToDuration().toAgoStr(
|
||||
day: l10n.day,
|
||||
hour: l10n.hour,
|
||||
minute: l10n.minute,
|
||||
second: l10n.second,
|
||||
);
|
||||
}
|
||||
return l10n.stopped;
|
||||
}
|
||||
@@ -260,7 +268,12 @@ final class PveNode extends PveResIface {
|
||||
|
||||
String get topRight {
|
||||
if (isRunning) {
|
||||
return uptime.secondsToDuration().toStr;
|
||||
return uptime.secondsToDuration().toAgoStr(
|
||||
day: l10n.day,
|
||||
hour: l10n.hour,
|
||||
minute: l10n.minute,
|
||||
second: l10n.second,
|
||||
);
|
||||
}
|
||||
return l10n.stopped;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import 'package:fl_lib/fl_lib.dart';
|
||||
import 'package:toolbox/core/extension/context/locale.dart';
|
||||
import 'package:toolbox/data/res/logger.dart';
|
||||
|
||||
final class SensorAdaptor {
|
||||
final String raw;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import 'package:dartssh2/dartssh2.dart';
|
||||
import 'package:fl_lib/fl_lib.dart';
|
||||
import 'package:toolbox/core/extension/context/locale.dart';
|
||||
import 'package:toolbox/core/extension/listx.dart';
|
||||
import 'package:toolbox/data/model/app/error.dart';
|
||||
import 'package:toolbox/data/model/app/shell_func.dart';
|
||||
import 'package:toolbox/data/model/server/battery.dart';
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import 'package:fl_lib/fl_lib.dart';
|
||||
import 'package:toolbox/data/model/server/battery.dart';
|
||||
import 'package:toolbox/data/model/server/nvdia.dart';
|
||||
import 'package:toolbox/data/model/server/sensors.dart';
|
||||
import 'package:toolbox/data/model/server/server.dart';
|
||||
import 'package:toolbox/data/model/server/system.dart';
|
||||
import 'package:toolbox/data/res/logger.dart';
|
||||
|
||||
import '../app/shell_func.dart';
|
||||
import 'cpu.dart';
|
||||
@@ -45,7 +45,7 @@ Future<ServerStatus> _getLinuxStatus(ServerStatusUpdateReq req) async {
|
||||
final net = NetSpeed.parse(StatusCmdType.net.find(segments), time);
|
||||
req.ss.netSpeed.update(net);
|
||||
} catch (e, s) {
|
||||
Loggers.parse.warning(e, s);
|
||||
Loggers.app.warning(e, s);
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -56,7 +56,7 @@ Future<ServerStatus> _getLinuxStatus(ServerStatusUpdateReq req) async {
|
||||
req.ss.more[StatusCmdType.sys] = sys;
|
||||
}
|
||||
} catch (e, s) {
|
||||
Loggers.parse.warning(e, s);
|
||||
Loggers.app.warning(e, s);
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -65,14 +65,14 @@ Future<ServerStatus> _getLinuxStatus(ServerStatusUpdateReq req) async {
|
||||
req.ss.more[StatusCmdType.host] = host;
|
||||
}
|
||||
} catch (e, s) {
|
||||
Loggers.parse.warning(e, s);
|
||||
Loggers.app.warning(e, s);
|
||||
}
|
||||
|
||||
try {
|
||||
final cpus = SingleCpuCore.parse(StatusCmdType.cpu.find(segments));
|
||||
req.ss.cpu.update(cpus);
|
||||
} catch (e, s) {
|
||||
Loggers.parse.warning(e, s);
|
||||
Loggers.app.warning(e, s);
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -81,7 +81,7 @@ Future<ServerStatus> _getLinuxStatus(ServerStatusUpdateReq req) async {
|
||||
StatusCmdType.tempVal.find(segments),
|
||||
);
|
||||
} catch (e, s) {
|
||||
Loggers.parse.warning(e, s);
|
||||
Loggers.app.warning(e, s);
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -90,20 +90,20 @@ Future<ServerStatus> _getLinuxStatus(ServerStatusUpdateReq req) async {
|
||||
req.ss.tcp = tcp;
|
||||
}
|
||||
} catch (e, s) {
|
||||
Loggers.parse.warning(e, s);
|
||||
Loggers.app.warning(e, s);
|
||||
}
|
||||
|
||||
try {
|
||||
req.ss.disk = Disk.parse(StatusCmdType.disk.find(segments));
|
||||
req.ss.diskUsage = DiskUsage.parse(req.ss.disk);
|
||||
} catch (e, s) {
|
||||
Loggers.parse.warning(e, s);
|
||||
Loggers.app.warning(e, s);
|
||||
}
|
||||
|
||||
try {
|
||||
req.ss.mem = Memory.parse(StatusCmdType.mem.find(segments));
|
||||
} catch (e, s) {
|
||||
Loggers.parse.warning(e, s);
|
||||
Loggers.app.warning(e, s);
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -112,26 +112,26 @@ Future<ServerStatus> _getLinuxStatus(ServerStatusUpdateReq req) async {
|
||||
req.ss.more[StatusCmdType.uptime] = uptime;
|
||||
}
|
||||
} catch (e, s) {
|
||||
Loggers.parse.warning(e, s);
|
||||
Loggers.app.warning(e, s);
|
||||
}
|
||||
|
||||
try {
|
||||
req.ss.swap = Swap.parse(StatusCmdType.mem.find(segments));
|
||||
} catch (e, s) {
|
||||
Loggers.parse.warning(e, s);
|
||||
Loggers.app.warning(e, s);
|
||||
}
|
||||
|
||||
try {
|
||||
final diskio = DiskIO.parse(StatusCmdType.diskio.find(segments), time);
|
||||
req.ss.diskIO.update(diskio);
|
||||
} catch (e, s) {
|
||||
Loggers.parse.warning(e, s);
|
||||
Loggers.app.warning(e, s);
|
||||
}
|
||||
|
||||
try {
|
||||
req.ss.nvidia = NvidiaSmi.fromXml(StatusCmdType.nvidia.find(segments));
|
||||
} catch (e, s) {
|
||||
Loggers.parse.warning(e, s);
|
||||
Loggers.app.warning(e, s);
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -144,7 +144,7 @@ Future<ServerStatus> _getLinuxStatus(ServerStatusUpdateReq req) async {
|
||||
req.ss.batteries.addAll(batteries);
|
||||
}
|
||||
} catch (e, s) {
|
||||
Loggers.parse.warning(e, s);
|
||||
Loggers.app.warning(e, s);
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -154,7 +154,7 @@ Future<ServerStatus> _getLinuxStatus(ServerStatusUpdateReq req) async {
|
||||
req.ss.sensors.addAll(sensors);
|
||||
}
|
||||
} catch (e, s) {
|
||||
Loggers.parse.warning(e, s);
|
||||
Loggers.app.warning(e, s);
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -164,7 +164,7 @@ Future<ServerStatus> _getLinuxStatus(ServerStatusUpdateReq req) async {
|
||||
req.ss.customCmds[key] = value;
|
||||
}
|
||||
} catch (e, s) {
|
||||
Loggers.parse.warning(e, s);
|
||||
Loggers.app.warning(e, s);
|
||||
}
|
||||
|
||||
return req.ss;
|
||||
@@ -179,25 +179,25 @@ Future<ServerStatus> _getBsdStatus(ServerStatusUpdateReq req) async {
|
||||
final net = NetSpeed.parseBsd(BSDStatusCmdType.net.find(segments), time);
|
||||
req.ss.netSpeed.update(net);
|
||||
} catch (e, s) {
|
||||
Loggers.parse.warning(e, s);
|
||||
Loggers.app.warning(e, s);
|
||||
}
|
||||
|
||||
try {
|
||||
req.ss.more[StatusCmdType.sys] = BSDStatusCmdType.sys.find(segments);
|
||||
} catch (e, s) {
|
||||
Loggers.parse.warning(e, s);
|
||||
Loggers.app.warning(e, s);
|
||||
}
|
||||
|
||||
try {
|
||||
req.ss.cpu = parseBsdCpu(BSDStatusCmdType.cpu.find(segments));
|
||||
} catch (e, s) {
|
||||
Loggers.parse.warning(e, s);
|
||||
Loggers.app.warning(e, s);
|
||||
}
|
||||
|
||||
// try {
|
||||
// req.ss.mem = parseBsdMem(BSDStatusCmdType.mem.find(segments));
|
||||
// } catch (e, s) {
|
||||
// Loggers.parse.warning(e, s);
|
||||
// Loggers.app.warning(e, s);
|
||||
// }
|
||||
|
||||
try {
|
||||
@@ -206,13 +206,13 @@ Future<ServerStatus> _getBsdStatus(ServerStatusUpdateReq req) async {
|
||||
req.ss.more[StatusCmdType.uptime] = uptime;
|
||||
}
|
||||
} catch (e, s) {
|
||||
Loggers.parse.warning(e, s);
|
||||
Loggers.app.warning(e, s);
|
||||
}
|
||||
|
||||
try {
|
||||
req.ss.disk = Disk.parse(BSDStatusCmdType.disk.find(segments));
|
||||
} catch (e, s) {
|
||||
Loggers.parse.warning(e, s);
|
||||
Loggers.app.warning(e, s);
|
||||
}
|
||||
return req.ss;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:toolbox/core/utils/misc.dart';
|
||||
import 'package:fl_lib/fl_lib.dart';
|
||||
|
||||
class AbsolutePath {
|
||||
String _path;
|
||||
@@ -24,7 +24,7 @@ class AbsolutePath {
|
||||
_path = newPath;
|
||||
return;
|
||||
}
|
||||
_path = pathJoin(_path, newPath);
|
||||
_path = _path.joinPath(newPath, seperator: '/');
|
||||
}
|
||||
|
||||
bool undo() {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:toolbox/data/res/logger.dart';
|
||||
import 'package:fl_lib/fl_lib.dart';
|
||||
import 'package:toolbox/data/res/store.dart';
|
||||
|
||||
import '../../../core/utils/server.dart';
|
||||
|
||||
Reference in New Issue
Block a user