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:
@@ -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).
|
||||
|
||||
Reference in New Issue
Block a user