2022-08-22 16:51:23 +08:00
|
|
|
import { resizeImage } from '@/web/utils/common'
|
2022-10-28 20:29:04 +08:00
|
|
|
import Image from '@/web/components/Image'
|
2023-03-03 03:12:27 +08:00
|
|
|
import { memo, useEffect, useState } from 'react'
|
2022-08-03 23:48:39 +08:00
|
|
|
import uiStates from '@/web/states/uiStates'
|
2023-01-07 14:39:03 +08:00
|
|
|
import VideoCover from '@/web/components/VideoCover'
|
2023-03-03 03:12:27 +08:00
|
|
|
import ArtworkViewer from '../ArtworkViewer'
|
|
|
|
import useSettings from '@/web/hooks/useSettings'
|
2022-08-03 23:48:39 +08:00
|
|
|
|
2023-03-03 03:12:27 +08:00
|
|
|
const Cover = memo(({ cover, videoCover }: { cover?: string; videoCover?: string }) => {
|
|
|
|
useEffect(() => {
|
|
|
|
if (cover) uiStates.blurBackgroundImage = cover
|
|
|
|
}, [cover])
|
2022-08-03 23:48:39 +08:00
|
|
|
|
2023-03-03 03:12:27 +08:00
|
|
|
const [isOpenArtworkViewer, setIsOpenArtworkViewer] = useState(false)
|
2022-08-03 23:48:39 +08:00
|
|
|
|
2023-03-03 03:12:27 +08:00
|
|
|
return (
|
|
|
|
<>
|
|
|
|
<div
|
|
|
|
onClick={() => {
|
|
|
|
if (cover) setIsOpenArtworkViewer(true)
|
|
|
|
}}
|
|
|
|
className='relative aspect-square w-full overflow-hidden rounded-24'
|
|
|
|
>
|
|
|
|
<Image className='absolute inset-0' src={resizeImage(cover || '', 'lg')} />
|
|
|
|
|
|
|
|
{videoCover && <VideoCover source={videoCover} />}
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<ArtworkViewer
|
|
|
|
type='album'
|
|
|
|
artwork={cover || ''}
|
|
|
|
isOpen={isOpenArtworkViewer}
|
|
|
|
onClose={() => setIsOpenArtworkViewer(false)}
|
|
|
|
/>
|
|
|
|
</>
|
|
|
|
)
|
|
|
|
})
|
2022-08-03 23:48:39 +08:00
|
|
|
Cover.displayName = 'Cover'
|
|
|
|
|
|
|
|
export default Cover
|