import React, { createContext, ReactElement } from "react"; // next import { useRouter } from "next/router"; // swr import useSWR, { KeyedMutator } from "swr"; // services import userService from "services/user.service"; // constants import { CURRENT_USER } from "constants/fetch-keys"; // types import type { IUser } from "types"; interface IUserContextProps { user?: IUser; isUserLoading: boolean; mutateUser: KeyedMutator; assignedIssuesLength?: number; workspaceInvitesLength?: number; } export const UserContext = createContext({} as IUserContextProps); export const UserProvider = ({ children }: { children: ReactElement }) => { const router = useRouter(); // API to fetch user information const { data, error, mutate } = useSWR(CURRENT_USER, () => userService.currentUser(), { shouldRetryOnError: false, }); if (error) { router.push("/signin"); return null; } return ( {children} ); };