import { useParams } from 'common' import { DocSection } from './DocSection' import CodeSnippet from '@/components/interfaces/Docs/CodeSnippet' import Description from '@/components/interfaces/Docs/Description' import Param from '@/components/interfaces/Docs/Param' import Snippets from '@/components/interfaces/Docs/Snippets' import { useProjectSettingsV2Query } from '@/data/config/project-settings-v2-query' import { ProjectJsonSchemaPaths } from '@/data/docs/project-json-schema-query' /** * TODO: need to support rpc with the same name and different params type */ interface RpcContentProps { rpcId: string rpcs: { [key: string]: any } paths?: ProjectJsonSchemaPaths selectedLang: 'bash' | 'js' showApiKey: string refreshDocs: () => void } export const RpcContent = ({ rpcId, rpcs, paths, selectedLang, showApiKey, refreshDocs, }: RpcContentProps) => { const { ref: projectRef } = useParams() const { data: settings } = useProjectSettingsV2Query({ projectRef }) const protocol = settings?.app_config?.protocol ?? 'https' const hostEndpoint = settings?.app_config?.endpoint ?? '' const endpoint = `${protocol}://${hostEndpoint ?? ''}` const meta = rpcs[rpcId] const pathKey = `/rpc/${rpcId}` const path = paths && pathKey in paths ? paths[pathKey] : undefined const keyToShow = !!showApiKey ? showApiKey : 'BRIVEN_KEY' const { parameters, summary } = path?.post || {} const rpcParamsObject = parameters && parameters[0] && parameters[0].schema && (parameters[0].schema as any).properties ? (parameters[0].schema as any).properties : {} const rpcParams = Object.entries(rpcParamsObject) .map(([k, v]: any) => ({ name: k, ...v })) .filter((x) => !!x.name) if (!path) return null return (