404 page added

This commit is contained in:
Sidharth Prabhu
2026-04-21 18:26:55 +05:30
parent 239c055fc4
commit 655fb251b9
11 changed files with 226 additions and 41 deletions

View File

@@ -10,6 +10,7 @@ interface AuthContextType {
logout: () => void;
changePin: (currentPin: string, newPin: string) => Promise<{ success: boolean; message: string }>;
updateProfile: (name: string, mobileNumber: string) => Promise<{ success: boolean; message: string }>;
refreshUser: () => Promise<void>;
}
const AuthContext = createContext<AuthContextType | undefined>(undefined);
@@ -137,35 +138,46 @@ export const AuthProvider: React.FC<{ children: React.ReactNode }> = ({ children
}
};
// Background suspension check
const refreshUser = async () => {
if (!user) return;
try {
const response = await fetch(`${API_BASE_URL}/user/${user.mobileNumber}`, { cache: 'no-store' });
if (response.ok) {
const data = await response.json();
const updatedUser: User = {
id: data.id,
name: data.name,
mobileNumber: data.mobileNumber,
isLoggedIn: data.isLoggedIn || data.loggedIn || true,
isSuspended: data.isSuspended || data.suspended,
ritzTokenBalance: data.ritzTokenBalance
};
// Update state and localStorage
setUser(updatedUser);
localStorage.setItem('user', JSON.stringify(updatedUser));
} else if (response.status === 404) {
logout();
}
} catch (error) {
console.error('Error refreshing user data:', error);
}
};
// Background status and balance sync
useEffect(() => {
if (!user) return;
const checkSuspensionStatus = async () => {
try {
const response = await fetch(`${API_BASE_URL}/user/${user.mobileNumber}`, { cache: 'no-store' });
if (response.status === 404) {
logout(); // User deleted
return;
}
if (response.ok) {
const data = await response.json();
if (data.isSuspended || data.suspended) {
console.log("Account suspended. Logging out...");
logout();
}
}
} catch (error) {
console.error('Error checking user status:', error);
}
const syncUserStatus = async () => {
await refreshUser();
};
const intervalId = setInterval(checkSuspensionStatus, 30000); // Check every 30 seconds
const intervalId = setInterval(syncUserStatus, 30000); // Sync every 30 seconds
return () => clearInterval(intervalId);
}, [user]);
return (
<AuthContext.Provider value={{ user, isLoading, checkUserExists, login, register, logout, changePin, updateProfile }}>
<AuthContext.Provider value={{ user, isLoading, checkUserExists, login, register, logout, changePin, updateProfile, refreshUser }}>
{children}
</AuthContext.Provider>
);