import { StorageSerializers } from "@vueuse/core";
import { UseFetchOptions } from "nuxt/app";

const useApiFetch = async <T>(url: string, options?: any) => {
	const { token } = useAuth();
	let head = {
		...(options?.headers || {}),
	};
	if (token.value) {
		head.Authorization = token.value;
	}
	/* 	const cached = useSessionStorage<T>(url, null, {
		serializer: StorageSerializers.object,
	});

	if (!cached.value) {
		const { data, error } = await useFetch<T>("/api" + url, {
			method: "get",
			headers: head,
			...options,
		});

		if (error.value) {
			throw createError({
				...error.value,
				statusMessage: `Could not fetch data from ${url}`,
			});
		} */

	// Update the cache
	// cached.value = data.value as T;
	// } else {
	// console.log(`Getting value from cache for ${url}`);
	// }
	const data = await useFetch<T>("/api" + url, {
		method: "get",
		headers: head,
		...options,
	});

	return data;
};

export default useApiFetch;
