diff --git a/src/app/components/upload-section-file.tsx b/src/app/components/upload-section-file.tsx
index 234c62b..baadda0 100644
--- a/src/app/components/upload-section-file.tsx
+++ b/src/app/components/upload-section-file.tsx
@@ -340,7 +340,7 @@ export default function UploadSectionFile({ fileType, allowedExtensions, maxFile
{fileType === "image" && (
- {t('image-resolution')}: 100x100 - 10000x10000
+ {t('image-resolution')}: 100x100 - 10000x10000 {t('pixels')}
)}
diff --git a/src/app/ui/marking-page/upload-section-image.tsx b/src/app/ui/marking-page/upload-section-image.tsx
deleted file mode 100644
index fba6005..0000000
--- a/src/app/ui/marking-page/upload-section-image.tsx
+++ /dev/null
@@ -1,278 +0,0 @@
-'use client'
-
-import React, { useRef, useState, useCallback, ChangeEvent, DragEvent } from 'react';
-import {IconShieldAdd} from '@/app/ui/icons/icons';
-
-interface SelectedFile {
- file: File;
- preview: string;
- name: string;
- size: string;
- dimensions?: {
- width: number;
- height: number;
- };
-}
-
-type SupportedFormat = 'image/jpeg' | 'image/png' | 'image/gif' | 'image/bmp';
-type FileExtension = 'jpg' | 'jpeg' | 'png' | 'gif' | 'bmp';
-
-export default function UploadSectionImage() {
- const fileInputRef = useRef(null);
- const [isDragging, setIsDragging] = useState(false);
- const [selectedFile, setSelectedFile] = useState(null);
- const [error, setError] = useState(null);
-
- const SUPPORTED_FORMATS: SupportedFormat[] = [
- 'image/jpeg',
- 'image/png',
- 'image/gif',
- 'image/bmp'
- ];
-
- const ALLOWED_EXTENSIONS: FileExtension[] = ['jpg', 'jpeg', 'png', 'gif', 'bmp'];
-
-
- const validateFile = (file: File): { isValid: boolean; errorMessage?: string } => {
- if (!SUPPORTED_FORMATS.includes(file.type as SupportedFormat)) {
- const extension = file.name.split('.').pop()?.toLowerCase();
- if (!extension || !ALLOWED_EXTENSIONS.includes(extension as FileExtension)) {
- return {
- isValid: false,
- errorMessage: 'Неподдерживаемый формат файла.'
- };
- }
- }
-
- const MAX_SIZE = 10 * 1024 * 1024;
- if (file.size > MAX_SIZE) {
- return {
- isValid: false,
- errorMessage: 'Файл слишком большой. Максимальный размер: 10MB'
- };
- }
-
- return { isValid: true };
- };
-
- const getImageDimensions = (file: File): Promise<{ width: number; height: number }> => {
- return new Promise((resolve, reject) => {
- const img = new Image();
- const objectUrl = URL.createObjectURL(file);
-
- img.onload = () => {
- const dimensions = {
- width: img.width,
- height: img.height
- };
- URL.revokeObjectURL(objectUrl);
- resolve(dimensions);
- };
-
- img.onerror = () => {
- URL.revokeObjectURL(objectUrl);
- reject(new Error('Не удалось загрузить изображение'));
- };
-
- img.src = objectUrl;
- });
- };
-
- const handleFileSelect = useCallback(async (file: File | null): Promise => {
- if (!file) {
- setError(null);
- return;
- }
-
- setError(null);
-
- const validation = validateFile(file);
- if (!validation.isValid) {
- setError(validation.errorMessage || 'Неизвестная ошибка валидации');
- return;
- }
-
- try {
- const dimensions = await getImageDimensions(file);
-
- if (dimensions.width < 150 || dimensions.height < 150 ||
- dimensions.width > 4000 || dimensions.height > 4000) {
- setError(`Размер изображения: ${dimensions.width}x${dimensions.height}. Допустимый диапазон: 150x150 - 4000x4000 пикселей.`);
- return;
- }
-
- const objectUrl = URL.createObjectURL(file);
-
- setSelectedFile({
- file,
- preview: objectUrl,
- name: file.name,
- size: `${(file.size / 1024 / 1024).toFixed(2)} MB`,
- dimensions
- });
-
- console.log('Файл обработан:', {
- name: file.name,
- type: file.type,
- size: file.size,
- dimensions
- });
-
- } catch (err) {
- setError(err instanceof Error ? err.message : 'Ошибка при обработке файла');
- }
- }, []);
-
- const handleFileInputChange = (event: ChangeEvent): void => {
- const file = event.target.files?.[0] || null;
- handleFileSelect(file);
-
- if (fileInputRef.current) {
- fileInputRef.current.value = '';
- }
- };
-
- const handleButtonClick = (): void => {
- if (fileInputRef.current) {
- fileInputRef.current.click();
- }
- };
-
- const handleDragOver = (event: DragEvent): void => {
- event.preventDefault();
- setIsDragging(true);
- };
-
- const handleDragLeave = (): void => {
- setIsDragging(false);
- };
-
- const handleDrop = (event: DragEvent): void => {
- event.preventDefault();
- setIsDragging(false);
-
- const file = event.dataTransfer.files[0];
- handleFileSelect(file);
- };
-
- const handleClearFile = (): void => {
- if (selectedFile) {
- URL.revokeObjectURL(selectedFile.preview);
- }
- setSelectedFile(null);
- setError(null);
- };
-
- React.useEffect(() => {
- return () => {
- if (selectedFile) {
- URL.revokeObjectURL(selectedFile.preview);
- }
- };
- }, [selectedFile]);
-
- return (
-
-
Загрузить изображение для защиты
-
-
-
-
Перетащите изображения сюда
-
или
-
-
-
-
-
- Разрешение изображение: 100x100 - 10000x10000 пикселей
-
-
- Размер файла: до 20 МБ
-
-
- Формат файла: JPG, PNG, GIF, BMP (WEBP НЕ поддерживается)
-
-
- {error && (
-
- )}
-
- {selectedFile && (
-
-
-
- Файл: {selectedFile.name}
-
-
- Размер: {selectedFile.size}
-
-
- Стоимость защиты: 0
-
-
- Текущий баланс: 0
-
-
-
-

setError('Не удалось загрузить превью изображения')}
- />
-
-
-
-
-
-
- )}
-
-
- );
-}
\ No newline at end of file