fix: 修复连接状态判断逻辑

This commit is contained in:
xiaji
2026-04-14 07:44:10 +08:00
parent 43e5746892
commit 439d62fcc3

View File

@@ -94,22 +94,29 @@ pub struct AppState {
impl AppState { impl AppState {
pub fn new(config: &Config) -> Self { pub fn new(config: &Config) -> Self {
let client = if !config.host.is_empty() && !config.token_id.is_empty() && !config.token_secret.is_empty() { let has_config = !config.host.is_empty() && !config.token_id.is_empty() && !config.token_secret.is_empty();
let client = if has_config {
let c = ProxmoxClient::new(&config.host, config.port, &config.token_id, &config.token_secret); let c = ProxmoxClient::new(&config.host, config.port, &config.token_id, &config.token_secret);
Arc::new(Mutex::new(Some(c))) Arc::new(Mutex::new(Some(c)))
} else { } else {
Arc::new(Mutex::new(None)) Arc::new(Mutex::new(None))
}; };
let is_connected = !config.host.is_empty() && !config.token_id.is_empty() && !config.token_secret.is_empty(); let mut log = vec!["程序启动".to_string()];
if has_config {
log.push("已加载配置,请点击刷新节点测试连接".to_string());
} else {
log.push("请在设置中配置连接信息".to_string());
}
Self { Self {
client, client,
vm_id: config.vm_id, vm_id: config.vm_id,
node: config.node.clone(), node: config.node.clone(),
vm_status: "未知".to_string(), vm_status: "未知".to_string(),
log_buffer: vec!["程序启动".to_string()], log_buffer: log,
is_connected, is_connected: false,
} }
} }
@@ -254,15 +261,16 @@ impl eframe::App for App {
if let Some(c) = client.as_ref() { if let Some(c) = client.as_ref() {
match c.get_nodes().await { match c.get_nodes().await {
Ok(nodes) => { Ok(nodes) => {
*nodes_clone.write().unwrap() = nodes.clone(); let mut state = state_clone.write().unwrap();
state.is_connected = true;
if !nodes.is_empty() { if !nodes.is_empty() {
state_clone.write().unwrap().add_log(&format!("找到节点: {:?}", nodes)); state.add_log(&format!("✓ 连接成功,找到节点: {:?}", nodes));
} else { } else {
state_clone.write().unwrap().add_log("未找到节点"); state.add_log("未找到节点");
} }
} }
Err(e) => { Err(e) => {
state_clone.write().unwrap().add_log(&format!("获取节点失败: {}", e)); state_clone.write().unwrap().add_log(&format!("✗ 连接失败: {}", e));
} }
} }
} else { } else {