Blog
Feature
5 de janeiro de 20267 min

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.