import { queryKeys } from "@/app/constants/queryKeys";
import { CURRENCIES_API } from "@/config/api";
import { CurrencyOption } from "@/src/currencyStore";
import { useQuery } from "@tanstack/react-query";
import { toast } from "react-hot-toast";
type CurrencyData = {
[currencyCode: string]: string | number;
};
export const useFetchCurrenciesQuery = () => {
const getCurrencyDataFn = async () => {
const response = await fetch(CURRENCIES_API);
const result: CurrencyData = await response.json();
return result;
};
return useQuery<CurrencyData, Error>({
queryKey: [queryKeys.currencies],
queryFn: getCurrencyDataFn,
select: (data) => {
if (!data) return [];
return Object.entries(data.data).map(([label, value]) => ({
label,
value,
}));
},
onSuccess: () => {
toast.success("Fetched data successfully");
},
onError: (error: unknown) =>
toast.error(`Something went wrong: ${error}`),
});
};
import { queryKeys } from "@/app/constants/queryKeys";
import { CURRENCIES_API } from "@/config/api";
import { CurrencyOption } from "@/src/currencyStore";
import { useQuery } from "@tanstack/react-query";
import { toast } from "react-hot-toast";
type CurrencyData = {
[currencyCode: string]: string | number;
};
export const useFetchCurrenciesQuery = () => {
const getCurrencyDataFn = async () => {
const response = await fetch(CURRENCIES_API);
const result: CurrencyData = await response.json();
return result;
};
return useQuery<CurrencyData, Error>({
queryKey: [queryKeys.currencies],
queryFn: getCurrencyDataFn,
select: (data) => {
if (!data) return [];
return Object.entries(data.data).map(([label, value]) => ({
label,
value,
}));
},
onSuccess: () => {
toast.success("Fetched data successfully");
},
onError: (error: unknown) =>
toast.error(`Something went wrong: ${error}`),
});
};