Esteves Enzo
persistant store for authorization
76ea2b9
raw
history blame
1.7 kB
"use client";
import { useState } from "react";
import { ApiRoute } from "@/utils/type";
import { Endpoint } from "./endpoint";
import { Request } from "./request";
import { Response } from "./response";
import { useRequest } from "./hooks/useRequest";
import { useMount, useUpdateEffect } from "react-use";
export const EditorMain = ({ endpoint }: { endpoint: ApiRoute }) => {
const [formattedEndpoint, setFormattedEndpoint] = useState<string>(
endpoint.path
);
const [formattedParameters, setFormattedParameters] = useState(
endpoint?.parameters ? { ...endpoint.parameters } : undefined
);
const { loading, submit, data } = useRequest(
formattedEndpoint,
formattedParameters
);
useMount(() => {
if (
endpoint?.path &&
endpoint?.method === "GET" &&
!endpoint?.path?.includes("{") &&
!endpoint?.path?.includes("}")
) {
submit();
}
});
return (
<div className="flex-1 bg-slate-900/50 h-[calc(100%-56px)]">
<div className="h-full grid grid-cols-2">
<Request
parameters={formattedParameters}
onChange={(k: string, v: string | boolean) => {
setFormattedParameters({
...formattedParameters,
[k]: v,
});
}}
>
<Endpoint endpoint={endpoint} onChange={setFormattedEndpoint}>
<button
className="bg-indigo-500 hover:bg-indigo-500/80 text-white px-3 py-1 rounded-lg text-sm"
onClick={submit}
>
Send
</button>
</Endpoint>
</Request>
<Response res={data} loading={loading} />
</div>
</div>
);
};