"use client"; import React, { useEffect, useState } from 'react'; import { Box, Button, Divider, Group, Image, Stack, Text, Title } from '@mantine/core'; import { IconBook, IconCurrencyRupee, IconHome, IconLogout, IconPhoneFilled, IconSettings } from '@tabler/icons-react'; import Link from 'next/link'; import { useRouter, usePathname } from "next/navigation"; import { Providers } from '../providers'; import logo from '@/app/image/logo1.jpg'; import NextImage from 'next/image'; import { notifications } from '@mantine/notifications'; export default function RootLayout({ children }: { children: React.ReactNode }) { const router = useRouter(); const pathname = usePathname(); const [authorized, SetAuthorized] = useState(null); const [userLastLoginDetails, setUserLastLoginDetails] = useState(null); const [custname, setCustname] = useState(null); async function handleLogout(e: React.FormEvent) { e.preventDefault(); localStorage.removeItem("access_token"); localStorage.removeItem("remitter_name"); router.push("/login"); } async function handleFetchUserName() { try { const token = localStorage.getItem("access_token"); const response = await fetch('/api/customer', { method: 'GET', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${token}` }, }); if (!response.ok) { notifications.show({ withBorder: true, color: "red", title: "Error", message: "Internal Server Error", autoClose: 5000, }); localStorage.removeItem("access_token"); localStorage.removeItem("remitter_name"); return; } const data = await response.json(); if (response.ok && Array.isArray(data)) { if (data.length > 0) { const name = data[0].custname; localStorage.setItem("remitter_name", name); setCustname(name); } } else { throw new Error(); } } catch { notifications.show({ withBorder: true, color: "red", title: "Please try again later", message: "Unable to Fetch, Please try again later", autoClose: 5000, }); } } useEffect(() => { const token = localStorage.getItem("access_token"); if (!token) { SetAuthorized(false); router.push("/login"); } else { SetAuthorized(true); handleFetchUserName(); } }, []); async function handleFetchUserDetails(e: React.FormEvent) { e.preventDefault(); const token = localStorage.getItem("access_token"); const response = await fetch('/api/auth/user_details', { method: 'GET', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${token}` }, }); const data = await response.json(); if (response.ok) { return data; } else if (response.status === 401 || data.message === 'invalid or expired token') { // console.log(data); localStorage.removeItem("access_token"); router.push('/login'); } else { notifications.show({ withBorder: true, color: "red", title: "Please try again later", message: "Unable to fetch timestamp, please try again later", autoClose: 5000, }); } } useEffect(() => { const fetchLoginTime = async () => { const result = await handleFetchUserDetails({ preventDefault: () => { } } as React.FormEvent); if (result) { setUserLastLoginDetails(result.last_login); } }; fetchLoginTime(); }, []); const navItems = [ { href: "/home", label: "Home", icon: IconHome }, { href: "/accounts", label: "Accounts", icon: IconBook }, { href: "/funds_transfer", label: "Send Money", icon: IconCurrencyRupee }, { href: "/settings", label: "Settings", icon: IconSettings }, ]; if (authorized) { return (
ebanking THE KANGRA CENTRAL CO-OPERATIVE BANK LTD. Toll Free No : 1800-180-8008
Welcome, {custname ?? null} Last logged in at {userLastLoginDetails ? new Date(userLastLoginDetails).toLocaleString() : "N/A"} {navItems.map((item) => { const isActive = pathname.startsWith(item.href); const Icon = item.icon; return ( ); })}
{children}
© 2025 The Kangra Central Co-Operative Bank
); } }