diff --git a/src/widgets/detail/ui/components/Header.tsx b/src/widgets/detail/ui/components/Header.tsx
index 98470b2..acc4d09 100644
--- a/src/widgets/detail/ui/components/Header.tsx
+++ b/src/widgets/detail/ui/components/Header.tsx
@@ -1,3 +1,5 @@
+'use client';
+import { useTranslations } from 'next-intl';
import { blue } from '../../lib/constant';
import { PlagiatData } from '../../lib/types';
@@ -21,6 +23,7 @@ export default function Header({
location,
checkedAt,
}: Props) {
+ const t = useTranslations('PlagiatResult');
return (
- {plagiarismPercent}% plagiat
+ {plagiarismPercent}% {t('plagiat').toLowerCase()}
@@ -50,7 +53,7 @@ export default function Header({
- Tekshirilgan
+ {t('checked')}
{checkedAt}
diff --git a/src/widgets/detail/ui/components/TopMetrics.tsx b/src/widgets/detail/ui/components/TopMetrics.tsx
index 49a1145..e58778a 100644
--- a/src/widgets/detail/ui/components/TopMetrics.tsx
+++ b/src/widgets/detail/ui/components/TopMetrics.tsx
@@ -1,3 +1,5 @@
+'use client';
+import { useTranslations } from 'next-intl';
import { PlagiatData } from '../../lib/types';
import MetricCard from './Metriccard';
@@ -12,12 +14,16 @@ export default function TopMetrics({
originalityPercent,
citationPercent,
}: Props) {
+ const t = useTranslations('PlagiatResult');
return (
-
-
-
-
+
+
+
+
);
}
diff --git a/src/widgets/detail/ui/index.tsx b/src/widgets/detail/ui/index.tsx
index 2d14174..62cfdb7 100644
--- a/src/widgets/detail/ui/index.tsx
+++ b/src/widgets/detail/ui/index.tsx
@@ -145,26 +145,6 @@ function Skeleton() {
);
}
-// ─── Error state ──────────────────────────────────────────────────────────────
-
-function ErrorState() {
- return (
-
-
-
- Ma'lumot topilmadi
-
-
- Ushbu tekshiruv mavjud emas yoki o'chirilgan
-
-
-
- );
-}
-
// ─── Component ────────────────────────────────────────────────────────────────
export default function PlagiatResult({ id }: { id: number }) {
@@ -186,7 +166,22 @@ export default function PlagiatResult({ id }: { id: number }) {
});
if (isLoading) return
;
- if (isError || !rawData) return
;
+ if (isError || !rawData)
+ return (
+
+
+
+ Ma'lumot topilmadi
+
+
+ Ushbu tekshiruv mavjud emas yoki o'chirilgan
+
+
+
+ );
const data: PlagiatData = transformResponse(rawData);
diff --git a/src/widgets/history/ui/historyPage.tsx b/src/widgets/history/ui/historyPage.tsx
index b486613..fd58cb9 100644
--- a/src/widgets/history/ui/historyPage.tsx
+++ b/src/widgets/history/ui/historyPage.tsx
@@ -30,7 +30,7 @@ const PageHeader: React.FC = () => {
>
- Plagiat tekshiruvi
+ {t('plagiatCheck')}
diff --git a/src/widgets/home/index.tsx b/src/widgets/home/index.tsx
index dc2bc1a..28316d4 100644
--- a/src/widgets/home/index.tsx
+++ b/src/widgets/home/index.tsx
@@ -1,10 +1,20 @@
'use client';
+import { useEffect } from 'react';
import Hero from './components/Hero';
import InfoSection from './components/InfoSection';
import StepsSection from './components/StepsSection';
import Ticker from './components/Ticker';
+import { useRouter } from '@/shared/config/i18n/navigation';
const PlagiarismLanding = () => {
+ const route = useRouter();
+ useEffect(() => {
+ const data = localStorage.getItem('user');
+
+ if (data) {
+ route.push('/plagat');
+ }
+ }, []);
return (
<>
diff --git a/src/widgets/plagiatCheck/lib/types.ts b/src/widgets/plagiatCheck/lib/types.ts
index c53f885..9d32cac 100644
--- a/src/widgets/plagiatCheck/lib/types.ts
+++ b/src/widgets/plagiatCheck/lib/types.ts
@@ -35,7 +35,7 @@ export interface PlagiarismFormState {
file: File | null;
certificate: boolean;
text?: string;
- type: string;
+ type: number;
}
export type PlagiarismFormErrors = Partial<
diff --git a/src/widgets/plagiatCheck/lib/usePlagiraism.ts b/src/widgets/plagiatCheck/lib/usePlagiraism.ts
index 8f665c3..b37d3b3 100644
--- a/src/widgets/plagiatCheck/lib/usePlagiraism.ts
+++ b/src/widgets/plagiatCheck/lib/usePlagiraism.ts
@@ -21,7 +21,7 @@ const INITIAL_FORM: PlagiarismFormState = {
file: null,
certificate: true,
text: '',
- type: 'boshqa',
+ type: 0,
};
const PRICE: PriceCalculate = {
@@ -71,6 +71,7 @@ export function usePlagiarismForm() {
const priceInfo: PriceCalculate = {
total_price: resdata?.total_price || 0,
discount: resdata?.discount || 0,
+ certificate: resdata?.certificate || 0,
service_fee: resdata?.service_fee || 0,
};
setPrices(priceInfo);
@@ -90,7 +91,7 @@ export function usePlagiarismForm() {
const payment = useMutation({
mutationKey: ['payload'],
mutationFn: ({ order_id }: { order_id: number }) =>
- apiRequest<{ payment_link: string }>('POST', links.payment(order_id)),
+ apiRequest<{ payment_link: string }>('POST', links.demo_pay(order_id)),
onSuccess: (res) => {
console.log('payment res: ', res);
window.open(res.data.payment_link, '_self');
@@ -116,9 +117,9 @@ export function usePlagiarismForm() {
setErrors((prev) => ({ ...prev, file: undefined }));
}, []);
- const setOption = useCallback((option: string) => {
- setForm((prev) => ({ ...prev, document_type: option }));
- setErrors((prev) => ({ ...prev, document_type: undefined }));
+ const setOption = useCallback((option: number) => {
+ setForm((prev) => ({ ...prev, type: option }));
+ setErrors((prev) => ({ ...prev, type: undefined }));
}, []);
const toggleCertificate = useCallback(() => {
@@ -150,7 +151,7 @@ export function usePlagiarismForm() {
fd.append('text', form.text || '');
fd.append('file', form.file!);
fd.append('certificate', String(form.certificate));
- fd.append('type', form.type);
+ fd.append('type', String(form.type));
console.log('sended data: ', fd);
checkdocumentRequest.mutate(fd);
},
diff --git a/src/widgets/plagiatCheck/ui/documentsType.tsx b/src/widgets/plagiatCheck/ui/documentsType.tsx
index 8954552..6e5e92a 100644
--- a/src/widgets/plagiatCheck/ui/documentsType.tsx
+++ b/src/widgets/plagiatCheck/ui/documentsType.tsx
@@ -1,5 +1,6 @@
'use client';
import React from 'react';
+import { useTranslations } from 'next-intl';
import { FieldWrapper } from './Plagiraismui';
import { useQuery } from '@tanstack/react-query';
import { apiRequest } from '@/shared/request/apiRequest';
@@ -12,8 +13,8 @@ type DocumentType = {
};
interface DocumentsTypesProps {
- value: string;
- onChange: (value: string) => void;
+ value: number;
+ onChange: (value: number) => void;
disabled?: boolean;
}
@@ -22,6 +23,7 @@ export default function DocumentsTypes({
onChange,
disabled,
}: DocumentsTypesProps) {
+ const t = useTranslations('DocumentTypes');
const { data, isLoading } = useQuery({
queryKey: ['document_types'],
queryFn: (): Promise
=>
@@ -30,20 +32,24 @@ export default function DocumentsTypes({
),
});
+ const selected = data?.find((item) => item.id === value);
+
return (
-
+