This commit is contained in:
nabijonovdavronbek619@gmail.com
2026-04-01 19:20:00 +05:00
parent 7b76901f5f
commit dfa3e14d58
8 changed files with 232 additions and 31 deletions

View File

@@ -8,6 +8,8 @@ import {
import { selectFullName, useUserStore } from './userStore';
import { isFormValid, validatePlagiarismForm } from './validation';
import { submitPlagiarismCheck } from '@/shared/request/plagiarismapi';
import { toast } from 'react-toastify';
import { useUserPlagiatStore } from '@/shared/zustand/user';
// ─── Initial States ──────────────────────────────────────────────────────────
@@ -27,7 +29,7 @@ const INITIAL_SUBMISSION: SubmissionState = {
export function usePlagiarismForm() {
const senderFullName = useUserStore(selectFullName);
const user = useUserPlagiatStore((state) => state.user);
const [form, setForm] = useState<PlagiarismFormState>(INITIAL_FORM);
const [errors, setErrors] = useState<PlagiarismFormErrors>({});
const [isPaymentOpen, setIsPaymentOpen] = useState(false);
@@ -61,6 +63,11 @@ export function usePlagiarismForm() {
async (e: React.FormEvent) => {
e.preventDefault();
console.log('Form submitted user:', user); // Debugging log
if (user === null) {
toast.error('Iltimos, avval tizimga kiring!');
return;
}
// Run validation first
const validationErrors = validatePlagiarismForm(form);
if (!isFormValid(validationErrors)) {

View File

@@ -4,11 +4,19 @@ import { useTranslations } from 'next-intl';
import { useHistory } from '../lib/useHistory';
import { HistoryTable } from './historyTable';
import { Pagination } from './pagination';
import { useQuery } from '@tanstack/react-query';
import { apiRequest } from '@/shared/request/apiRequest';
import { links } from '@/shared/request/links';
// ─── Page Header ───────────────────────────────────────────────────────────────
const PageHeader: React.FC = () => {
const t = useTranslations('HistoryPage');
const { data } = useQuery({
queryKey: ['history'],
queryFn: () => apiRequest('GET', links.history),
});
console.log('History data:', data); // Debugging log
return (
<div className="mb-6">

View File

@@ -12,7 +12,7 @@ import SubMenuLink from './SubMenuLink';
import { ChangeLang } from './ChangeLang';
import { useLoginModal, useRegisterModal } from '@/shared/zustand/auth';
import { useTranslations } from 'next-intl';
import { useUserStore } from '@/shared/zustand/user';
import { useUserPlagiatStore } from '@/shared/zustand/user';
function AuthButtons() {
const t = useTranslations('Navbar');
@@ -28,23 +28,34 @@ function AuthButtons() {
const toggleRegisterModal = useRegisterModal(
(state) => state.toggleRegisterModal,
);
const user = useUserStore((state) => state.user);
const user = useUserPlagiatStore((state) => state.user);
console.log('Current user:', user);
if (user) {
return (
<NavigationMenu>
<NavigationMenuItem>
<NavigationMenuTrigger>{user.name}</NavigationMenuTrigger>
<NavigationMenuContent className="bg-popover text-popover-foreground">
{userItem.map((subItem) => (
<NavigationMenuLink asChild key={subItem.title} className="w-80">
<SubMenuLink item={subItem} />
</NavigationMenuLink>
))}
</NavigationMenuContent>
</NavigationMenuItem>
</NavigationMenu>
<div className="flex flex-row max-sm:items-center max-sm:justify-around gap-3">
<div className="sm:flex hidden">
<ChangeLang />
</div>
<NavigationMenu>
<NavigationMenuItem>
<NavigationMenuTrigger className="text-xl">
{user.name} {user.surname}
</NavigationMenuTrigger>
<NavigationMenuContent className="bg-popover text-popover-foreground">
{userItem.map((subItem) => (
<NavigationMenuLink
asChild
key={subItem.title}
className="w-80"
>
<SubMenuLink item={subItem} />
</NavigationMenuLink>
))}
</NavigationMenuContent>
</NavigationMenuItem>
</NavigationMenu>
</div>
);
}