Split model files into apis, hooks and models

This commit is contained in:
Aarni Halinen
2021-03-15 20:05:39 +02:00
parent 61d045b9d7
commit 05097e44a4
45 changed files with 707 additions and 731 deletions
+40
View File
@@ -0,0 +1,40 @@
import useSWR from "swr";
import axios, { AxiosRequestConfig } from "axios";
import Post from "@models/Feed";
import { getAuthHeader } from "@utils/auth";
import { URL, Options } from "@api/feedApi";
const feedFetcher = (url: string, config?: AxiosRequestConfig) => axios.get(url, config).then((res) => res.data);
const generateFetchParams = (id = "", options: Options = {}) => {
const url = `${URL}${id}`;
const { auth } = options;
return {
url,
config: {
headers: auth ? { Authorization: getAuthHeader() } : null,
},
};
};
interface FetchArguments {
initialData?: Post | Post[],
id?: string;
options?: Options
}
const useFetchFeed = ({
initialData,
id = "",
options = {},
}: FetchArguments) => {
const { url, config } = generateFetchParams(id, options);
const { data, error } = useSWR([url, config], feedFetcher, { initialData });
return {
data: data?.results || data,
error,
};
};
export default useFetchFeed;