aboutsummaryrefslogtreecommitdiffstats
path: root/apps/web/components/utils/ValidAccountCheck.tsx
blob: 5ca5fd5c184f236a653bf638f92e31369dc715eb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
"use client";

import { useEffect } from "react";
import { useRouter } from "next/navigation";
import { api } from "@/lib/trpc";

/**
 * This component is used to address a confusion when the JWT token exists but the user no longer exists in the database.
 * So this component synchronusly checks if the user is still valid and if not, signs out the user.
 */
export default function ValidAccountCheck() {
  const router = useRouter();
  const { error } = api.users.whoami.useQuery(undefined, {
    retry: (_failureCount, error) => {
      if (error.data?.code === "UNAUTHORIZED") {
        return false;
      }
      return true;
    },
  });
  useEffect(() => {
    if (error?.data?.code === "UNAUTHORIZED") {
      router.push("/logout");
    }
  }, [error]);

  return <></>;
}