diff --git a/lib/data/model/server/disk.dart b/lib/data/model/server/disk.dart index a616ba07..dba3c870 100644 --- a/lib/data/model/server/disk.dart +++ b/lib/data/model/server/disk.dart @@ -41,7 +41,8 @@ class Disk { } try { final dev = vals[0]; - if (!dev.startsWith('/dev')) continue; + // Some NAS may have mounted path like this `//192.168.1.2/` + if (!_shouldCalc(dev)) continue; list.add(Disk( dev: dev, mount: vals[5], @@ -161,7 +162,7 @@ class DiskUsage { var used = BigInt.zero; var size = BigInt.zero; for (var disk in disks) { - if (!disk.dev.startsWith('/dev')) continue; + if (!_shouldCalc(disk.dev)) continue; if (devs.contains(disk.dev)) continue; devs.add(disk.dev); used += disk.used; @@ -170,3 +171,9 @@ class DiskUsage { return DiskUsage(used: used, size: size); } } + +bool _shouldCalc(String dev) { + if (dev.startsWith('/dev')) return true; + if (dev.startsWith('//')) return true; + return false; +} diff --git a/lib/data/model/server/server_private_info.dart b/lib/data/model/server/server_private_info.dart index cd6e9841..d5cc5a0f 100644 --- a/lib/data/model/server/server_private_info.dart +++ b/lib/data/model/server/server_private_info.dart @@ -48,20 +48,31 @@ class ServerPrivateInfo { this.jumpId, }) : id = '$user@$ip:$port'; - ServerPrivateInfo.fromJson(Map json) - : ip = json["ip"].toString(), - port = json["port"] ?? 22, - user = json["user"]?.toString() ?? 'root', - id = - '${json["user"]?.toString() ?? "root"}@${json["ip"].toString()}:${json["port"] ?? 22}', - name = json["name"]?.toString() ?? - '${json["user"]?.toString() ?? 'root'}@${json["ip"].toString()}:${json["port"] ?? 22}', - pwd = json["authorization"]?.toString(), - keyId = json["pubKeyId"]?.toString(), - tags = json["tags"]?.cast(), - alterUrl = json["alterUrl"]?.toString(), - autoConnect = json["autoConnect"], - jumpId = json["jumpId"]; + static ServerPrivateInfo fromJson(Map json) { + final ip = json["ip"] as String? ?? ''; + final port = json["port"] as int? ?? 22; + final user = json["user"] as String? ?? 'root'; + final name = json["name"] as String? ?? ''; + final pwd = json["authorization"] as String?; + final keyId = json["pubKeyId"] as String?; + final tags = (json["tags"] as List?)?.cast(); + final alterUrl = json["alterUrl"] as String?; + final autoConnect = json["autoConnect"] as bool?; + final jumpId = json["jumpId"] as String?; + + return ServerPrivateInfo( + name: name, + ip: ip, + port: port, + user: user, + pwd: pwd, + keyId: keyId, + tags: tags, + alterUrl: alterUrl, + autoConnect: autoConnect, + jumpId: jumpId, + ); + } Map toJson() { final Map data = {};