fix(eq): seed device ID at startup and add device management UI

Fix multi-device EQ auto-switching by calling obtenerDispositivoActual()
during cargarPersistido() to seed the initial device ID. Add device
management modal with rename support, EQ preset editing, and connection
status indicator. Translate device UI keys to all 13 locales.
This commit is contained in:
2026-06-28 11:55:15 +02:00
parent 71978de68f
commit 58922de6fc
34 changed files with 1461 additions and 51 deletions
@@ -169,4 +169,64 @@ void main() {
);
});
});
// ---------------------------------------------------------------------------
// Phase 1 (eq-device-autoswitch-ux): nombresDispositivos persistence
// ---------------------------------------------------------------------------
group('ServicioEcualizador — nombresDispositivos (eq-device-autoswitch-ux)', () {
// 1.1 RED — cargarNombresDispositivos returns empty map when SP key absent
test('1.1 cargar returns empty nombresDispositivos when SP key absent', () async {
final prefs = await SharedPreferences.getInstance();
final servicio = ServicioEcualizador(prefs: prefs);
final config = await servicio.cargar();
expect(config.nombresDispositivos, isEmpty);
});
// 1.2 RED — guardarNombresDispositivos writes to eq_nombres_dispositivos_v1 SP key
test('1.2 guardarNombresDispositivos persists names and cargar restores them', () async {
final prefs = await SharedPreferences.getInstance();
final servicio = ServicioEcualizador(prefs: prefs);
await servicio.guardarNombresDispositivos({'bt_a2dp:AA:BB': 'Living Room BT'});
final config = await servicio.cargar();
expect(config.nombresDispositivos['bt_a2dp:AA:BB'], equals('Living Room BT'));
});
// 1.3 RED — round-trip: save → load returns same map
test('1.3 round-trip save → cargar preserves all entries', () async {
final prefs = await SharedPreferences.getInstance();
final servicio = ServicioEcualizador(prefs: prefs);
const nombres = {
'bt_a2dp:AA:BB': 'Living Room BT',
'wired_headset': 'Office Headset',
'builtin_speaker': 'Built-in',
};
await servicio.guardarNombresDispositivos(nombres);
final config = await servicio.cargar();
expect(config.nombresDispositivos, equals(nombres));
});
// guardarConfiguracion also persists nombresDispositivos
test('1.7 guardarConfiguracion persists nombresDispositivos round-trip', () async {
final prefs = await SharedPreferences.getInstance();
final servicio = ServicioEcualizador(prefs: prefs);
final config = ConfiguracionEcualizador(
principal: PresetEcualizador.flat,
porEmisora: {},
eqMultiDeviceEnabled: true,
presetsDispositivo: {},
presetsMatriz: {},
nombresDispositivos: {'bt_a2dp:AA:BB': 'My Speaker'},
);
await servicio.guardarConfiguracion(config);
final restored = await servicio.cargar();
expect(restored.nombresDispositivos['bt_a2dp:AA:BB'], equals('My Speaker'));
});
});
}