(lines = [])
| 6494 | state.dhcp = { verdict: 'unknown', reasons: [] }; |
| 6495 | renderNetIntegrity(state); |
| 6496 | }).finally(() => { |
| 6497 | if (btn) { btn.disabled = false; btn.textContent = btn.dataset.orig || 'Check now'; } |
| 6498 | }); |
| 6499 | return; |
| 6500 | } |
| 6501 | renderNetIntegrity(await fetchAPI('/api/net/integrity')); |
| 6502 | } catch (e) { /* offline — leave chips as-is */ |
| 6503 | if (btn) { btn.disabled = false; btn.textContent = btn.dataset.orig || 'Check now'; } |
| 6504 | } |
| 6505 | } |
| 6506 | function _netintFillIfaces() { |
| 6507 | const sel = document.getElementById('netint-iface'); |
| 6508 | if (!sel || sel.dataset.filled === '1') return Promise.resolve(); |
| 6509 | return fetchAPI('/api/net/interfaces').then(x => { |
| 6510 | (x.interfaces || []).forEach(i => { |
| 6511 | const o = document.createElement('option'); |
| 6512 | o.value = i.name; |
| 6513 | const tag = i.type === 'wifi' ? ' (WiFi)' : i.type === 'ethernet' ? ' (LAN)' : (i.type ? ' (' + i.type + ')' : ''); |
| 6514 | o.textContent = i.name + tag; |
| 6515 | sel.appendChild(o); |
| 6516 | }); |
| 6517 | sel.dataset.filled = '1'; |
| 6518 | }).catch(() => {}); |
| 6519 | } |
| 6520 | async function syncNetIntegrityFromServer() { |
| 6521 | const cb = document.getElementById('netint-enabled'); |
| 6522 | const ext = document.getElementById('netint-extended'); |
| 6523 | const batch = document.getElementById('netint-batch'); |
| 6524 | const ifaceSel = document.getElementById('netint-iface'); |
no test coverage detected