| 1234567891011121314151617181920212223242526272829 |
- import { useEffect } from 'react'
- //import React, { useEffect } from 'react';
- import Router from 'next/router'
- import useSWR from 'swr'
- export default function useUser({
- redirectTo = false,
- redirectIfFound = false,
- } = {}) {
-
- const { data: user, mutate: mutateUser } = useSWR('/api/user')
- useEffect(() => {
- // if no redirect needed, just return (example: already on /dashboard)
- // if user data not yet there (fetch in progress, logged in or not) then don't do anything yet
- if (!redirectTo || !user) return
- if (
- // If redirectTo is set, redirect if the user was not found.
- (redirectTo && !redirectIfFound && !user?.isLoggedIn) ||
- // If redirectIfFound is also set, redirect if the user was found
- (redirectIfFound && user?.isLoggedIn)
- ) {
- Router.push(redirectTo)
- }
- }, [user, redirectIfFound, redirectTo])
- return { user, mutateUser }
- }
|