import { InjectionToken } from '@angular/core'; import { PlaybackPositionData } from 'shared-interfaces'; export interface PortalPlaybackPositions { savePlaybackPosition( playlistId: string, data: PlaybackPositionData ): Promise; getPlaybackPosition( playlistId: string, contentXtreamId: number, contentType: 'vod' | 'episode' ): Promise; getSeriesPlaybackPositions( playlistId: string, seriesXtreamId: number ): Promise; getAllPlaybackPositions(playlistId: string): Promise; clearPlaybackPosition( playlistId: string, contentXtreamId: number, contentType: 'vod' | 'episode' ): Promise; } export const PORTAL_PLAYBACK_POSITIONS = new InjectionToken('PORTAL_PLAYBACK_POSITIONS'); export function getPortalPlaybackProgressPercent( position: PlaybackPositionData | null | undefined ): number { if (!position || !position.durationSeconds) { return 0; } const percent = (position.positionSeconds / position.durationSeconds) * 100; if (position.positionSeconds > 10 && percent < 1) { return 1; } return Math.min(100, Math.round(percent)); } export function isPortalPlaybackWatched( position: PlaybackPositionData | null | undefined ): boolean { return getPortalPlaybackProgressPercent(position) >= 90; } export function isPortalPlaybackInProgress( position: PlaybackPositionData | null | undefined ): boolean { if (!position) { return false; } const percent = getPortalPlaybackProgressPercent(position); return position.positionSeconds > 10 && percent < 90; }