fix(recordings): open last file on android
This commit is contained in:
@@ -49,17 +49,20 @@ class EstadoAlarmas extends ChangeNotifier {
|
||||
}
|
||||
|
||||
Future<void> inicializar() async {
|
||||
debugPrint('[PluriWave][alarmas] inicializar');
|
||||
_cargando = true;
|
||||
_error = null;
|
||||
notifyListeners();
|
||||
try {
|
||||
final config = await servicio.cargar();
|
||||
_aplicar(config);
|
||||
debugPrint('[PluriWave][alarmas] cargadas=${_alarmas.length} vacaciones=${_vacaciones.length} excepciones=${_excepciones.length}');
|
||||
await _sincronizarTodas();
|
||||
await cargarDiagnostico();
|
||||
_activarRefresco();
|
||||
} catch (e) {
|
||||
_error = 'No se pudieron cargar las alarmas: $e';
|
||||
debugPrint('[PluriWave][alarmas] inicializar ERROR $e');
|
||||
} finally {
|
||||
_cargando = false;
|
||||
notifyListeners();
|
||||
@@ -67,10 +70,13 @@ class EstadoAlarmas extends ChangeNotifier {
|
||||
}
|
||||
|
||||
Future<void> guardarAlarma(AlarmaMusical alarma) async {
|
||||
debugPrint('[PluriWave][alarmas] guardar id=${alarma.id} activa=${alarma.activa} hora=${alarma.hora}:${alarma.minuto} tipo=${alarma.tipoProgramacion.name}');
|
||||
final config = await servicio.guardarAlarma(alarma);
|
||||
_aplicar(config);
|
||||
try {
|
||||
await android.programar(_alarmas.firstWhere((a) => a.id == alarma.id));
|
||||
final guardada = _alarmas.firstWhere((a) => a.id == alarma.id);
|
||||
debugPrint('[PluriWave][alarmas] guardada id=${guardada.id} proxima=${guardada.proximaEjecucion?.toIso8601String()}');
|
||||
await android.programar(guardada);
|
||||
} catch (e) {
|
||||
_error =
|
||||
'Alarma guardada, pero Android no pudo programarla todavía: $e';
|
||||
@@ -79,6 +85,7 @@ class EstadoAlarmas extends ChangeNotifier {
|
||||
}
|
||||
|
||||
Future<void> refrescarProgramacion() async {
|
||||
debugPrint('[PluriWave][alarmas] refrescar programacion');
|
||||
final config = await servicio.recalcularTodas();
|
||||
_aplicar(config);
|
||||
await _sincronizarTodas();
|
||||
@@ -86,6 +93,7 @@ class EstadoAlarmas extends ChangeNotifier {
|
||||
}
|
||||
|
||||
Future<void> eliminarAlarma(String id) async {
|
||||
debugPrint('[PluriWave][alarmas] eliminar id=$id');
|
||||
final config = await servicio.eliminarAlarma(id);
|
||||
_aplicar(config);
|
||||
await android.cancelar(id);
|
||||
@@ -97,6 +105,7 @@ class EstadoAlarmas extends ChangeNotifier {
|
||||
}
|
||||
|
||||
Future<void> saltarProxima(String alarmaId) async {
|
||||
debugPrint('[PluriWave][alarmas] saltar proxima id=$alarmaId');
|
||||
final config = await servicio.saltarProxima(alarmaId);
|
||||
_aplicar(config);
|
||||
AlarmaMusical? alarma;
|
||||
@@ -113,6 +122,7 @@ class EstadoAlarmas extends ChangeNotifier {
|
||||
}
|
||||
|
||||
Future<void> guardarVacaciones(List<RangoVacaciones> vacaciones) async {
|
||||
debugPrint('[PluriWave][alarmas] guardar vacaciones count=${vacaciones.length}');
|
||||
final config = await servicio.guardarVacaciones(vacaciones);
|
||||
_aplicar(config);
|
||||
await _sincronizarTodas();
|
||||
@@ -121,11 +131,13 @@ class EstadoAlarmas extends ChangeNotifier {
|
||||
|
||||
Future<void> posponerAlarma(AlarmaMusical alarma, int minutos) async {
|
||||
final proxima = DateTime.now().add(Duration(minutes: minutos));
|
||||
debugPrint('[PluriWave][alarmas] posponer id=${alarma.id} minutos=$minutos proxima=${proxima.toIso8601String()}');
|
||||
await android.ocultarNotificacionAlarma(alarma.id);
|
||||
await android.programar(alarma.copyWith(proximaEjecucion: proxima));
|
||||
}
|
||||
|
||||
Future<void> finalizarEjecucion(String alarmaId) async {
|
||||
debugPrint('[PluriWave][alarmas] finalizar ejecucion id=$alarmaId');
|
||||
await android.ocultarNotificacionAlarma(alarmaId);
|
||||
await refrescarProgramacion();
|
||||
}
|
||||
@@ -150,13 +162,15 @@ class EstadoAlarmas extends ChangeNotifier {
|
||||
Future<void> cargarDiagnostico() async {
|
||||
try {
|
||||
_diagnostico = await android.diagnostico();
|
||||
} catch (_) {
|
||||
} catch (e) {
|
||||
debugPrint('[PluriWave][alarmas] diagnostico ERROR $e');
|
||||
_diagnostico = null;
|
||||
}
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
Future<void> _sincronizarTodas() async {
|
||||
debugPrint('[PluriWave][alarmas] sincronizar todas count=${_alarmas.length}');
|
||||
for (final alarma in _alarmas) {
|
||||
await android.programar(alarma);
|
||||
}
|
||||
@@ -188,6 +202,7 @@ class EstadoAlarmas extends ChangeNotifier {
|
||||
if (proxima.isAfter(ahora)) continue;
|
||||
final key = '${alarma.id}:${proxima.millisecondsSinceEpoch}';
|
||||
if (_ejecucionesEmitidas.add(key)) {
|
||||
debugPrint('[PluriWave][alarmas] vencida local id=${alarma.id} proxima=${proxima.toIso8601String()}');
|
||||
_alarmasVencidasController.add(alarma);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -464,7 +464,7 @@ class EstadoRadio extends ChangeNotifier {
|
||||
);
|
||||
}
|
||||
_resultadosBusqueda = nuevaLista;
|
||||
// _buscarPaginaFiltrada actualiza offset/hayMas usando p?ginas crudas.
|
||||
// _buscarPaginaFiltrada actualiza offset/hayMas usando páginas crudas.
|
||||
_hayMasBusqueda = _hayMasBusqueda && pagina.isNotEmpty;
|
||||
} catch (_) {
|
||||
_errorController.add('No se pudieron cargar mas emisoras.');
|
||||
@@ -644,7 +644,21 @@ class EstadoRadio extends ChangeNotifier {
|
||||
|
||||
Future<bool> abrirUltimaGrabacion() async {
|
||||
final archivo = ultimaGrabacion;
|
||||
if (archivo == null || !await archivo.exists()) return false;
|
||||
if (archivo == null || !await archivo.exists()) {
|
||||
debugPrint('[PluriWave][recordings] last recording missing');
|
||||
return false;
|
||||
}
|
||||
debugPrint('[PluriWave][recordings] opening last file: ${archivo.path}');
|
||||
if (!kIsWeb && Platform.isAndroid) {
|
||||
final abierto = await _fileActionsChannel.invokeMethod<bool>(
|
||||
'openFile',
|
||||
{
|
||||
'path': archivo.path,
|
||||
'mimeType': 'audio/*',
|
||||
},
|
||||
);
|
||||
return abierto ?? false;
|
||||
}
|
||||
return launchUrl(
|
||||
Uri.file(archivo.path),
|
||||
mode: LaunchMode.externalApplication,
|
||||
|
||||
Reference in New Issue
Block a user