diff --git a/pkgs/webview-ui/app/src/api_test.tsx b/pkgs/webview-ui/app/src/api_test.tsx new file mode 100644 index 000000000..0fc9a6648 --- /dev/null +++ b/pkgs/webview-ui/app/src/api_test.tsx @@ -0,0 +1,107 @@ +import { + createForm, + FieldValues, + getValues, + SubmitHandler, +} from "@modular-forms/solid"; +import { TextInput } from "./components/TextInput"; +import { Button } from "./components/button"; +import { callApi } from "./api"; +import { API } from "@/api/API"; +import { createSignal, Match, Switch } from "solid-js"; +import { Typography } from "./components/Typography"; +import { createQuery } from "@tanstack/solid-query"; +import { makePersisted } from "@solid-primitives/storage"; + +interface APITesterForm extends FieldValues { + endpoint: string; + payload: string; +} + +export const ApiTester = () => { + const [persistedTestData, setPersistedTestData] = makePersisted( + createSignal(), + { + name: "_test_data", + storage: localStorage, + }, + ); + + const [formStore, { Form, Field }] = createForm({ + initialValues: persistedTestData(), + }); + + const query = createQuery(() => ({ + // eslint-disable-next-line @tanstack/query/exhaustive-deps + queryKey: [], + queryFn: async () => { + const values = getValues(formStore); + return await callApi( + values.endpoint as keyof API, + JSON.parse(values.payload || ""), + ); + }, + staleTime: Infinity, + })); + + const handleSubmit: SubmitHandler = (values) => { + console.log(values); + setPersistedTestData(values); + query.refetch(); + + const v = getValues(formStore); + console.log(v); + // const result = callApi( + // values.endpoint as keyof API, + // JSON.parse(values.payload) + // ); + // setResult(result); + }; + return ( +
+

API Tester

+
+
+ + {(field, fieldProps) => ( + + )} + + + {(field, fieldProps) => ( + + )} + + +
+
+
+ + Result + + + + loading ... + + +
+              {JSON.stringify(query.data, null, 2)}
+            
+
+
+
+
+ ); +}; diff --git a/pkgs/webview-ui/app/src/index.tsx b/pkgs/webview-ui/app/src/index.tsx index bdd3e969b..67046ee6a 100644 --- a/pkgs/webview-ui/app/src/index.tsx +++ b/pkgs/webview-ui/app/src/index.tsx @@ -18,6 +18,7 @@ import { Toaster } from "solid-toast"; import { ModuleList } from "./routes/modules/list"; import { ModuleDetails } from "./routes/modules/details"; import { ModuleDetails as AddModule } from "./routes/modules/add"; +import { ApiTester } from "./api_test"; export const client = new QueryClient(); @@ -138,6 +139,13 @@ export const routes: AppRoute[] = [ hidden: true, component: () => , }, + { + path: "/api_testing", + label: "api_testing", + icon: "bolt", + hidden: false, + component: () => , + }, ]; render(