diff --git a/frontend/workspace.js b/frontend/workspace.js index 3548c59..e3ac6b5 100644 --- a/frontend/workspace.js +++ b/frontend/workspace.js @@ -396,6 +396,21 @@ async function loadWorkspaceTree() { setDone(`Workspace выбран: ${workspace}`); } +function parseLegacyDevices(stdout) { + return (stdout || '') + .split('\n') + .filter(line => line.includes('device') && !line.includes('List')) + .map(line => { + const serial = line.split(/\s+/)[0]; + return { + serial, + title: serial, + subtitle: 'ADB device', + state: 'device' + }; + }); +} + async function loadDevices() { setStatus('Ищу Android устройства', 'running'); appendLog('Обновление списка Android устройств'); @@ -409,11 +424,9 @@ async function loadDevices() { return; } - const lines = (data.stdout || '').split('\n'); - - const devices = lines.filter(line => - line.includes('device') && !line.includes('List') - ); + const devices = Array.isArray(data.devices) && data.devices.length > 0 + ? data.devices + : parseLegacyDevices(data.stdout || ''); if (devices.length === 0) { container.innerHTML = 'Устройства не подключены'; @@ -422,23 +435,19 @@ async function loadDevices() { return; } - container.innerHTML = devices.map(device => { - const id = device.split(/\s+/)[0]; + container.innerHTML = devices.map(device => ` +
+ 📱 ${device.title || device.serial}
+ ${device.subtitle || device.serial} +
+ `).join(''); - return ` -
- 📱 ${id} -
- `; - }).join(''); - - select.innerHTML = devices.map(device => { - const id = device.split(/\s+/)[0]; - - return ``; - }).join(''); + select.innerHTML = devices.map(device => ` + + `).join(''); setStatus(`Android устройства найдены: ${devices.length}`, 'done'); + appendLog(`✅ Android устройства обновлены: ${devices.map(device => device.title || device.serial).join(', ')}`); } window.addEventListener('load', () => {