import { Video , VideoPlaylist } from '../../models' ; import { secondsToTime } from './date' ; function buildPlaylistLink ( playlist , base ? ) { return ( base ?? window . location . origin ) + buildPlaylistWatchPath ( playlist ) ; } function buildPlaylistWatchPath ( playlist ) { return '/w/p/' + playlist . shortUUID ; } function buildVideoWatchPath ( video ) { return '/w/' + video . shortUUID ; } function buildVideoLink ( video , base ? ) { return ( base ?? window . location . origin ) + buildVideoWatchPath ( video ) ; } function buildPlaylistEmbedPath ( playlist ) { return '/video-playlists/embed/' + playlist . uuid ; } function buildPlaylistEmbedLink ( playlist , base ? ) { return ( base ?? window . location . origin ) + buildPlaylistEmbedPath ( playlist ) ; } function buildVideoEmbedPath ( video ) { return '/videos/embed/' + video . uuid ; } function buildVideoEmbedLink ( video , base ? ) { return ( base ?? window . location . origin ) + buildVideoEmbedPath ( video ) ; } function decorateVideoLink ( options ) { const { url } = options ; const params = new URLSearchParams ( ) ; if ( options . startTime !== undefined && options . startTime !== null ) { const startTimeInt = Math . floor ( options . startTime ) ; params . set ( 'start' , secondsToTime ( startTimeInt ) ) ; } if ( options . stopTime ) { const stopTimeInt = Math . floor ( options . stopTime ) ; params . set ( 'stop' , secondsToTime ( stopTimeInt ) ) ; } if ( options . subtitle ) params . set ( 'subtitle' , options . subtitle ) ; if ( options . loop === true ) params . set ( 'loop' , '1' ) ; if ( options . autoplay === true ) params . set ( 'autoplay' , '1' ) ; if ( options . muted === true ) params . set ( 'muted' , '1' ) ; if ( options . title === false ) params . set ( 'title' , '0' ) ; if ( options . warningTitle === false ) params . set ( 'warningTitle' , '0' ) ; if ( options . controls === false ) params . set ( 'controls' , '0' ) ; if ( options . peertubeLink === false ) params . set ( 'peertubeLink' , '0' ) ; if ( options . p2p !== undefined ) params . set ( 'p2p' , options . p2p ? '1' : '0' ) ; return buildUrl ( url , params ) ; } function decoratePlaylistLink ( options ) { const { url } = options ; const params = new URLSearchParams ( ) ; if ( options . playlistPosition ) params . set ( 'playlistPosition' , '' + options . playlistPosition ) ; return buildUrl ( url , params ) ; } export { buildPlaylistLink , buildVideoLink , buildVideoWatchPath , buildPlaylistWatchPath , buildPlaylistEmbedPath , buildVideoEmbedPath , buildPlaylistEmbedLink , buildVideoEmbedLink , decorateVideoLink , decoratePlaylistLink } ; function buildUrl ( url , params ) { let hasParams = false ; params . forEach ( ( ) => { hasParams = true ; } ) ; if ( hasParams ) return url + '?' + params . toString ( ) ; return url ; }