Files
battleship/data/setup.js
T

24 lines
1.8 KiB
JavaScript

(() => {
const networks = document.querySelector('#networks');
const status = document.querySelector('#scan-status');
const ssid = document.querySelector('#ssid');
const refresh = document.querySelector('#refresh');
const form = document.querySelector('#network-form');
let timer = 0;
const scan = async () => {
clearTimeout(timer); refresh.disabled = true; status.textContent = 'Ищем сети…';
try {
const response = await fetch('/setup/scan', { cache: 'no-store' });
const text = await response.text();
if (!response.ok) throw new Error('scan unavailable');
if (text.trim() === 'scanning') { timer = setTimeout(scan, 700); return; }
const names = [...new Set(text.split('\n').map(value => value.trim()).filter(Boolean))];
networks.replaceChildren(...names.map(name => { const button = document.createElement('button'); button.className = 'network'; button.type = 'button'; button.textContent = name; button.addEventListener('click', () => { ssid.value = name; ssid.focus(); }); return button; }));
status.textContent = names.length ? 'Выберите сеть или введите её вручную.' : 'Сети не найдены. Введите скрытую сеть вручную.';
} catch (_) { status.textContent = 'Не удалось выполнить поиск. Введите сеть вручную.'; }
finally { if (!timer) refresh.disabled = false; }
};
refresh.addEventListener('click', scan);
form.addEventListener('submit', event => { event.preventDefault(); status.textContent = 'Сеть выбрана. Проверка и сохранение будут доступны на следующем шаге настройки.'; document.querySelector('#password').value = ''; });
})();