import { useParams } from 'common' import { useEffect } from 'react' import { Badge } from 'ui' import { DOCS_RESOURCE_CONTENT } from '../ProjectAPIDocs.constants' import ResourceContent from '../ResourceContent' import type { ContentProps } from './Content.types' import Table from '@/components/to-be-cleaned/Table' import { useProjectJsonSchemaQuery } from '@/data/docs/project-json-schema-query' import { useOpenAPISpecQuery } from '@/data/open-api/api-spec-query' import { useAppStateSnapshot } from '@/state/app-state' export const RPC = ({ language }: ContentProps) => { const { ref } = useParams() const snap = useAppStateSnapshot() const { data: jsonSchema, refetch: refetchJsonSchema } = useProjectJsonSchemaQuery({ projectRef: ref, }) const { data, refetch: refetchOpenAPISpec } = useOpenAPISpecQuery({ projectRef: ref }) const functions = data?.functions ?? [] const rpcName = snap.activeDocsSection[1] const rpc = functions.find((fn) => fn.name === rpcName) const { post: { parameters: postParameters }, } = rpc ?? {} const rpcJsonSchema = jsonSchema?.paths[rpc?.path] const summary = rpcJsonSchema?.post?.summary const rpcParamsObject = postParameters && postParameters[0] && postParameters[0].schema && postParameters[0].schema.properties ? postParameters[0].schema.properties : {} const parameters: { name: string; format: string; type: string; required: boolean }[] = Object.entries(rpcParamsObject) .map(([k, v]: any) => ({ name: k, ...v, required: postParameters[0].schema.required.includes(k), })) .filter((x) => !!x.name) useEffect(() => { if (rpcName !== undefined) { refetchJsonSchema() refetchOpenAPISpec() } }, [rpcName]) if (rpc === undefined) return null return (
{summary ?? 'No description available'}
Function arguments