'NextJs: Check and set auth state on page change

Want

I want my next application to hit the endpoint /api/users/whoami which basically validates the cookie and returns the payload of the user logged in

Have

I am using ContextApi to set the authState in my application.

The issue is, all this logic is in _app.js file's useEffect which is OUTSIDE <AuthContextProvider>

Thus, I am unable to set the state (context) from inside of _app.js:

function MyApp({ Component, pageProps }: AppProps) {
  const { setAuthState, authState } = React.useContext(AuthContext);

  React.useEffect(() => {
    const whoAmI = async () => {
      const { data } = await api.get(AuthEndpoints.whoami);
      if (data) { // 👈 setting state 
        setAuthState({ isAuthenticated: true, userId: data.id, username: data.username });
      } else {
        setAuthState({ isAuthenticated: false, userId: null, username: null });
      }
    };
    whoAmI();
  }, [Component]);

  console.log(authState); // 👈 This wont update 

  return (
    <AuthContextProvider> // 👈
      <QueryClientProvider client={queryClient}>
        <Navbar />
        <Component {...pageProps} />
      </QueryClientProvider>
    </AuthContextProvider>
  );
}


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source