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:campaignsinvited_byrelation
- Permission-based filtering
SignaturesTableContextProvider
Location: src/components/tables/signatures/useSignaturesContext.tsx
Features:
- Campaign-specific filtering
- Multiple relation joins
- Status-based filtering support
Common Pattern:
- State management (data, loading, error, count)
- Filter/sort/pagination state
- Memoized dependencies
- Cache with
generateCacheKey - Query building with filter application
- Data processing (if needed)
- Refetch function