@npo/player 1.24.0 → 1.24.1

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);
@@ -297,6 +297,7 @@ export default class NpoPlayer {
297
297
  this.hidePlayNextScreen();
298
298
  });
299
299
  this.isShowingPlayNextScreen = false;
300
+ this.canceledPlayNextScreen = false;
300
301
  hidePlayNextScreen(this.container);
301
302
  }
302
303
  doPlayNext() {
@@ -332,6 +333,9 @@ export default class NpoPlayer {
332
333
  if (this.npoTag != undefined) {
333
334
  clearInterval(this.npoTag.heartbeatInterval);
334
335
  }
336
+ if (this.playerContext) {
337
+ discardAdBreak(this.playerContext);
338
+ }
335
339
  this.hidePlayNextScreen();
336
340
  await this.player?.unload();
337
341
  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.1",
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.1",
4
4
  "description": "NPO Player",
5
5
  "author": "Publieke Omroep <player@npo.nl>",
6
6
  "contributors": [