@npo/player 1.24.0 → 1.24.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/npoplayer.js CHANGED
@@ -20,6 +20,7 @@ import { removeReplayClass } from './js/playeractions/handlers/removereplayclass
20
20
  import { showNicamAfterUiDelay } from './ui/handlers/nicamhandler';
21
21
  import { updateLiveMarkers } from './js/markers/updateLiveMarkers';
22
22
  import { NpoPlayerAPI } from './services/npoPlayerAPI/npoPlayerAPI';
23
+ import { discardAdBreak } from './services/advertHandlers/discardAdBreak';
23
24
  export { NpoPlayerUIVariants };
24
25
  export default class NpoPlayer {
25
26
  constructor(_container, _playerConfig, _npotag, _npotaginstance, _variant) {
@@ -83,9 +84,8 @@ export default class NpoPlayer {
83
84
  console.error('Er is nog geen player geladen.');
84
85
  return;
85
86
  }
86
- if (this.adBreakActive) {
87
- const currentAd = this.player.ads.getActiveAdBreak().id;
88
- this.player.ads.discardAdBreak(currentAd);
87
+ if (this.playerContext) {
88
+ discardAdBreak(this.playerContext);
89
89
  }
90
90
  let _streamObject;
91
91
  const sourceIsUrl = isUrl(source);
@@ -332,6 +332,9 @@ export default class NpoPlayer {
332
332
  if (this.npoTag != undefined) {
333
333
  clearInterval(this.npoTag.heartbeatInterval);
334
334
  }
335
+ if (this.playerContext) {
336
+ discardAdBreak(this.playerContext);
337
+ }
335
338
  this.hidePlayNextScreen();
336
339
  await this.player?.unload();
337
340
  return true;
package/lib/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@npo/player",
3
- "version": "1.24.0",
3
+ "version": "1.24.2",
4
4
  "description": "NPO Player",
5
5
  "author": "Publieke Omroep <player@npo.nl>",
6
6
  "contributors": [
@@ -0,0 +1,2 @@
1
+ import { PlayerContext } from '../../types/interfaces';
2
+ export declare function discardAdBreak(playerContext: PlayerContext): void;
@@ -0,0 +1,11 @@
1
+ export function discardAdBreak(playerContext) {
2
+ const { npoplayer, player } = playerContext;
3
+ const { adBreakActive } = npoplayer;
4
+ if (!player || adBreakActive === false)
5
+ return;
6
+ const activeAdBreak = player.getActiveAdBreak();
7
+ if (activeAdBreak?.id) {
8
+ player.discardAdBreak(activeAdBreak.id);
9
+ }
10
+ npoplayer.adBreakActive = false;
11
+ }
@@ -0,0 +1,60 @@
1
+ import createPlayerContextMock, { createMockNpoPlayer, createMockNpoPlayerAPI } from '../../../tests/mocks/playerContextMock';
2
+ import { discardAdBreak } from './discardAdBreak';
3
+ describe('discardAdBreak', () => {
4
+ let mockNpoPlayerAPI;
5
+ let npoplayerMock;
6
+ const activeAdBreakMock = { id: 'ad-break-id' };
7
+ afterEach(() => {
8
+ jest.resetAllMocks();
9
+ });
10
+ it('should not discard ad break if adBreakActive is false', () => {
11
+ mockNpoPlayerAPI = createMockNpoPlayerAPI({
12
+ getActiveAdBreak: jest.fn().mockReturnValue(undefined),
13
+ discardAdBreak: jest.fn()
14
+ });
15
+ npoplayerMock = createMockNpoPlayer({
16
+ adBreakActive: false
17
+ });
18
+ const playerContextMock = createPlayerContextMock({
19
+ player: mockNpoPlayerAPI,
20
+ npoplayer: npoplayerMock
21
+ });
22
+ discardAdBreak(playerContextMock);
23
+ expect(mockNpoPlayerAPI.getActiveAdBreak).not.toHaveBeenCalled();
24
+ expect(mockNpoPlayerAPI.discardAdBreak).not.toHaveBeenCalled();
25
+ });
26
+ it('should discard active ad break if adBreakActive is true and ad break exists', () => {
27
+ mockNpoPlayerAPI = createMockNpoPlayerAPI({
28
+ getActiveAdBreak: jest.fn().mockReturnValue(activeAdBreakMock),
29
+ discardAdBreak: jest.fn()
30
+ });
31
+ npoplayerMock = createMockNpoPlayer({
32
+ adBreakActive: true
33
+ });
34
+ const playerContextMock = createPlayerContextMock({
35
+ player: mockNpoPlayerAPI,
36
+ npoplayer: npoplayerMock
37
+ });
38
+ discardAdBreak(playerContextMock);
39
+ expect(mockNpoPlayerAPI.getActiveAdBreak).toHaveBeenCalled();
40
+ expect(mockNpoPlayerAPI.discardAdBreak).toHaveBeenCalledWith(activeAdBreakMock.id);
41
+ expect(npoplayerMock.adBreakActive).toBe(false);
42
+ });
43
+ it('should not discard ad break if active ad break does not exist', () => {
44
+ mockNpoPlayerAPI = createMockNpoPlayerAPI({
45
+ getActiveAdBreak: jest.fn().mockReturnValue(undefined),
46
+ discardAdBreak: jest.fn()
47
+ });
48
+ npoplayerMock = createMockNpoPlayer({
49
+ adBreakActive: true
50
+ });
51
+ const playerContextMock = createPlayerContextMock({
52
+ player: mockNpoPlayerAPI,
53
+ npoplayer: npoplayerMock
54
+ });
55
+ discardAdBreak(playerContextMock);
56
+ expect(mockNpoPlayerAPI.getActiveAdBreak).toHaveBeenCalled();
57
+ expect(mockNpoPlayerAPI.discardAdBreak).not.toHaveBeenCalled();
58
+ expect(npoplayerMock.adBreakActive).toBe(false);
59
+ });
60
+ });
@@ -37,6 +37,7 @@ export declare class NpoPlayerAPI {
37
37
  getTimeShift(): number;
38
38
  scheduleAds(adConfig: AdConfig): Promise<AdBreak[]>;
39
39
  getActiveAdBreak(): AdBreak | null;
40
+ discardAdBreak(adBreakId: string): void;
40
41
  getConfig(mergedConfig?: boolean): PlayerConfig;
41
42
  createUIManager(playerContext: PlayerContext, variant: NpoPlayerUIVariants): Promise<void | UIManager>;
42
43
  }
@@ -135,6 +135,9 @@ export class NpoPlayerAPI {
135
135
  getActiveAdBreak() {
136
136
  return this.playerAPI.ads.getActiveAdBreak();
137
137
  }
138
+ discardAdBreak(adBreakId) {
139
+ return this.playerAPI.ads.discardAdBreak(adBreakId);
140
+ }
138
141
  getConfig(mergedConfig) {
139
142
  return this.playerAPI.getConfig(mergedConfig);
140
143
  }
@@ -0,0 +1,2 @@
1
+ import { PlayerContext } from '../../types/interfaces';
2
+ export declare function discardAdBreak(playerContext: PlayerContext): void;
@@ -37,6 +37,7 @@ export declare class NpoPlayerAPI {
37
37
  getTimeShift(): number;
38
38
  scheduleAds(adConfig: AdConfig): Promise<AdBreak[]>;
39
39
  getActiveAdBreak(): AdBreak | null;
40
+ discardAdBreak(adBreakId: string): void;
40
41
  getConfig(mergedConfig?: boolean): PlayerConfig;
41
42
  createUIManager(playerContext: PlayerContext, variant: NpoPlayerUIVariants): Promise<void | UIManager>;
42
43
  }
@@ -44,6 +44,7 @@ export const createMockNpoPlayerAPI = (overrides = {}) => ({
44
44
  getTimeShift: jest.fn().mockReturnValue(0),
45
45
  scheduleAds: jest.fn().mockResolvedValue([]),
46
46
  getActiveAdBreak: jest.fn().mockReturnValue(undefined),
47
+ discardAdBreak: jest.fn(),
47
48
  getConfig: jest.fn().mockReturnValue({}),
48
49
  createUIManager: jest.fn(),
49
50
  ...overrides
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@npo/player",
3
- "version": "1.24.0",
3
+ "version": "1.24.2",
4
4
  "description": "NPO Player",
5
5
  "author": "Publieke Omroep <player@npo.nl>",
6
6
  "contributors": [