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 && (
)}
);
};