feat(sync): media en paralelo + visibilidad proactiva de problemas

- pushMedia sube en lotes de 3 en paralelo (Promise.all por chunk) en vez
  de una a una; contadores del report seguros al ser el runtime monohilo.
- SyncStatusBar: fondo rojo cuando hay conflictos/errores (prioridad sobre
  el estado de conexión), para que el problema salte a la vista.
- ProjectDetail: el auto-sync silencioso ahora avisa una vez con Alert
  cuando un ciclo produce conflictos/errores, con acceso directo a la cola.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-07-14 12:00:29 +02:00
co-authored by Claude Sonnet 4.6
parent 5d1a4db42f
commit eee15819ac
3 changed files with 31 additions and 3 deletions
+15 -1
View File
@@ -45,8 +45,22 @@ export function ProjectDetailScreen({ route, navigation }: Props) {
}, [projectId, refreshCounts]);
// Auto-sync (silencioso) al recuperar red / volver a primer plano / por intervalo.
// Aunque es silencioso, si un ciclo produce conflictos o errores nuevos avisamos
// proactivamente una vez (cada conflicto/error solo se reporta en su ciclo).
useAutoSync(true, async () => {
await doSync();
const report = await doSync();
const problems = report.conflicts + report.errors;
if (problems > 0) {
Alert.alert(
'Sincronización con incidencias',
`${report.conflicts} conflicto(s) y ${report.errors} error(es) al sincronizar. ` +
'Revisa la cola para resolverlos.',
[
{ text: 'Ahora no', style: 'cancel' },
{ text: 'Revisar', onPress: () => navigation.navigate('Outbox') },
],
);
}
});
// Sync manual (con resumen).