bug fix
This commit is contained in:
@@ -5,8 +5,8 @@ import { useCartId } from '@/shared/hooks/cartId';
|
|||||||
import { removeToken } from '@/shared/lib/token';
|
import { removeToken } from '@/shared/lib/token';
|
||||||
import { Avatar, AvatarFallback, AvatarImage } from '@/shared/ui/avatar';
|
import { Avatar, AvatarFallback, AvatarImage } from '@/shared/ui/avatar';
|
||||||
import { Button } from '@/shared/ui/button';
|
import { Button } from '@/shared/ui/button';
|
||||||
import { userStore } from '@/widgets/welcome/lib/hook';
|
import { banner_api } from '@/widgets/welcome/lib/api';
|
||||||
import { useQueryClient } from '@tanstack/react-query';
|
import { useQuery, useQueryClient } from '@tanstack/react-query';
|
||||||
import { Headset, Home, LogOut } from 'lucide-react';
|
import { Headset, Home, LogOut } from 'lucide-react';
|
||||||
import { useTranslations } from 'next-intl';
|
import { useTranslations } from 'next-intl';
|
||||||
import { useEffect, useState } from 'react';
|
import { useEffect, useState } from 'react';
|
||||||
@@ -17,14 +17,22 @@ const Profile = () => {
|
|||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const t = useTranslations();
|
const t = useTranslations();
|
||||||
const queryClient = useQueryClient();
|
const queryClient = useQueryClient();
|
||||||
const { user } = userStore();
|
|
||||||
const { setCartId } = useCartId();
|
const { data: me, isError } = useQuery({
|
||||||
|
queryKey: ['get_me'],
|
||||||
|
queryFn: () => banner_api.getMe(),
|
||||||
|
select(data) {
|
||||||
|
return data.data;
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (user === null) {
|
if (isError) {
|
||||||
router.replace('/auth');
|
router.replace('/');
|
||||||
}
|
}
|
||||||
}, [user]);
|
}, [isError]);
|
||||||
|
|
||||||
|
const { setCartId } = useCartId();
|
||||||
|
|
||||||
const menuItems = [
|
const menuItems = [
|
||||||
{ id: 'overview', label: 'Umumiy', icon: Home },
|
{ id: 'overview', label: 'Umumiy', icon: Home },
|
||||||
@@ -73,14 +81,14 @@ const Profile = () => {
|
|||||||
<Avatar className="w-14 h-14 ring-2 ring-emerald-500 ring-offset-2 flex items-center justify-center">
|
<Avatar className="w-14 h-14 ring-2 ring-emerald-500 ring-offset-2 flex items-center justify-center">
|
||||||
<AvatarImage />
|
<AvatarImage />
|
||||||
<AvatarFallback className="text-muted-foreground font-semibold">
|
<AvatarFallback className="text-muted-foreground font-semibold">
|
||||||
{user?.first_name.slice(0, 1).toUpperCase()}
|
{me?.first_name.slice(0, 1).toUpperCase()}
|
||||||
</AvatarFallback>
|
</AvatarFallback>
|
||||||
</Avatar>
|
</Avatar>
|
||||||
<div>
|
<div>
|
||||||
<p className="text-lg text-muted-foreground font-medium">
|
<p className="text-lg text-muted-foreground font-medium">
|
||||||
{user &&
|
{me &&
|
||||||
user.first_name.charAt(0).toUpperCase() +
|
me.first_name.charAt(0).toUpperCase() +
|
||||||
user.first_name.slice(1)}
|
me.first_name.slice(1)}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -129,14 +137,14 @@ const Profile = () => {
|
|||||||
<Avatar className="w-10 h-10 md:w-12 md:h-12 ring-2 ring-emerald-500 ring-offset-2">
|
<Avatar className="w-10 h-10 md:w-12 md:h-12 ring-2 ring-emerald-500 ring-offset-2">
|
||||||
<AvatarImage />
|
<AvatarImage />
|
||||||
<AvatarFallback className="text-muted-foreground font-semibold">
|
<AvatarFallback className="text-muted-foreground font-semibold">
|
||||||
{user?.first_name?.slice(0, 1).toUpperCase()}
|
{me?.first_name?.slice(0, 1).toUpperCase()}
|
||||||
</AvatarFallback>
|
</AvatarFallback>
|
||||||
</Avatar>
|
</Avatar>
|
||||||
<div>
|
<div>
|
||||||
<p className="text-md md:text-xl text-muted-foreground">
|
<p className="text-md md:text-xl text-muted-foreground">
|
||||||
{user &&
|
{me &&
|
||||||
user.first_name.charAt(0).toUpperCase() +
|
me.first_name.charAt(0).toUpperCase() +
|
||||||
user.first_name.slice(1)}
|
me.first_name.slice(1)}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -75,6 +75,7 @@ httpClient.interceptors.response.use(
|
|||||||
} catch {
|
} catch {
|
||||||
removeToken();
|
removeToken();
|
||||||
removeRefToken();
|
removeRefToken();
|
||||||
|
window.location.href = '/';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return Promise.reject(error);
|
return Promise.reject(error);
|
||||||
|
|||||||
@@ -208,5 +208,6 @@
|
|||||||
"Xatolik yuz berdi: Mahsulot omborxonada yetarli emas": "Произошла ошибка: недостаточно товаров на складе",
|
"Xatolik yuz berdi: Mahsulot omborxonada yetarli emas": "Произошла ошибка: недостаточно товаров на складе",
|
||||||
"Bu kategoriyada hozircha mahsulot yo‘q": "В этой категории пока нет товаров",
|
"Bu kategoriyada hozircha mahsulot yo‘q": "В этой категории пока нет товаров",
|
||||||
"Tez orada qo‘shiladi": "Скоро будет добавлено",
|
"Tez orada qo‘shiladi": "Скоро будет добавлено",
|
||||||
"Hozirchali bu kategoriyada mahsulot yo'q": "Пока нет товаров в этой категории"
|
"Hozirchali bu kategoriyada mahsulot yo'q": "Пока нет товаров в этой категории",
|
||||||
|
"Kataloglar": "Каталог"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -207,5 +207,7 @@ declare const messages: {
|
|||||||
'Xatolik yuz berdi: Mahsulot omborxonada yetarli emas': 'Xatolik yuz berdi: Mahsulot omborxonada yetarli emas';
|
'Xatolik yuz berdi: Mahsulot omborxonada yetarli emas': 'Xatolik yuz berdi: Mahsulot omborxonada yetarli emas';
|
||||||
'Bu kategoriyada hozircha mahsulot yo‘q': 'Bu kategoriyada hozircha mahsulot yo‘q';
|
'Bu kategoriyada hozircha mahsulot yo‘q': 'Bu kategoriyada hozircha mahsulot yo‘q';
|
||||||
'Tez orada qo‘shiladi': 'Tez orada qo‘shiladi';
|
'Tez orada qo‘shiladi': 'Tez orada qo‘shiladi';
|
||||||
|
"Hozirchali bu kategoriyada mahsulot yo'q": "Hozirchali bu kategoriyada mahsulot yo'q";
|
||||||
|
Kataloglar: 'Kataloglar';
|
||||||
};
|
};
|
||||||
export default messages;
|
export default messages;
|
||||||
|
|||||||
@@ -204,5 +204,6 @@
|
|||||||
"Xatolik yuz berdi: Mahsulot omborxonada yetarli emas": "Xatolik yuz berdi: Mahsulot omborxonada yetarli emas",
|
"Xatolik yuz berdi: Mahsulot omborxonada yetarli emas": "Xatolik yuz berdi: Mahsulot omborxonada yetarli emas",
|
||||||
"Bu kategoriyada hozircha mahsulot yo‘q": "Bu kategoriyada hozircha mahsulot yo‘q",
|
"Bu kategoriyada hozircha mahsulot yo‘q": "Bu kategoriyada hozircha mahsulot yo‘q",
|
||||||
"Tez orada qo‘shiladi": "Tez orada qo‘shiladi",
|
"Tez orada qo‘shiladi": "Tez orada qo‘shiladi",
|
||||||
"Hozirchali bu kategoriyada mahsulot yo'q": "Hozirchali bu kategoriyada mahsulot yo'q"
|
"Hozirchali bu kategoriyada mahsulot yo'q": "Hozirchali bu kategoriyada mahsulot yo'q",
|
||||||
|
"Kataloglar": "Kataloglar"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -418,7 +418,7 @@ const Navbar = () => {
|
|||||||
) : (
|
) : (
|
||||||
<LayoutGrid className="size-4 text-foreground" />
|
<LayoutGrid className="size-4 text-foreground" />
|
||||||
)}
|
)}
|
||||||
<p className="text-foreground">Kataloglar</p>
|
<p className="text-foreground">{t('Kataloglar')}</p>
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
<div className="relative w-full max-lg:hidden">
|
<div className="relative w-full max-lg:hidden">
|
||||||
|
|||||||
Reference in New Issue
Block a user