diff --git a/src/components/LinkedItems.tsx b/src/components/LinkedItems.tsx index 8817dc8..55cb0d8 100644 --- a/src/components/LinkedItems.tsx +++ b/src/components/LinkedItems.tsx @@ -4,10 +4,12 @@ import ExpandMoreIcon from '@mui/icons-material/ExpandMore' import {axiosInstance} from '../providers/data' import {BACKEND_URL} from '../lib/constants' import {Link} from 'react-router' +import {TOKEN_KEY} from '../authProvider' type Field = { label: string data: keyof T + render?: (value: any) => React.ReactNode } type ExtraFieldConfig = { @@ -163,7 +165,7 @@ export const LinkedItems = ({parentI {childResource === 'media' && item.id && ( {String(item.media_name)}({parentI }} /> )} - {fields.map(({label, data}) => ( + {fields.map(({label, data, render}) => ( - {label}: {item[data]} + {label}: {render ? render(item[data]) : item[data]} ))} {type === 'edit' && ( diff --git a/src/pages/article/types.ts b/src/pages/article/types.ts index 86f1993..217342d 100644 --- a/src/pages/article/types.ts +++ b/src/pages/article/types.ts @@ -1,3 +1,5 @@ +import {MEDIA_TYPES} from '../../lib/constants' + export type MediaItem = { id: number filename: string @@ -25,5 +27,9 @@ export const articleFields: Array> = [ export const mediaFields: Array> = [ {label: 'Название', data: 'media_name'}, - {label: 'Тип', data: 'media_type'}, + { + label: 'Тип', + data: 'media_type', + render: (value: number) => MEDIA_TYPES.find((type) => type.value === value)?.label || value, + }, ] diff --git a/src/pages/carrier/show.tsx b/src/pages/carrier/show.tsx index 0dc5d12..78daa73 100644 --- a/src/pages/carrier/show.tsx +++ b/src/pages/carrier/show.tsx @@ -1,6 +1,7 @@ import {Box, Stack, Typography} from '@mui/material' import {useShow} from '@refinedev/core' import {Show, TextFieldComponent as TextField} from '@refinedev/mui' +import {TOKEN_KEY} from '../../authProvider' export type FieldType = { label: string @@ -34,7 +35,11 @@ export const CarrierShow = () => { render: (value: string) => {value}, }, {label: 'Слоган', data: 'slogan'}, - {label: 'Логотип', data: 'logo', render: (value: number) => {String(value)}}, + { + label: 'Логотип', + data: 'logo', + render: (value: number) => {String(value)}, + }, ] return ( diff --git a/src/pages/city/show.tsx b/src/pages/city/show.tsx index 1672100..a5c20b0 100644 --- a/src/pages/city/show.tsx +++ b/src/pages/city/show.tsx @@ -1,6 +1,7 @@ import {Stack, Typography} from '@mui/material' import {useShow} from '@refinedev/core' import {Show, TextFieldComponent as TextField} from '@refinedev/mui' +import {TOKEN_KEY} from '../../authProvider' export const CityShow = () => { const {query} = useShow({}) @@ -13,7 +14,7 @@ export const CityShow = () => { {label: 'Название', data: 'name'}, // {label: 'Код страны', data: 'country_code'}, {label: 'Страна', data: 'country'}, - {label: 'Герб', data: 'arms', render: (value: number) => {String(value)}}, + {label: 'Герб', data: 'arms', render: (value: number) => {String(value)}}, ] return ( diff --git a/src/pages/media/edit.tsx b/src/pages/media/edit.tsx index f4ebd6f..732eb4e 100644 --- a/src/pages/media/edit.tsx +++ b/src/pages/media/edit.tsx @@ -7,6 +7,7 @@ import {Controller} from 'react-hook-form' import {MEDIA_TYPES} from '../../lib/constants' import {ALLOWED_IMAGE_TYPES, ALLOWED_VIDEO_TYPES, useMediaFileUpload} from '../../components/media/MediaFormUtils' +import {TOKEN_KEY} from '../../authProvider' type MediaFormValues = { media_name: string @@ -49,7 +50,7 @@ export const MediaEdit = () => { useEffect(() => { if (record?.id) { - setPreviewUrl(`https://wn.krbl.ru/media/${record.id}/download`) + setPreviewUrl(`https://wn.krbl.ru/media/${record.id}/download?token=${localStorage.getItem(TOKEN_KEY)}`) setValue('media_name', record?.media_name || '') setValue('media_type', record?.media_type) } diff --git a/src/pages/media/show.tsx b/src/pages/media/show.tsx index a8b6ec2..be4aa2b 100644 --- a/src/pages/media/show.tsx +++ b/src/pages/media/show.tsx @@ -1,14 +1,16 @@ -import {Stack, Typography} from '@mui/material' +import {Stack, Typography, Box, Button} from '@mui/material' import {useShow} from '@refinedev/core' import {Show, TextFieldComponent as TextField} from '@refinedev/mui' import {MEDIA_TYPES} from '../../lib/constants' +import {TOKEN_KEY} from '../../authProvider' export const MediaShow = () => { const {query} = useShow({}) const {data, isLoading} = query const record = data?.data + const token = localStorage.getItem(TOKEN_KEY) const fields = [ // {label: 'Название файла', data: 'filename'}, @@ -24,7 +26,43 @@ export const MediaShow = () => { return ( - {record && {record?.filename}} + {record && record.media_type === 1 && ( + {record?.filename} + )} + + {record && record.media_type === 2 && ( + + + Видео доступно для скачивания по ссылке: + + + + )} {fields.map(({label, data, render}) => (