From 704a93713f00534cfd1267f4d360fb2ef337fb09 Mon Sep 17 00:00:00 2001 From: lollipopkit Date: Mon, 1 Apr 2024 19:41:27 -0600 Subject: [PATCH] opt.: ignore unknown pve res type --- lib/data/model/server/pve.dart | 28 +++++++++++----------------- lib/view/page/server/detail.dart | 2 +- 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/lib/data/model/server/pve.dart b/lib/data/model/server/pve.dart index db48bdb0..77f6430a 100644 --- a/lib/data/model/server/pve.dart +++ b/lib/data/model/server/pve.dart @@ -11,22 +11,14 @@ enum PveResType { sdn, ; - static PveResType fromString(String type) { - switch (type) { - case 'lxc': - return PveResType.lxc; - case 'qemu': - return PveResType.qemu; - case 'node': - return PveResType.node; - case 'storage': - return PveResType.storage; - case 'sdn': - return PveResType.sdn; - default: - throw Exception('Unknown PveResType: $type'); - } - } + static PveResType? fromString(String type) => switch (type.toLowerCase()) { + 'lxc' => PveResType.lxc, + 'qemu' => PveResType.qemu, + 'node' => PveResType.node, + 'storage' => PveResType.storage, + 'sdn' => PveResType.sdn, + _ => null, + }; String get toStr => switch (this) { PveResType.node => l10n.node, @@ -42,8 +34,9 @@ sealed class PveResIface { String get status; PveResType get type; - static PveResIface fromJson(Map json) { + static PveResIface? fromJson(Map json) { final type = PveResType.fromString(json['type']); + if (type == null) return null; switch (type) { case PveResType.lxc: return PveLxc.fromJson(json); @@ -420,6 +413,7 @@ final class PveRes { final List storages = []; final List sdns = []; for (final item in items) { + if (item == null) continue; switch (item.type) { case PveResType.lxc: lxcs.add(item as PveLxc); diff --git a/lib/view/page/server/detail.dart b/lib/view/page/server/detail.dart index 1939d2b4..7afa2fe0 100644 --- a/lib/view/page/server/detail.dart +++ b/lib/view/page/server/detail.dart @@ -4,8 +4,8 @@ import 'package:provider/provider.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/status_cmd_type.dart'; import 'package:toolbox/data/model/app/server_detail_card.dart'; +import 'package:toolbox/data/model/app/shell_func.dart'; import 'package:toolbox/data/model/server/battery.dart'; import 'package:toolbox/data/model/server/cpu.dart'; import 'package:toolbox/data/model/server/disk.dart';