ActivityVideo.tsx 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import React, { useRef, useEffect } from 'react'
  2. import useRequest from '@ahooksjs/use-request/es'
  3. import { useLogin2p } from 'Login2p/Login2pContext'
  4. import { MicroRoadshowService } from 'Material/MicroRoadshow.service'
  5. import styles from './css/ActivityVideo.module.scss'
  6. export interface IActivityVideo {
  7. VideoDetail?: any // 视频ID
  8. }
  9. /**活动类型列表 */
  10. const ActivityVideo: React.FC<IActivityVideo> = props => {
  11. const { VideoDetail } = props
  12. const videoRef = useRef<HTMLVideoElement>(null)
  13. // 视频播放记录
  14. const { run: applyVideoHistory } = useRequest(MicroRoadshowService.postVideoHistory, {
  15. manual: true
  16. })
  17. const handleOnplay = () => {
  18. videoRef.current &&
  19. parseInt(videoRef.current.currentTime.toString()) === 0 &&
  20. applyVideoHistory(
  21. VideoDetail?.ActivityId || VideoDetail?.Id,
  22. VideoDetail?.Type,
  23. sessionStorage.getItem('invite_code') || ''
  24. )
  25. }
  26. return (
  27. <div className={styles['activity-video-page']}>
  28. <video
  29. ref={videoRef}
  30. src={VideoDetail?.ResourceUrl}
  31. className="video-content"
  32. controls={true}
  33. controlsList="nodownload"
  34. loop={true}
  35. preload="auto"
  36. onContextMenu={e => {
  37. e.preventDefault()
  38. return false
  39. }}
  40. onPlay={handleOnplay}
  41. >
  42. <p> 当前浏览器不支持video标签 </p>
  43. </video>
  44. </div>
  45. )
  46. }
  47. export default ActivityVideo