add endpoins for dashboard-files-info

This commit is contained in:
smanylov
2026-01-14 12:23:07 +07:00
parent afb6bf1760
commit e4d6df71a1
3 changed files with 77 additions and 42 deletions
@@ -1,82 +1,109 @@
'use client'
import { useTranslations } from 'next-intl';
import { useQuery } from '@tanstack/react-query';
import { getUserFilesInfo } from '@/app/actions/action';
import {convertBytes} from '@/app/lib/convertBytes';
export default function DashboardFilesInfo() { export default function DashboardFilesInfo() {
const t = useTranslations("Global");
const {
data: filesInfo,
isLoading,
isError,
error,
} = useQuery({
queryKey: ['userFilesInfo'],
queryFn: getUserFilesInfo,
});
return ( return (
<div className="dashboard-files-info"> <div className="dashboard-files-info">
<div className="type-card images" data-icon="🖼️"> <div className="type-card images">
<div className="stat-type">ИЗОБРАЖЕНИЯ</div> <div className="stat-type">
<div className="stat-value">235</div> {t('images')}
<div className="stat-label">Ваши изображения</div> </div>
<div className="stat-value">{filesInfo.images_quantity ? filesInfo.images_quantity : 0}</div>
<div className="stat-label">{t('your-image')}</div>
<div className="type-card-stats"> <div className="type-card-stats">
<div className="type-card-stat-row"> <div className="type-card-stat-row">
<span className="type-card-stat-label">💾 Размер</span> <span className="type-card-stat-label">{t('size')}</span>
<span className="type-card-stat-value">340.5 МБ</span> <span className="type-card-stat-value">{filesInfo.images_size ? convertBytes(filesInfo.images_size) : 0}</span>
</div> </div>
<div className="type-card-stat-row"> <div className="type-card-stat-row">
<span className="type-card-stat-label">🛡 Защищено</span> <span className="type-card-stat-label">{t('checks')}</span>
<span className="type-card-stat-value">233 файлов</span> <span className="type-card-stat-value">{filesInfo.images_check ? filesInfo.images_check : 0}</span>
</div> </div>
<div className="type-card-stat-row"> <div className="type-card-stat-row">
<span className="type-card-stat-label"> Нарушений</span> <span className="type-card-stat-label">{t('violations')}</span>
<span className="type-card-stat-value">504</span> <span className="type-card-stat-value">{filesInfo.images_violations ? filesInfo.images_violations : 0}</span>
</div> </div>
</div> </div>
</div> </div>
<div className="type-card videos" data-icon="🎬"> <div className="type-card videos">
<div className="stat-type">ВИДЕО</div> <div className="stat-type">
<div className="stat-value">25</div> {t('videos')}
<div className="stat-label">Ваш видео контент</div> </div>
<div className="stat-value">{filesInfo.videos_quantity ? filesInfo.videos_quantity : 0}</div>
<div className="stat-label">{t('your-videos')}</div>
<div className="type-card-stats"> <div className="type-card-stats">
<div className="type-card-stat-row"> <div className="type-card-stat-row">
<span className="type-card-stat-label">💾 Размер</span> <span className="type-card-stat-label">{t('size')}</span>
<span className="type-card-stat-value">196.9 МБ</span> <span className="type-card-stat-value">{filesInfo.videos_size ? convertBytes(filesInfo.videos_size) : 0}</span>
</div> </div>
<div className="type-card-stat-row"> <div className="type-card-stat-row">
<span className="type-card-stat-label">🛡 Защищено</span> <span className="type-card-stat-label">{t('checks')}</span>
<span className="type-card-stat-value">23 файлов</span> <span className="type-card-stat-value">{filesInfo.videos_check ? filesInfo.videos_check : 0}</span>
</div> </div>
<div className="type-card-stat-row"> <div className="type-card-stat-row">
<span className="type-card-stat-label"> Нарушений</span> <span className="type-card-stat-label">{t('violations')}</span>
<span className="type-card-stat-value">0</span> <span className="type-card-stat-value">{filesInfo.videos_violations ? filesInfo.videos_violations : 0}</span>
</div> </div>
</div> </div>
</div> </div>
<div className="type-card audio" data-icon="🎵"> <div className="type-card audio">
<div className="stat-type">АУДИО</div> <div className="stat-type">
<div className="stat-value">43</div> {t('audios')}
<div className="stat-label">Ваш аудио контент</div> </div>
<div className="stat-value">{filesInfo.audios_quantity ? filesInfo.audios_quantity : 0}</div>
<div className="stat-label">{t('your-audios')}</div>
<div className="type-card-stats"> <div className="type-card-stats">
<div className="type-card-stat-row"> <div className="type-card-stat-row">
<span className="type-card-stat-label">💾 Размер</span> <span className="type-card-stat-label">{t('size')}</span>
<span className="type-card-stat-value">223.7 МБ</span> <span className="type-card-stat-value">{filesInfo.audios_size ? convertBytes(filesInfo.audios_size) : 0}</span>
</div> </div>
<div className="type-card-stat-row"> <div className="type-card-stat-row">
<span className="type-card-stat-label">🛡 Защищено</span> <span className="type-card-stat-label">{t('checks')}</span>
<span className="type-card-stat-value">36 файлов</span> <span className="type-card-stat-value">{filesInfo.audios_check ? filesInfo.audios_check : 0}</span>
</div> </div>
<div className="type-card-stat-row"> <div className="type-card-stat-row">
<span className="type-card-stat-label"> Нарушений</span> <span className="type-card-stat-label">{t('violations')}</span>
<span className="type-card-stat-value">0</span> <span className="type-card-stat-value">{filesInfo.audios_violations ? filesInfo.audios_violations : 0}</span>
</div> </div>
</div> </div>
</div> </div>
<div className="type-card scripts" data-icon="📄"> <div className="type-card scripts">
<div className="stat-type">PDF-ФАЙЛЫ</div> <div className="stat-type">
<div className="stat-value">73</div> {t('documents')}
<div className="stat-label">Ваши PDF-файлы</div> </div>
<div className="stat-value">{filesInfo.documents_quantity ? filesInfo.documents_quantity : 0}</div>
<div className="stat-label">{t('your-documents')}</div>
<div className="type-card-stats"> <div className="type-card-stats">
<div className="type-card-stat-row"> <div className="type-card-stat-row">
<span className="type-card-stat-label">💾 Размер</span> <span className="type-card-stat-label">{t('size')}</span>
<span className="type-card-stat-value">28.9 МБ</span> <span className="type-card-stat-value">{filesInfo.documents_check ? convertBytes(filesInfo.documents_check) : 0}</span>
</div> </div>
<div className="type-card-stat-row"> <div className="type-card-stat-row">
<span className="type-card-stat-label">🛡 Защищено</span> <span className="type-card-stat-label">{t('checks')}</span>
<span className="type-card-stat-value">70 файлов</span> <span className="type-card-stat-value">{filesInfo.documents_check ? filesInfo.documents_check : 0}</span>
</div> </div>
<div className="type-card-stat-row"> <div className="type-card-stat-row">
<span className="type-card-stat-label"> Нарушений</span> <span className="type-card-stat-label">{t('violations')}</span>
<span className="type-card-stat-value">0</span> <span className="type-card-stat-value">{filesInfo.documents_violations ? filesInfo.documents_violations : 0}</span>
</div> </div>
</div> </div>
</div> </div>
+5 -1
View File
@@ -162,7 +162,11 @@
"failed-to-download-file": "Failed to download file", "failed-to-download-file": "Failed to download file",
"file-is-downloading": "The file is downloading", "file-is-downloading": "The file is downloading",
"status": "status", "status": "status",
"refferal-program": "Referral program" "refferal-program": "Referral program",
"your-image": "Your images",
"your-videos": "Your videos",
"your-audios": "Your audios",
"your-documents": "Your documents"
}, },
"Login-register-form": { "Login-register-form": {
"and": "and", "and": "and",
+5 -1
View File
@@ -162,7 +162,11 @@
"failed-to-download-file": "Не удалось скачать файл", "failed-to-download-file": "Не удалось скачать файл",
"file-is-downloading": "Скачивается файл", "file-is-downloading": "Скачивается файл",
"status": "статус", "status": "статус",
"refferal-program": "Реферальная программа" "refferal-program": "Реферальная программа",
"your-image": "Ваши изображения",
"your-videos": "Ваш видео",
"your-audios": "Ваш аудио",
"your-documents": "Ваши документы"
}, },
"Login-register-form": { "Login-register-form": {
"and": "и", "and": "и",