import React, { useState } from 'react'; import { Comment, Tooltip, Avatar, Card } from 'antd'; import { MethodParameters } from '../method-parameters'; import { MethodMetadata } from '../../rest'; import { ResponseValues } from '../response-values'; import { CustomParameters } from '../custom-parameters'; import { PathParameters } from '../path-parameters'; import { UseQueryResult } from 'react-query'; export const RestMethod = ({ author, authorPicture, description, name, method, parameters, useMethod, useSimpleMethod, }: MethodMetadata & { useMethod: any; useSimpleMethod?: (params: { pathParameters?: any; body?: any; settings?: any; }) => UseQueryResult; }) => { const [showParameters, setShowParameters] = useState(false); const [showCustomParameters, setShowCustomParameters] = useState(false); const [showPathParameters, setShowPathParameters] = useState(false); const [customParameters, setCustomParameters] = useState(() => { const customParameterObject = {}; // @ts-ignore parameters.forEach( (parameter) => (customParameterObject[parameter['name']] = parameter['default']) ); return customParameterObject; }); const [pathParameters, setPathParameters] = useState(() => { const customParameterObject = {}; const cleanPath = name.split('?'); const pathParametersList = cleanPath[0].split(':'); pathParametersList.shift(); pathParametersList.forEach((pathParameter) => { const pathParameterClean = pathParameter.split('?'); //@ts-ignore customParameterObject[pathParameterClean[0]] = ''; }); pathParametersList.forEach((pathParameter) => { const pathParameterClean = pathParameter.split('&'); //@ts-ignore customParameterObject[pathParameterClean[0]] = ''; }); if (cleanPath.length > 1) { const pathParameters = cleanPath[1].split('&'); pathParameters.forEach((pathParameter) => { const parameter = pathParameter.split(':')[1]; // @ts-ignore customParameterObject[parameter] = ''; }); } return customParameterObject; }); const { getData, data } = useMethod({ pathParameters, body: customParameters, }); const [runQuery, setRunQuery] = useState(false); useSimpleMethod?.({ settings: { enabled: runQuery }, }); // if (runQuery) { // console.log('SIMPLE DATA', masaQuery); // } const handleCall = async () => { const dt = await getData(); console.log(dt); }; const onValueChange = (key: string, value: string) => { const parameter = parameters.filter( (parameter) => (parameter['name'] = key) ); setCustomParameters({ ...customParameters, [key]: parameter[0].dataType === 'string' ? value : Number(value), }); }; const onValuePathChange = (key: string, value: string) => { setPathParameters({ ...pathParameters, [key]: value }); }; const actions = [ setShowParameters(!showParameters)} > Toggle parameters , Run , setShowCustomParameters(!showCustomParameters)} > Set custom parameters , setShowPathParameters(!showPathParameters)} > Set path parameters , useSimpleMethod && ( setRunQuery(!runQuery)} > Run query: {runQuery ? 'ON' : 'OFF'} ), ]; return ( {name}} avatar={ } content={

{description}

} datetime={ {method} } /> {/* @ts-ignore */} {showParameters && } {data && } {/* @ts-ignore */} {showCustomParameters && ( )} {showPathParameters && ( )}
); };