Jump to content

Connect SuperML | Leeroopedia MCP: Equip your AI agents with best practices, code verification, and debugging knowledge. Powered by Leeroo — building Organizational Superintelligence. Contact us at founders@leeroo.com.

Implementation:Langgenius Dify Service Use Common

From Leeroopedia
Revision as of 11:28, 16 February 2026 by Admin (talk | contribs) (Auto-imported from implementations/Langgenius_Dify_Service_Use_Common.md)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Knowledge Sources
Domains Frontend, API_Service
Last Updated 2026-02-12 07:00 GMT

Overview

React Query hooks for common API endpoints providing cached, reactive data fetching for user profiles, workspaces, model providers, authentication status, and platform configuration.

Description

use-common.ts provides a comprehensive set of React Query (TanStack Query) hooks that wrap the common API service functions from common.ts and base.ts. It defines a centralized commonQueryKeys object that establishes a structured cache key namespace (prefixed with "common") for all query types, enabling consistent cache invalidation. The module exports useQuery hooks for read operations (e.g., useUserProfile, useCurrentWorkspace, useModelProviders, useMembers, useIsLogin) and useMutation hooks for write operations (e.g., useSendMail, useMailValidity, useMailRegister, useLogout, useOneMoreStep, useGenerateStructuredOutputRules). Several hooks accept enabled parameters for conditional fetching, and some use staleTime: 0 / gcTime: 0 to ensure fresh data on every access (e.g., useUserProfile, useIsLogin). The useUserProfile hook enriches the profile response with metadata extracted from response headers (x-version and x-env). The useIsLogin hook performs a silent profile fetch and returns a logged_in boolean, catching all errors to return false.

Usage

Use these hooks in React components that need to access common platform data. Import the specific hook you need and call it within a component. The hooks handle caching, deduplication, and automatic refetching through React Query. Use commonQueryKeys when you need to manually invalidate cached data.

Code Reference

Source Location

Signature

// Query key registry
export const commonQueryKeys = {
  fileUploadConfig: [NAME_SPACE, 'file-upload-config'] as const,
  userProfile: [NAME_SPACE, 'user-profile'] as const,
  currentWorkspace: [NAME_SPACE, 'current-workspace'] as const,
  workspaces: [NAME_SPACE, 'workspaces'] as const,
  members: [NAME_SPACE, 'members'] as const,
  modelProviders: [NAME_SPACE, 'model-providers'] as const,
  modelList: (type: ModelTypeEnum) => [NAME_SPACE, 'model-list', type] as const,
  // ... and more
}

// Query hooks
export const useFileUploadConfig = () => UseQueryResult<FileUploadConfigResponse>
export const useUserProfile = () => UseQueryResult<UserProfileWithMeta>
export const useLangGeniusVersion = (currentVersion?: string | null, enabled?: boolean) => UseQueryResult<LangGeniusVersionResponse>
export const useCurrentWorkspace = () => UseQueryResult<ICurrentWorkspace>
export const useWorkspaces = () => UseQueryResult<{ workspaces: IWorkspace[] }>
export const useMembers = () => UseQueryResult<MemberResponse>
export const useFilePreview = (fileID: string) => UseQueryResult<FilePreviewResponse>
export const useSchemaTypeDefinitions = () => UseQueryResult<SchemaTypeDefinition[]>
export const useIsLogin = () => UseQueryResult<{ logged_in: boolean }>
export const useModelProviders = () => UseQueryResult<{ data: ModelProvider[] }>
export const useModelListByType = (type: ModelTypeEnum, enabled?: boolean) => UseQueryResult<{ data: Model[] }>
export const useDefaultModelByType = (type: ModelTypeEnum, enabled?: boolean) => UseQueryResult
export const useSupportRetrievalMethods = () => UseQueryResult<{ retrieval_method: RETRIEVE_METHOD[] }>
export const useAccountIntegrates = () => UseQueryResult<{ data: AccountIntegrate[] | null }>
export const useDataSourceIntegrates = (options?: DataSourceIntegratesOptions) => UseQueryResult<{ data: DataSourceNotion[] }>
export const usePluginProviders = () => UseQueryResult<PluginProvider[] | null>
export const useNotionConnection = (enabled: boolean) => UseQueryResult<{ data: string }>
export const useApiBasedExtensions = () => UseQueryResult<ApiBasedExtension[]>
export const useInvitationCheck = (params?, enabled?) => UseQueryResult
export const useNotionBinding = (code?: string | null, enabled?: boolean) => UseQueryResult
export const useModelParameterRules = (provider?, model?, enabled?) => UseQueryResult<{ data: ModelParameterRule[] }>
export const useVerifyForgotPasswordToken = (token?: string | null) => UseQueryResult<ForgotPasswordValidity>

// Mutation hooks
export const useGenerateStructuredOutputRules = () => UseMutationResult
export const useSendMail = () => UseMutationResult
export const useMailValidity = () => UseMutationResult
export const useMailRegister = () => UseMutationResult
export const useLogout = () => UseMutationResult
export const useOneMoreStep = () => UseMutationResult

// Invalidation hooks
export const useInvalidDataSourceIntegrates = () => () => void

Import

import { useUserProfile, useCurrentWorkspace, useModelProviders } from '@/service/use-common'
import { useIsLogin, useMembers, useFileUploadConfig } from '@/service/use-common'
import { commonQueryKeys } from '@/service/use-common'

I/O Contract

Inputs

Name Type Required Description
type ModelTypeEnum Varies Model type enum for type-specific queries (useModelListByType, useDefaultModelByType)
enabled boolean No Controls whether the query is active; defaults to true for most hooks
fileID string Yes (useFilePreview) File identifier for preview fetching
provider string Varies Model provider identifier for parameter rules
model string Varies Model identifier for parameter rules
currentVersion string or null Varies Current app version for version check query
token string or null Varies Token for forgot password verification
params object Varies Invitation check parameters (workspace_id, email, token)

Outputs

Name Type Description
UseQueryResult UseQueryResult<T> React Query result containing data, isLoading, isError, refetch, and other query state
UseMutationResult UseMutationResult React Query mutation result containing mutate, mutateAsync, isLoading, and other mutation state
invalidate function () => void Cache invalidation function returned by useInvalidDataSourceIntegrates

Usage Examples

Fetch Current User Profile

import { useUserProfile } from '@/service/use-common'

function UserInfo() {
  const { data, isLoading } = useUserProfile()

  if (isLoading) return <div>Loading...</div>

  return (
    <div>
      <p>{data?.profile.name}</p>
      <p>Version: {data?.meta.currentVersion}</p>
    </div>
  )
}

Check Login Status

import { useIsLogin } from '@/service/use-common'

function AuthGuard({ children }) {
  const { data } = useIsLogin()

  if (!data?.logged_in) return <LoginPage />
  return children
}

List Model Providers

import { useModelProviders } from '@/service/use-common'

function ModelProviderList() {
  const { data } = useModelProviders()

  return (
    <ul>
      {data?.data.map(provider => (
        <li key={provider.provider}>{provider.provider}</li>
      ))}
    </ul>
  )
}

Related Pages

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment