From 88f22a342a3be7d53794e2a2ca7622bf0df8bb6f Mon Sep 17 00:00:00 2001 From: "nabijonovdavronbek619@gmail.com" Date: Tue, 7 Apr 2026 11:52:29 +0500 Subject: [PATCH] complated si check request --- src/features/auth/login/lib/useLoginForm.ts | 1 - src/features/modals/siModal/page.tsx | 43 ++++++++----------- .../modals/siModal/ui/fileUploadModal.tsx | 2 - src/features/modals/siModal/utils/tyeps.ts | 1 - .../modals/siModal/utils/useFileUpload.ts | 24 ++++++++++- src/shared/request/links.ts | 2 + src/widgets/cabinet/ui/dashboard/CtaCards.tsx | 2 +- src/widgets/cabinet/ui/tables/SiTable.tsx | 4 +- 8 files changed, 48 insertions(+), 31 deletions(-) diff --git a/src/features/auth/login/lib/useLoginForm.ts b/src/features/auth/login/lib/useLoginForm.ts index a141fe6..3473f87 100644 --- a/src/features/auth/login/lib/useLoginForm.ts +++ b/src/features/auth/login/lib/useLoginForm.ts @@ -74,7 +74,6 @@ export function useLoginForm() { } loginReqest.mutate({ phone: `998${phone}`, password: password }); - sessionStorage.setItem('prev_page', 'login'); }; return { diff --git a/src/features/modals/siModal/page.tsx b/src/features/modals/siModal/page.tsx index 2254d0c..a74c03e 100644 --- a/src/features/modals/siModal/page.tsx +++ b/src/features/modals/siModal/page.tsx @@ -1,28 +1,11 @@ 'use client'; import { useState } from 'react'; -import { ArrowRight, BrainCircuit } from 'lucide-react'; +import { ArrowRight, BrainCircuit, Plus } from 'lucide-react'; import { FileUploadModal } from './ui/fileUploadModal'; -export default function SiCTACard() { +export function SiCTACard() { const [isOpen, setIsOpen] = useState(false); - const [lastSubmission, setLastSubmission] = useState<{ - name: string; - words: number; - } | null>(null); - - const handleSubmit = ( - documentName: string, - _file: File, - wordCount: number, - ) => { - // Here you would send the file to your backend for plagiarism check. - // The word count is already computed client-side for instant pricing display. - console.log(lastSubmission); - console.log('Submitting:', { documentName, wordCount }); - setLastSubmission({ name: documentName, words: wordCount }); - setIsOpen(false); - }; return ( <> @@ -42,11 +25,23 @@ export default function SiCTACard() { Yuborish - setIsOpen(false)} - onSubmit={handleSubmit} - /> + setIsOpen(false)} /> + + ); +} + +export function SiButton() { + const [isOpen, setIsOpen] = useState(false); + return ( + <> + + setIsOpen(false)} /> ); } diff --git a/src/features/modals/siModal/ui/fileUploadModal.tsx b/src/features/modals/siModal/ui/fileUploadModal.tsx index 7abb502..a6daca2 100644 --- a/src/features/modals/siModal/ui/fileUploadModal.tsx +++ b/src/features/modals/siModal/ui/fileUploadModal.tsx @@ -12,7 +12,6 @@ import { DropZone } from './dropZone'; export function FileUploadModal({ isOpen, onClose, - onSubmit, pricing = DEFAULT_PRICING, }: FileUploadModalProps) { const { @@ -59,7 +58,6 @@ export function FileUploadModal({ const handleSubmit = () => { if (!canSubmit || !uploadedFile) return; - onSubmit(documentName.trim(), uploadedFile.file, wordCount); }; return ( diff --git a/src/features/modals/siModal/utils/tyeps.ts b/src/features/modals/siModal/utils/tyeps.ts index 1c705e0..2a8aa44 100644 --- a/src/features/modals/siModal/utils/tyeps.ts +++ b/src/features/modals/siModal/utils/tyeps.ts @@ -14,7 +14,6 @@ export interface PricingConfig { export interface FileUploadModalProps { isOpen: boolean; onClose: () => void; - onSubmit: (documentName: string, file: File, wordCount: number) => void; pricing?: PricingConfig; } diff --git a/src/features/modals/siModal/utils/useFileUpload.ts b/src/features/modals/siModal/utils/useFileUpload.ts index c65a766..b16fa56 100644 --- a/src/features/modals/siModal/utils/useFileUpload.ts +++ b/src/features/modals/siModal/utils/useFileUpload.ts @@ -3,6 +3,10 @@ import { useState, useCallback, useRef } from 'react'; import { UploadedFile } from './tyeps'; import { countWordsFromFile, SUPPORTED_EXTENSIONS } from './wordCount'; +import { useMutation } from '@tanstack/react-query'; +import { apiRequest } from '@/shared/request/apiRequest'; +import { links } from '@/shared/request/links'; +import { toast } from 'react-toastify'; interface UseFileUploadReturn { documentName: string; @@ -28,6 +32,17 @@ export function useFileUpload(): UseFileUploadReturn { const [error, setError] = useState(null); const fileInputRef = useRef(null); + const wordCount = useMutation({ + mutationFn: (data: FormData) => apiRequest('POST', links.si_create, data), + onSuccess: (res) => { + console.log(res); + }, + onError: (err) => { + console.log(err instanceof Error ? err.message : 'Unknown error'); + toast.error(err instanceof Error ? err.message : 'Unknown error'); + }, + }); + const validateFile = (file: File): string | null => { const ext = '.' + file.name.split('.').pop()?.toLowerCase(); if (!SUPPORTED_EXTENSIONS.includes(ext)) { @@ -77,7 +92,14 @@ export function useFileUpload(): UseFileUploadReturn { wordCount: result.count, }); } - + console.log('running'); + if (!file) return; + console.log('running inner'); + const fd = new FormData(); + fd.append('title', file.name.replace(/\.[^/.]+$/, '')); + fd.append('file', file); + wordCount.mutate(fd); + console.log('stop'); setIsProcessing(false); }, []); diff --git a/src/shared/request/links.ts b/src/shared/request/links.ts index 921667d..8a705bb 100644 --- a/src/shared/request/links.ts +++ b/src/shared/request/links.ts @@ -11,4 +11,6 @@ export const links = { si_id: (si_id: number) => `/shared/ai_document/list/${si_id}/`, si_payment: (document_id: number) => `/shared/ai_document/pay/${document_id}`, si_create: '/shared/ai_document/create/', + document_types: '/shared/document_types/', + pay_history: '/shared/orders/all/', }; diff --git a/src/widgets/cabinet/ui/dashboard/CtaCards.tsx b/src/widgets/cabinet/ui/dashboard/CtaCards.tsx index c8cfcec..685e1dd 100644 --- a/src/widgets/cabinet/ui/dashboard/CtaCards.tsx +++ b/src/widgets/cabinet/ui/dashboard/CtaCards.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { FileSearch, ArrowRight } from 'lucide-react'; import Link from 'next/link'; -import SiCTACard from '@/features/modals/siModal/page'; +import { SiCTACard } from '@/features/modals/siModal/page'; export const CtaCards = () => ( <> diff --git a/src/widgets/cabinet/ui/tables/SiTable.tsx b/src/widgets/cabinet/ui/tables/SiTable.tsx index 94b7b07..b9be12a 100644 --- a/src/widgets/cabinet/ui/tables/SiTable.tsx +++ b/src/widgets/cabinet/ui/tables/SiTable.tsx @@ -8,6 +8,7 @@ import { apiRequest } from '@/shared/request/apiRequest'; import { links } from '@/shared/request/links'; import { toast } from 'react-toastify'; import type { SiDocument } from '../../lib/types'; +import { SiButton } from '@/features/modals/siModal/page'; // ─── State badge ─────────────────────────────────────────────────────────────── @@ -181,13 +182,14 @@ export const SiTable: React.FC = () => { return (
-
+

SI detektor

{isLoading ? '...' : `${items.length} ta tekshiruv`}

+