48 lines
1.5 KiB
JavaScript
48 lines
1.5 KiB
JavaScript
// @flow
|
|
|
|
import { getParticipants } from '../base/participants';
|
|
|
|
import { VIDEO_PLAYER_PARTICIPANT_NAME, YOUTUBE_PLAYER_PARTICIPANT_NAME } from './constants';
|
|
|
|
/**
|
|
* Validates the entered video url.
|
|
*
|
|
* It returns a boolean to reflect whether the url matches the youtube regex.
|
|
*
|
|
* @param {string} url - The entered video link.
|
|
* @returns {string} The youtube video id if matched.
|
|
*/
|
|
export function getYoutubeId(url: string) {
|
|
if (!url) {
|
|
return null;
|
|
}
|
|
|
|
const p = /^(?:https?:\/\/)?(?:www\.)?(?:youtu\.be\/|(?:m\.)?youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})(?:\S+)?$/;// eslint-disable-line max-len
|
|
const result = url.match(p);
|
|
|
|
return result ? result[1] : null;
|
|
}
|
|
|
|
/**
|
|
* Checks if the status is one that is actually sharing the video - playing, pause or start.
|
|
*
|
|
* @param {string} status - The shared video status.
|
|
* @returns {boolean}
|
|
*/
|
|
export function isSharingStatus(status: string) {
|
|
return [ 'playing', 'pause', 'start' ].includes(status);
|
|
}
|
|
|
|
|
|
/**
|
|
* Returns true if there is a video being shared in the meeting.
|
|
*
|
|
* @param {Object | Function} stateful - The Redux state or a function that gets resolved to the Redux state.
|
|
* @returns {boolean}
|
|
*/
|
|
export function isVideoPlaying(stateful: Object | Function): boolean {
|
|
return Boolean(getParticipants(stateful).find(p => p.isFakeParticipant
|
|
&& (p.name === VIDEO_PLAYER_PARTICIPANT_NAME || p.name === YOUTUBE_PLAYER_PARTICIPANT_NAME))
|
|
);
|
|
}
|