aboutsummaryrefslogtreecommitdiffstats
path: root/src/api.ts
diff options
context:
space:
mode:
authorJan Tuomi <jans.tuomi@gmail.com>2022-02-08 17:45:04 +0200
committerJan Tuomi <jans.tuomi@gmail.com>2022-02-08 17:45:04 +0200
commitd989e1e942a77749c31e82296dd6c83a97184fd0 (patch)
tree17061e503da4d89735fdc2e92426fdf61e91b0ad /src/api.ts
parent7a69293ba820b432ae117a2e10d943acdc627d8b (diff)
Show timing info
Diffstat (limited to 'src/api.ts')
-rw-r--r--src/api.ts30
1 files changed, 6 insertions, 24 deletions
diff --git a/src/api.ts b/src/api.ts
index be0c7a1..2670e3c 100644
--- a/src/api.ts
+++ b/src/api.ts
@@ -76,35 +76,14 @@ export const useExamples = () => mapSWRResult<ExampleApi.ListResponse.Body, Erro
useSWR(ExampleApi.ListRequest.path, fetcher(EXAMPLE_API_URL)),
)
-export type SubmitResult = APIResult<RunnerApi.SubmitResponse.Body["result"], Error>
-
-const postSource = async (text: string): Promise<SubmitResult> => {
- const apiResult = await postRequest<RunnerApi.SubmitRequest.Body, RunnerApi.SubmitResponse.Body, Error>(
- {
- baseUrl: RUNNER_API_URL,
- path: RunnerApi.SubmitRequest.path,
- body: {
- source: text,
- },
- },
- )
-
- switch (apiResult.type) {
- case "success":
- return { type: "success", data: apiResult.data.result }
- case "failed":
- return { type: "failed", error: apiResult.error }
- case "not_yet_requested":
- case "loading":
- return apiResult
- }
-}
+export type SubmitResult = APIResult<RunnerApi.SubmitResponse.Body & { roundtripTime: number }, Error>
export const useSubmitSource = () => {
const [result, setResult] = useState<SubmitResult>({ type: "not_yet_requested" })
const submitSource = async (text: string) => {
try {
+ const startRoundtripTime = performance.now()
setResult({ type: "loading" })
const apiResult = await postRequest<RunnerApi.SubmitRequest.Body, RunnerApi.SubmitResponse.Body, Error>(
{
@@ -115,10 +94,13 @@ export const useSubmitSource = () => {
},
},
)
+ const endRoundtripTime = performance.now()
+ const roundtripTime = endRoundtripTime - startRoundtripTime
switch (apiResult.type) {
case "success":
- setResult({ type: "success", data: apiResult.data.result })
+ setResult({ type: "success", data: { ...apiResult.data, roundtripTime }})
break
+
case "failed":
setResult({ type: "failed", error: apiResult.error })
break