Skip to main content

Table State Management

9.1 Context Providers

Multiple table context providers follow similar patterns. Key examples:

TransactionsTableContextProvider

Location: src/components/tables/transactions/useTransactionsContext.tsx

Features:

  • Complex Supabase query with multiple joins:
    • circulator (inner join)
    • createdBy (inner join)
    • lastModifiedBy (inner join)
  • Conditional campaign filtering
  • Full filter/sort/pagination support
  • Caching with memoized dependencies

UsersContextProvider

Location: src/components/tables/users/useUsersContext.tsx

Features:

  • Excludes current user from results
  • Complex nested query:
    • campaigns:campaignPermissions:campaigns
    • invited_by relation
  • Permission-based filtering

SignaturesTableContextProvider

Location: src/components/tables/signatures/useSignaturesContext.tsx

Features:

  • Campaign-specific filtering
  • Multiple relation joins
  • Status-based filtering support

Common Pattern:

  1. State management (data, loading, error, count)
  2. Filter/sort/pagination state
  3. Memoized dependencies
  4. Cache with generateCacheKey
  5. Query building with filter application
  6. Data processing (if needed)
  7. Refetch function