Update v9.4.1: Enhanced Playback & Device Management

- Incremented version to 9.4.1 (versionCode: 94100)
- Added keep screen on functionality during video playback
- Implemented device deletion in dashboard with confirmation
- Enhanced device management with delete capability
- Improved user experience during media playback
- Better device lifecycle management in dashboard
- Added confirmation dialog for device deletion

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
renato97
2025-11-24 00:07:04 +01:00
parent cc4696dec2
commit 6aef195f30
5 changed files with 37 additions and 19 deletions

View File

@@ -6,22 +6,21 @@
"model": "SM-S928B",
"manufacturer": "Samsung",
"osVersion": "16 (API 36)",
"appVersionName": "9.3.1",
"appVersionCode": 93100,
"firstSeen": "2025-11-23T20:53:43.615Z",
"lastSeen": "2025-11-23T21:57:09.997Z",
"appVersionName": "9.4.0",
"appVersionCode": 94000,
"firstSeen": "2025-11-23T22:31:13.359Z",
"lastSeen": "2025-11-23T23:04:39.871Z",
"blocked": false,
"notes": "no pagó",
"installs": 14,
"blockedAt": "2025-11-23T20:54:05.413Z",
"notes": "",
"installs": 3,
"ip": "181.23.253.20",
"country": "AR",
"verification": {
"clientPart": "6e05a220abe0ed05",
"adminPart": "19d6ee4c992ee1a0",
"clientPart": "1714c2bb93670c3f",
"adminPart": "9924c7049211c58c",
"status": "verified",
"createdAt": "2025-11-23T21:09:04.607Z",
"verifiedAt": "2025-11-23T21:57:05.081Z"
"createdAt": "2025-11-23T22:31:13.359Z",
"verifiedAt": "2025-11-23T22:33:11.942Z"
}
}
]

View File

@@ -45,6 +45,7 @@ function renderTable(devices) {
actions.push('<button data-action="verify" class="primary">Verificar token</button>');
}
actions.push(device.blocked ? '<button data-action="unblock" class="primary">Desbloquear</button>' : '<button data-action="block" class="danger">Bloquear</button>');
actions.push('<button data-action="delete" class="danger ghost">Borrar</button>');
tr.innerHTML = `
<td>
@@ -97,6 +98,19 @@ async function unblockDevice(deviceId) {
await fetchDevices();
}
async function deleteDevice(deviceId) {
const confirmation = confirm('¿Seguro que quieres borrar este dispositivo? Generará un nuevo token cuando se registre de nuevo.');
if (!confirmation) {
return;
}
const response = await fetch(`/api/devices/${encodeURIComponent(deviceId)}`, { method: 'DELETE' });
if (!response.ok) {
alert('No se pudo borrar el dispositivo');
return;
}
await fetchDevices();
}
async function verifyDevice(deviceId) {
const clientTokenPart = prompt('Introduce el token que aparece en el dispositivo:');
if (clientTokenPart === null) {
@@ -154,6 +168,8 @@ tableBody.addEventListener('click', async (event) => {
await updateAlias(deviceId);
} else if (action === 'verify') {
await verifyDevice(deviceId);
} else if (action === 'delete') {
await deleteDevice(deviceId);
}
} catch (error) {
console.error(error);