UNPKG

@applicaster/zapp-react-native-utils

Version:

Applicaster Zapp React Native utilities package

75 lines (57 loc) 2.01 kB
import * as R from "ramda"; import { playerManager } from "@applicaster/zapp-react-native-utils/appUtils/playerManager"; import { getBoolFromConfigValue } from "../configurationUtils"; /** * Gets duration value from player manager, and from extensions * then checks whether the value from either is a not a valid number * If the number is invalid or less than zero we can assume it is live * @param {object} content * @returns {boolean} */ export function isLiveLegacy(content) { const isNaNCurry = R.curry(isNaN); const isNotaValidNumber = R.anyPass([ R.isEmpty, R.isNil, isNaNCurry, R.equals(Infinity), ]); const durationFromExt = R.path(["extensions", "duration"], content); const durationFromMgr = playerManager.getDuration(); const duration = Math.floor(durationFromExt || durationFromMgr); const isLive = R.anyPass([isNotaValidNumber, R.lte(R.__, 0)])(duration); return isLive; } export function isLiveByDuration(duration): boolean { const durationNumber = duration && parseFloat(duration); if (R.isNil(durationNumber) || R.isEmpty(durationNumber)) { return false; } return durationNumber <= 0; } export function hasLiveExtension(entry): boolean { return !!( entry?.type?.value === "channel" || getBoolFromConfigValue(entry?.extensions?.live) || getBoolFromConfigValue(entry?.extensions?.isLive) ); } export function isEntryLive(entry): boolean { if (R.isNil(entry)) { return false; } const duration = R.path(["extensions", "duration"], entry); return hasLiveExtension(entry) || isLiveByDuration(duration); } function isLiveByManager(): boolean { const playerStateIsLive = playerManager.getActivePlayer()?.playerState?.isLive; if (playerStateIsLive) { return true; } const durationFromPlayerManager = playerManager.getDuration(); return isLiveByDuration(durationFromPlayerManager); } export function isLive(entry: ZappEntry): boolean { return isEntryLive(entry) || isLiveByManager(); }