import { BaseEventOrig, Image, Input, InputProps, Text } from '@tarojs/components'; import { navigateTo } from '@/utils/route'; import Taro from '@tarojs/taro'; import { Checkbox } from '@taroify/core'; import { useCallback } from 'react'; import { MaterialVideoInfo } from '@/types/material'; import { logWithPrefix, isDesktop } from '@/utils/common'; import { PageUrl } from '@/constants/app'; import './index.less'; interface IProps { isTemp?: boolean; videoInfo: MaterialVideoInfo; onClickUpload?: () => void; onClickDelete?: () => void; onClickSetDefault?: () => void; onTitleChange?: (newTitle: string) => void; } const PREFIX = 'material-video-card'; const log = logWithPrefix(PREFIX); function MaterialVideoCard(props: IProps) { const { videoInfo, isTemp = false, onClickUpload, onClickDelete, onClickSetDefault, onTitleChange } = props; const isVideo = videoInfo.type === 'video'; const handleInput = useCallback( (e: BaseEventOrig) => { const value = e.detail?.value || ''; log('handleInput value', value); onTitleChange?.(value); }, [onTitleChange] ); // const handleInputBlurOrConfirm = useCallback(() => { // log('newVideoTitle', title); // if (!title) { // return; // } // onTitleChange?.(videoInfo); // // ... // }, [title, videoInfo, onTitleChange]); const handleCheckboxChange = useCallback( (checked: boolean) => { log('handleCheckboxChange', checked); if (videoInfo.isDefault) { return; } // ... onClickSetDefault?.(); }, [videoInfo, onClickSetDefault] ); const handleClickVideo = useCallback(() => { log('handleClickVideo', videoInfo); if (!videoInfo.url) { return; } if (isDesktop) { navigateTo(PageUrl.MaterialWebview, { source: encodeURIComponent(videoInfo.url) }) } else { Taro.previewMedia({ sources: [{ url: videoInfo.url, type: videoInfo.type }], }); } }, [videoInfo]); return (
{!isTemp && ( <> {isVideo && ( )} )} {isTemp && (
)}
{!isTemp && ( <>
选为封面
删除
)} {isTemp && ( {`视频不能超过1000M 视频若太大加载较慢,请耐心等待`} )}
); } export default MaterialVideoCard;