dify/web/hooks/use-global-public.ts
yyh 806ece9a67
refactor!: replace Zustand global store with TanStack Query for systemFeatures
Follow-up to SSR prefetch migration (2833965). Eliminates the Zustand
middleman that was syncing TanStack Query data into a separate store.

- Remove useGlobalPublicStore Zustand store entirely
- Create hooks/use-global-public.ts with useSystemFeatures,
  useSystemFeaturesQuery, useIsSystemFeaturesPending, useSetupStatusQuery
- Migrate all 93 consumers to import from @/hooks/use-global-public
- Simplify global-public-context.tsx to a thin provider component
- Update 18 test files to mock the new hook interface
- Fix SetupStatusResponse.setup_at type from Date to string (JSON)
- Fix setup-status.spec.ts mock target to match consoleClient

BREAKING CHANGE: useGlobalPublicStore is removed. Use useSystemFeatures()
from @/hooks/use-global-public instead.
2026-02-01 19:06:08 +08:00

31 lines
913 B
TypeScript

import type { SystemFeatures } from '@/types/feature'
import { useQuery } from '@tanstack/react-query'
import { consoleClient, consoleQuery } from '@/service/client'
import { defaultSystemFeatures } from '@/types/feature'
import { fetchSetupStatusWithCache } from '@/utils/setup-status'
export function useSystemFeaturesQuery() {
return useQuery({
queryKey: consoleQuery.systemFeatures.queryKey(),
queryFn: () => consoleClient.systemFeatures(),
})
}
export function useSystemFeatures(): SystemFeatures {
const { data } = useSystemFeaturesQuery()
return { ...defaultSystemFeatures, ...data }
}
export function useIsSystemFeaturesPending() {
const { isPending } = useSystemFeaturesQuery()
return isPending
}
export function useSetupStatusQuery() {
return useQuery({
queryKey: consoleQuery.setupStatus.queryKey(),
queryFn: fetchSetupStatusWithCache,
staleTime: Infinity,
})
}