From c28f1a71ea64229ef8f525376cdcce0c7b5cce8b Mon Sep 17 00:00:00 2001 From: pradeepkumar Date: Sun, 8 Mar 2026 01:55:46 +0530 Subject: [PATCH] refactor: Centralize logout logic to a dedicated page, clear local storage, and prevent API requests during the process. --- src/app/logout/page.tsx | 22 +++++++++++++++++++--- src/components/layout/CommonHeader.tsx | 10 ++++++++-- src/services/api.ts | 4 ++++ 3 files changed, 31 insertions(+), 5 deletions(-) diff --git a/src/app/logout/page.tsx b/src/app/logout/page.tsx index 943a426..5b39e3f 100644 --- a/src/app/logout/page.tsx +++ b/src/app/logout/page.tsx @@ -1,17 +1,33 @@ 'use client'; -import { useEffect } from 'react'; +import { useEffect, useRef } from 'react'; import { signOut } from 'next-auth/react'; export default function LogoutPage() { + const hasStarted = useRef(false); + useEffect(() => { + if (hasStarted.current) return; + hasStarted.current = true; + // Clear localStorage tokens localStorage.removeItem('accessToken'); localStorage.removeItem('refreshToken'); localStorage.removeItem('user'); - // Sign out via NextAuth (clears session cookie) and redirect to login - signOut({ callbackUrl: '/login', redirect: true }); + // Sign out via NextAuth (clears session cookie), then manually redirect + signOut({ redirect: false }) + .then(() => { + window.location.href = '/login'; + }) + .catch(() => { + window.location.href = '/login'; + }); + + // Safety fallback - if signOut hangs, redirect after 3 seconds + setTimeout(() => { + window.location.href = '/login'; + }, 3000); }, []); return ( diff --git a/src/components/layout/CommonHeader.tsx b/src/components/layout/CommonHeader.tsx index 185d2fa..63ab3fb 100644 --- a/src/components/layout/CommonHeader.tsx +++ b/src/components/layout/CommonHeader.tsx @@ -4,7 +4,7 @@ import { useState, useEffect, useRef, useCallback } from 'react'; import Link from 'next/link'; import Image from 'next/image'; -import { useSession, signOut } from 'next-auth/react'; +import { useSession } from 'next-auth/react'; import { agentsService } from '@/services/agents.service'; import { usersService } from '@/services/users.service'; import { uploadService } from '@/services/upload.service'; @@ -295,7 +295,13 @@ export function CommonHeader() { {/* Log Out */}