Home / Function/ useSyncFiltersToUrl() — supabase Function Reference

useSyncFiltersToUrl() — supabase Function Reference

Architecture documentation for the useSyncFiltersToUrl() function in useFilterLifeCycle.ts from the supabase codebase.

Entity Profile

Dependency Diagram

graph TD
  b1e90d00_5319_8a17_7c2e_36f2fb1e164c["useSyncFiltersToUrl()"]
  23af4152_9acc_7969_59e9_33633b3885f0["HeaderNew()"]
  23af4152_9acc_7969_59e9_33633b3885f0 -->|calls| b1e90d00_5319_8a17_7c2e_36f2fb1e164c
  5dc0ec99_339c_ec4f_c276_4d8864518b58["filtersToUrlParams()"]
  b1e90d00_5319_8a17_7c2e_36f2fb1e164c -->|calls| 5dc0ec99_339c_ec4f_c276_4d8864518b58
  style b1e90d00_5319_8a17_7c2e_36f2fb1e164c fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

apps/studio/components/grid/hooks/useFilterLifeCycle.ts lines 34–80

export function useSyncFiltersToUrl() {
  const snap = useTableEditorTableStateSnapshot()
  const { setParams } = useTableEditorFiltersSort()
  const timeoutRef = useRef<NodeJS.Timeout | null>(null)
  const previousFiltersRef = useRef<string>('')

  useEffect(() => {
    // Serialize filters for comparison
    const currentFiltersStr = JSON.stringify(snap.filters)

    // Only proceed if filters have actually changed
    if (currentFiltersStr === previousFiltersRef.current) {
      return
    }

    previousFiltersRef.current = currentFiltersStr

    // Clear any existing timeout
    if (timeoutRef.current) {
      clearTimeout(timeoutRef.current)
    }

    // Debounce URL updates by 500ms
    timeoutRef.current = setTimeout(() => {
      const completeFilters = snap.filters.filter((filter) => {
        const value = filter.value
        return value !== '' && value !== null && value !== undefined
      })

      // Convert filters to URL format
      const urlFilters = filtersToUrlParams(completeFilters)

      // Update URL params
      setParams((prev) => ({
        ...prev,
        filter: urlFilters,
      }))
    }, 500)

    // Cleanup on unmount or filter change
    return () => {
      if (timeoutRef.current) {
        clearTimeout(timeoutRef.current)
      }
    }
  }, [snap.filters, setParams])
}

Subdomains

Called By

Frequently Asked Questions

What does useSyncFiltersToUrl() do?
useSyncFiltersToUrl() is a function in the supabase codebase.
What does useSyncFiltersToUrl() call?
useSyncFiltersToUrl() calls 1 function(s): filtersToUrlParams.
What calls useSyncFiltersToUrl()?
useSyncFiltersToUrl() is called by 1 function(s): HeaderNew.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free