🔨 Replaces native fetch with axios
All checks were successful
Gitea Build Action / build-go (push) Successful in 25s
Gitea Build Action / build-nuxt (push) Successful in 10m20s

This commit is contained in:
Daniel Svitan
2025-06-06 22:33:26 +02:00
parent 88c31a5133
commit ae7db8290c
6 changed files with 95 additions and 59 deletions

View File

@@ -1,39 +1,42 @@
import type { FetchResponse } from "ofetch"
import { AxiosError, type AxiosResponse } from "axios"
export function useAPI(route: string = "/") {
return `https://api.door.svitan.dev${route}`
}
export async function handleRequestError({ error }: { error: Error }) {
export async function handleRequestError(error: unknown) {
const toast = useToast()
let message = undefined
if (error instanceof Error) {
message = error.message
}
toast.add({
title: "Error occurred",
description: error.message,
description: message,
color: "error",
})
}
export function handleResponse<T>(
success: (response: FetchResponse<T>) => Promise<void> | void
export function handleResponse<T extends { toString(): string }>(
response: AxiosResponse<T>,
success: (response: AxiosResponse<T>) => void = () => {}
) {
const token = useToken()
const toast = useToast()
return async function ({ response }: { response: FetchResponse<T> }) {
console.log(response)
// console.log(await response.text())
if (response.status === 200) {
await success(response.clone())
} else if (response.status === 401) {
toast.add({ title: "Token not valid", color: "error" })
token.value = ""
navigateTo("/token")
} else {
toast.add({
title: "Error occurred",
description: await response.text(),
color: "error",
})
}
if (response.status === 200) {
success(response)
} else if (response.status === 401) {
toast.add({ title: "Token not valid", color: "error" })
token.value = ""
navigateTo("/token")
} else {
toast.add({
title: "Error occurred",
description: response.data.toString(),
color: "error",
})
}
}

View File

@@ -2,9 +2,9 @@ export function useToken() {
return useCookie<string | undefined>("token")
}
export function useHeaders() {
export function useHeaders(override: string | undefined = undefined) {
const token = useToken()
return {
Authorization: `Bearer ${token.value}`
Authorization: `Bearer ${override ?? token.value}`,
}
}