45 lines
1.3 KiB
JavaScript
45 lines
1.3 KiB
JavaScript
|
// @flow
|
||
|
|
||
|
import { getParticipants } from '../base/participants';
|
||
|
|
||
|
import { VIDEO_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 {boolean}
|
||
|
*/
|
||
|
export function getYoutubeLink(url: string) {
|
||
|
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] : false;
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* 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)
|
||
|
);
|
||
|
}
|