All files / atom/videoPlayer/src/hooks/youtube useYouTubeProperties.js

100% Statements 14/14
100% Branches 2/2
100% Functions 3/3
100% Lines 14/14

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43                1x 10x 10x       10x       10x       10x       10x     10x 40x 40x 10x 10x   40x     10x        
import {
  YOUTUBE,
  YOUTUBE_EMBEDDABLE_URL_PATTERN,
  YOUTUBE_READABLE_URL_PATTERN,
  YOUTUBE_SHORT_URL_PATTERN,
  YOUTUBE_STANDARD_URL_PATTERN
} from '../../settings/players.js'
 
const useYouTubeProperties = () => {
  const getEmbeddableUrl = src => {
    let videoSrc = _replaceNonEmbeddableUrl({
      src,
      nonEmbeddableUrl: YOUTUBE_EMBEDDABLE_URL_PATTERN
    })
    videoSrc = _replaceNonEmbeddableUrl({
      src: videoSrc,
      nonEmbeddableUrl: YOUTUBE_STANDARD_URL_PATTERN
    })
    videoSrc = _replaceNonEmbeddableUrl({
      src: videoSrc,
      nonEmbeddableUrl: YOUTUBE_SHORT_URL_PATTERN
    })
    videoSrc = _replaceNonEmbeddableUrl({
      src: videoSrc,
      nonEmbeddableUrl: YOUTUBE_READABLE_URL_PATTERN
    })
    return videoSrc
  }
 
  const _replaceNonEmbeddableUrl = ({src, nonEmbeddableUrl}) => {
    let videoSrc = src
    if (videoSrc.includes(nonEmbeddableUrl)) {
      const videoId = videoSrc.split(nonEmbeddableUrl)[1]
      videoSrc = `${YOUTUBE.EMBEDDABLE_URL}${videoId}`
    }
    return videoSrc
  }
 
  return {getEmbeddableUrl}
}
 
export default useYouTubeProperties