onedrive/components/previews/VideoPreview.tsx

75 lines
2.3 KiB
TypeScript
Raw Normal View History

2021-06-24 13:54:59 +00:00
import { FunctionComponent } from 'react'
import ReactPlayer from 'react-player'
import { useRouter } from 'next/router'
import { useClipboard } from 'use-clipboard-copy'
import toast, { Toaster } from 'react-hot-toast'
2021-06-24 13:54:59 +00:00
import { getBaseUrl } from '../../utils/getBaseUrl'
import { DownloadButton } from '../DownloadBtnGtoup'
2021-06-25 14:15:00 +00:00
const VideoPreview: FunctionComponent<{ file: any }> = ({ file }) => {
const { asPath } = useRouter()
const clipboard = useClipboard()
2021-06-24 13:54:59 +00:00
return (
2021-06-25 14:15:00 +00:00
<>
2021-12-17 06:35:24 +00:00
<div className="dark:bg-gray-900 p-3 bg-white rounded">
<ReactPlayer
className="aspect-video"
url={file['@microsoft.graph.downloadUrl']}
controls
width="100%"
height="100%"
config={{ file: { forceVideo: true } }}
/>
2021-06-25 14:15:00 +00:00
</div>
<div className="flex flex-wrap justify-center mt-4 gap-2">
<Toaster />
<DownloadButton
onClickCallback={() => window.open(file['@microsoft.graph.downloadUrl'])}
btnColor="blue"
btnText="Download"
btnIcon="file-download"
/>
<DownloadButton
onClickCallback={() =>
window.open(`/api/proxy?url=${encodeURIComponent(file['@microsoft.graph.downloadUrl'])}`)
}
2021-12-29 07:26:04 +00:00
btnColor="teal"
btnText="Proxy download"
btnIcon="download"
/>
<DownloadButton
onClickCallback={() => {
clipboard.copy(`${getBaseUrl()}/api?path=${asPath}&raw=true`)
toast.success('Copied direct link to clipboard.')
}}
btnColor="yellow"
btnText="Copy direct link"
btnIcon="copy"
/>
<DownloadButton
onClickCallback={() => window.open(`iina://weblink?url=${file['@microsoft.graph.downloadUrl']}`)}
btnText="IINA"
btnImage="/players/iina.png"
/>
<DownloadButton
onClickCallback={() => window.open(`vlc://${file['@microsoft.graph.downloadUrl']}`)}
btnText="VLC"
btnImage="/players/vlc.png"
/>
<DownloadButton
onClickCallback={() => window.open(`potplayer://${file['@microsoft.graph.downloadUrl']}`)}
btnText="PotPlayer"
btnImage="/players/potplayer.png"
/>
2021-06-24 13:54:59 +00:00
</div>
2021-06-25 14:15:00 +00:00
</>
2021-06-24 13:54:59 +00:00
)
}
export default VideoPreview