O Feed: a tela mais complexa do TAMSIV
Todo aplicativo tem aquela tela que concentra toda a complexidade. Para o TAMSIV, é o Feed. Um fluxo único que mistura tudo: atividade recente, notificações, estatísticas de gamificação, emblemas.
A RPC consolidada
Uma única função PostgreSQL get_consolidated_feed agrega tarefas, memorandos, eventos, gamificação e atividade de grupo. Um tipo unificado com item_type para roteamento no frontend.
As primeiras versões: 3 segundos de carregamento. Após indexação e reescrita dos JOINs: 200ms.
A renderização React Native
Cada tipo de item tem seu componente: FeedTaskItem, FeedMemoItem, FeedGamificationItem, FeedGroupItem. Tudo em uma FlatList de react-native-gesture-handler com getItemLayout.
O problema das imagens expiradas
As URLs assinadas do Supabase expiram após 60 minutos. Solução: armazenar o storage_path e atualizar as URLs via StorageService.refreshAttachmentUrlsBatch(). Chamada em lote em vez de N chamadas individuais.
O carregamento progressivo
Paginação infinita (20 itens), pull-to-refresh, cache L1 de memória + L2 AsyncStorage. O feed carrega instantaneamente do cache e depois é atualizado em segundo plano. Esta tela me levou três semanas. É também a que mais me orgulho.