|
|
|
@ -8,6 +8,7 @@ import EditVideoModal from './EditVideoModal'
|
|
|
|
|
import './InfosVideo.css'
|
|
|
|
|
import InfoTab from '../common/InfoTab'
|
|
|
|
|
import HeadlessModal from '../common/HeadlessModal'
|
|
|
|
|
import ClipboardJS from 'clipboard'
|
|
|
|
|
|
|
|
|
|
function useModal(initValue) {
|
|
|
|
|
const [visible, setVisible] = useState(initValue)
|
|
|
|
@ -38,8 +39,10 @@ function usePagination() {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
const PAGE_SIZE = 3
|
|
|
|
|
const DEFAULT_VIDEO_WIDTH_IN_MD = "90%" // 400
|
|
|
|
|
const DEFAULT_VIDEO_HEIGHT_IN_MD = "55%" // 400
|
|
|
|
|
let videoId = {};
|
|
|
|
|
|
|
|
|
|
let _clipboard = null;
|
|
|
|
|
function InfoVideo (props) {
|
|
|
|
|
const [videoes, setVideoes] = useState([])
|
|
|
|
|
const [reviewVideoes, setReviewVideoes] = useState([])
|
|
|
|
@ -52,8 +55,8 @@ function InfoVideo (props) {
|
|
|
|
|
const theme = useContext(ThemeContext);
|
|
|
|
|
const editModalEl = useRef(null);
|
|
|
|
|
const videoEl = useRef(null);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const { showNotification } = props;
|
|
|
|
|
const username = props.match.params.username
|
|
|
|
|
|
|
|
|
|
function fetchVideoes() {
|
|
|
|
@ -107,10 +110,26 @@ function InfoVideo (props) {
|
|
|
|
|
if (videoModalObj.visible == false) {
|
|
|
|
|
// 关闭视频
|
|
|
|
|
videoEl.current && videoEl.current.pause()
|
|
|
|
|
if (_clipboard) {
|
|
|
|
|
_clipboard.destroy();
|
|
|
|
|
_clipboard = null;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
if (!_clipboard) {
|
|
|
|
|
_clipboard = new ClipboardJS('.copybtn');
|
|
|
|
|
_clipboard.on('success', (e) => {
|
|
|
|
|
showNotification('复制成功')
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}, 200)
|
|
|
|
|
}
|
|
|
|
|
}, [videoModalObj.visible])
|
|
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
|
|
|
|
|
}, [])
|
|
|
|
|
|
|
|
|
|
function editSuccess() {
|
|
|
|
|
fetchVideoes()
|
|
|
|
|
}
|
|
|
|
@ -128,11 +147,16 @@ function InfoVideo (props) {
|
|
|
|
|
videoId = {
|
|
|
|
|
videoId: item.id,
|
|
|
|
|
title: item.title,
|
|
|
|
|
file_url: item.file_url
|
|
|
|
|
file_url: item.file_url,
|
|
|
|
|
cover_url: item.cover_url
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
videoModalObj.setVisible(true)
|
|
|
|
|
}
|
|
|
|
|
const _inputValue = `<video src="${videoId.file_url}" controls="true" controlslist="nodownload" width="400">您的浏览器不支持 video 标签。</video>`
|
|
|
|
|
function getCopyText (file_url, cover_url) {
|
|
|
|
|
return `<video src="${file_url}" controls="true" controlslist="nodownload" width="${DEFAULT_VIDEO_WIDTH_IN_MD}" height="${DEFAULT_VIDEO_HEIGHT_IN_MD}" poster="${cover_url}">您的浏览器不支持 video 标签。</video>`
|
|
|
|
|
}
|
|
|
|
|
const _inputValue = getCopyText(videoId.file_url, videoId.cover_url)
|
|
|
|
|
return (
|
|
|
|
|
<div className="educontent infoVideo">
|
|
|
|
|
<EditVideoModal {...props} {...editModalObj}
|
|
|
|
@ -154,7 +178,7 @@ function InfoVideo (props) {
|
|
|
|
|
<Input value={_inputValue}
|
|
|
|
|
className="dark"
|
|
|
|
|
></Input>
|
|
|
|
|
<ActionBtn>复制视频地址</ActionBtn>
|
|
|
|
|
<ActionBtn className="copybtn" data-clipboard-text={_inputValue}>复制视频地址</ActionBtn>
|
|
|
|
|
</div>
|
|
|
|
|
</HeadlessModal>
|
|
|
|
|
<style>{`
|
|
|
|
@ -233,6 +257,7 @@ function InfoVideo (props) {
|
|
|
|
|
key={item.id}
|
|
|
|
|
onEditVideo={onEditVideo}
|
|
|
|
|
onMaskClick={onMaskClick}
|
|
|
|
|
getCopyText={getCopyText}
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
|
</VideoInReviewItem>)
|
|
|
|
|