El Feed: la pantalla más compleja de TAMSIV
Cada aplicación tiene esa pantalla que concentra toda la complejidad. Para TAMSIV, es el Feed. Un flujo único que mezcla todo: actividad reciente, notificaciones, estadísticas de gamificación, insignias.
La RPC consolidada
Una única función PostgreSQL get_consolidated_feed agrega tareas, notas, eventos, gamificación y actividad de grupo. Un tipo unificado con item_type para el enrutamiento en el frontend.
Las primeras versiones: 3 segundos de carga. Después de la indexación y reescritura de los JOINs: 200ms.
El renderizado de React Native
Cada tipo de elemento tiene su componente: FeedTaskItem, FeedMemoItem, FeedGamificationItem, FeedGroupItem. Todo dentro de una FlatList de react-native-gesture-handler con getItemLayout.
El problema de las imágenes caducadas
Las URLs firmadas de Supabase caducan después de 60 minutos. Solución: almacenar la storage_path y actualizar las URLs a través de StorageService.refreshAttachmentUrlsBatch(). Llamada por lotes en lugar de N llamadas individuales.
La carga progresiva
Paginación infinita (20 elementos), pull-to-refresh, caché L1 en memoria + L2 en AsyncStorage. El feed se carga instantáneamente desde el caché y luego se actualiza en segundo plano. Esta pantalla me llevó tres semanas. También es de la que estoy más orgulloso.