fix(updates): предотвратить повторное открытие и зависание модального окна обновления

- Исключить повторное открытие окна прогресса для уже завершенных задач (handledComponentJobs)

- Актуализировать состояние фоновых задач в get_ui_state и нормализовать таймаут stale PID

- Исправить определение WAN интерфейса в event_controller во избежание ложного перезапуска (#31)

- Улучшить сверку версий при самообновлении
This commit is contained in:
Dushnilin
2026-08-15 09:23:07 +03:00
parent d6c4f81daf
commit 1e406c3e06
11 changed files with 90 additions and 86 deletions
@@ -732,13 +732,31 @@ function controller(bus, opts) {
}
if (setting("recovery_bypass", "0") == "1") return;
let proto = uci_core.get("network", "wan", "proto") || "pppoe";
let device = trim(uci_core.get("network", "wan", "device") || "eth0");
let proto = uci_core.get("network", "wan", "proto") || "dhcp";
let device = trim(setting("output_network_interface", "") ||
uci_core.get("network", "wan", "device") ||
uci_core.get("network", "wan", "ifname") || "");
if (device == "") {
let def_route = command_capture("ip -4 route show default 2>/dev/null").output;
let m_dev = match(def_route, /dev\s+([^\s]+)/);
if (m_dev) device = m_dev[1];
}
if (device == "") device = "eth0";
let iface = (proto == "pppoe") ? "pppoe-wan" : device;
let addr_out = command_capture("ip addr show " + shell_quote(iface) + " 2>/dev/null").output;
let no_address = index(addr_out, "inet ") < 0;
if (no_address) {
let ubus_data = command_output_from_args([ "ubus", "-S", "call", "network.interface.wan", "status" ]);
try {
let ubus_obj = json(ubus_data);
if (type(ubus_obj) == "object" && ubus_obj.up && length(common.array_or_empty(ubus_obj["ipv4-address"])) > 0) {
no_address = false;
}
} catch (e) {}
}
let route_out = command_capture("ip route 2>/dev/null").output;
let no_gateway = index(route_out, "default") < 0;