Switched frontend API calls to Nuxt
This commit is contained in:
1 parent
4621a81384
commit
47db7abd6a
5 files changed
+89
-69
No files matched your search
@@ -6,14 +6,11 @@ export function useApiFetch<DataT = any, ErrorT = any>(
|
||||
options?: UseFetchOptions<DataT, ErrorT>,
|
||||
authorize: boolean = true,
|
||||
): ReturnType<typeof useFetch<DataT, ErrorT>> {
|
||||
const baseUrl = import.meta.env.VITE_PUBLIC_BACKEND
|
||||
|
||||
if (!baseUrl) throw new Error("BACKEND URL not set")
|
||||
|
||||
const { sessionToken, refreshSessionToken } = useAuth()
|
||||
|
||||
const defaults: UseFetchOptions<DataT, ErrorT> = {
|
||||
baseURL: baseUrl,
|
||||
// The migrated API lives in this Nuxt app under server/api.
|
||||
baseURL: "/api",
|
||||
|
||||
retry: 1,
|
||||
retryDelay: 0,
|
||||
@@ -29,11 +26,9 @@ export function useApiFetch<DataT = any, ErrorT = any>(
|
||||
|
||||
if (!newToken) return
|
||||
|
||||
options.headers = {
|
||||
...(options.headers as unknown as Record<string, string>),
|
||||
// @ts-ignore
|
||||
Authorization: `Bearer ${newToken}`,
|
||||
}
|
||||
const headers = new Headers(options.headers as HeadersInit)
|
||||
headers.set("Authorization", `Bearer ${newToken}`)
|
||||
options.headers = headers
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
import { appendResponseHeader } from "h3"
|
||||
|
||||
type SessionResponse = {
|
||||
sessionToken: string
|
||||
expireAt: string
|
||||
@@ -50,9 +52,28 @@ export const useAuth = () => {
|
||||
const refreshSessionToken = async (): Promise<string | null> => {
|
||||
if (refreshPromise) return refreshPromise
|
||||
|
||||
refreshPromise = $fetch<SessionResponse>("/api/auth/session", {
|
||||
method: "POST",
|
||||
})
|
||||
refreshPromise = (async () => {
|
||||
const response = await $fetch.raw<SessionResponse>(
|
||||
"/api/auth/session",
|
||||
{
|
||||
method: "POST",
|
||||
headers: import.meta.server
|
||||
? useRequestHeaders(["cookie", "authorization"])
|
||||
: undefined,
|
||||
},
|
||||
)
|
||||
|
||||
if (import.meta.server) {
|
||||
const event = useRequestEvent()
|
||||
if (event) {
|
||||
for (const cookie of response.headers.getSetCookie()) {
|
||||
appendResponseHeader(event, "set-cookie", cookie)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return response._data!
|
||||
})()
|
||||
.then((response) => {
|
||||
sessionToken.value = response.sessionToken
|
||||
return response.sessionToken
|
||||
|
||||
Reference in new issue
Block a user