add type interface, fix date formate, add translation for tokens error

This commit is contained in:
smanylov
2026-02-26 12:53:27 +07:00
parent 64d606a791
commit 6990f78f69
5 changed files with 35 additions and 14 deletions
+15 -2
View File
@@ -16,8 +16,21 @@ export interface SearchItem {
pageUrl: string
}
export interface FileInfo {
fileId: string,
fileSize: number,
hammingDistance: number,
originalFileName: string,
ownerId: number,
similarityLevel: string,
status: string,
supportId: number,
uploadDate: string,
url: string
}
export function FileSearchPanel({ fileId, ref, allowedExtensions }: { fileId: string | null, ref: any, allowedExtensions: AllowedExtensions }) {
const [searchedUserFiles, setSearchedUserFiles] = useState<string[]>([]);
const [searchedUserFiles, setSearchedUserFiles] = useState<FileInfo[]>([]);
const [searchedUserFilesShowNull, setSearchedUserFilesShowNull] = useState<boolean>(false);
const [searchedGlobalFiles, setSearchedGlobalFiles] = useState<SearchItem[]>([]);
const [searchedGlobalFilesShowNull, setSearchedGlobalFilesShowNull] = useState<boolean>(false);
@@ -53,7 +66,7 @@ export function FileSearchPanel({ fileId, ref, allowedExtensions }: { fileId: st
if (result.content.length) {
setSearchedUserFiles(result.content);
setShowGlobalSearch(true);
handlerSearchGlobalFile(fileId, page)
handlerSearchGlobalFile(fileId, page);
} else {
setSearchedUserFilesShowNull(true);
}
@@ -7,8 +7,10 @@ import { IconEye, IconDownload } from '@/app/ui/icons/icons';
import { getFileType } from '@/app/lib/getFileType';
import { AllowedExtensions } from '@/app/ui/search/section-search-file';
import { FileTypeIcon } from '@/app/components/FileTypeIcon';
import { formatDate } from '@/app/lib/formatDate';
import { FileInfo } from './file-search-panel';
export function SearchedUserFilesList({ list, allowedExtensions }: { list: string[], allowedExtensions: AllowedExtensions }) {
export function SearchedUserFilesList({ list, allowedExtensions }: { list: FileInfo[], allowedExtensions: AllowedExtensions }) {
const [isFileLoading, setIsFileLoading] = useState(false);
const [openWindow, setOpenWindow] = useState<boolean>(false);
const [openWindowChildren, setOpenWindowChildren] = useState<ReactNode>(null);
@@ -41,7 +43,7 @@ export function SearchedUserFilesList({ list, allowedExtensions }: { list: strin
}
};
const handlerViewfile = async (e: any, fileType: string) => {
const handlerViewfile = async (e: FileInfo, fileType: string) => {
setOpenWindowChildren(() => {
return (
<div
@@ -83,7 +85,7 @@ export function SearchedUserFilesList({ list, allowedExtensions }: { list: strin
<div className="info-item">
<span className="info-label">Дата загрузки:</span>
<span className="info-value">
{e.uploadDate ? e.uploadDate : '#'}
{e.uploadDate ? formatDate(e.uploadDate) : '#'}
</span>
</div>
<div className="info-item">
@@ -95,7 +97,7 @@ export function SearchedUserFilesList({ list, allowedExtensions }: { list: strin
<div className="info-item">
<span className="info-label">Статус защиты:</span>
<span className="info-value">
{e.status ? e.status : '#'}
{e.status ? t(e.status) : '#'}
</span>
</div>
</div>
@@ -121,7 +123,8 @@ export function SearchedUserFilesList({ list, allowedExtensions }: { list: strin
<div
className="results-list"
>
{list.map((e: any, index: number) => {
{list.map((e: FileInfo, index: number) => {
console.log(e);
const fileType = getFileType(e.originalFileName, allowedExtensions);
if (e.similarityLevel !== 'DIFFERENT') {
@@ -148,7 +151,7 @@ export function SearchedUserFilesList({ list, allowedExtensions }: { list: strin
{e.originalFileName}
</div>
<div className="result-details">
Загружен: {e.uploadDate ? e.uploadDate : '#'}
Загружен: {e.uploadDate ? formatDate(e.uploadDate) : '#'}
Размер: {convertBytes(e.fileSize)}
</div>
</div>
+7 -4
View File
@@ -1,4 +1,5 @@
import { IconImageFile, IconVideoFile, IconAudioFile, IconDocument } from '@/app/ui/icons/icons';
import { useTranslations } from 'next-intl';
interface supportedFormats {
extensionVideo: string[]
@@ -8,6 +9,8 @@ interface supportedFormats {
}
export function SupportedFormats({ extensionVideo, extensionAudio, extensionImage, extensionDocument }: supportedFormats) {
const t = useTranslations('Global');
return (
<div className="supported-formats">
<div className="formats-title">
@@ -16,7 +19,7 @@ export function SupportedFormats({ extensionVideo, extensionAudio, extensionImag
<div className="format-group">
<div className="format-type image">
<IconImageFile /> Изображения
<IconImageFile /> {t('images')}
</div>
<div className="format-list">
{extensionImage.join(', ')}
@@ -25,7 +28,7 @@ export function SupportedFormats({ extensionVideo, extensionAudio, extensionImag
<div className="format-group">
<div className="format-type video">
<IconVideoFile /> Видео
<IconVideoFile /> {t('videos')}
</div>
<div className="format-list">
{extensionVideo.join(', ')}
@@ -34,7 +37,7 @@ export function SupportedFormats({ extensionVideo, extensionAudio, extensionImag
<div className="format-group">
<div className="format-type audio">
<IconAudioFile /> Аудио
<IconAudioFile /> {t('audios')}
</div>
<div className="format-list">
{extensionAudio.join(', ')}
@@ -43,7 +46,7 @@ export function SupportedFormats({ extensionVideo, extensionAudio, extensionImag
<div className="format-group">
<div className="format-type document">
<IconDocument /> Документы
<IconDocument /> {t('documents')}
</div>
<div className="format-list">
{extensionDocument.join(', ')}
+2 -1
View File
@@ -275,7 +275,8 @@
"error-save": "Error saving",
"method": "Method",
"processed": "Processed",
"request-date": "Request date"
"request-date": "Request date",
"user-not-have-tokens-for-protect": "The user does not have any tokens for protection."
},
"Login-register-form": {
"and": "and",
+2 -1
View File
@@ -275,7 +275,8 @@
"error-save": "Ошибка при сохранении",
"method": "Способ",
"processed": "Обработано",
"request-date": "Дата запроса"
"request-date": "Дата запроса",
"user-not-have-tokens-for-protect": "У пользователя нет токенов для защиты"
},
"Login-register-form": {
"and": "и",