@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 +7 -3
- package/lib/package.json +1 -1
- package/lib/services/advertHandlers/discardAdBreak.d.ts +2 -0
- package/lib/services/advertHandlers/discardAdBreak.js +11 -0
- package/lib/services/advertHandlers/discardAdBreak.test.d.ts +1 -0
- package/lib/services/advertHandlers/discardAdBreak.test.js +60 -0
- package/lib/services/npoPlayerAPI/npoPlayerAPI.d.ts +1 -0
- package/lib/services/npoPlayerAPI/npoPlayerAPI.js +3 -0
- package/lib/src/services/advertHandlers/discardAdBreak.d.ts +2 -0
- package/lib/src/services/advertHandlers/discardAdBreak.test.d.ts +1 -0
- package/lib/src/services/npoPlayerAPI/npoPlayerAPI.d.ts +1 -0
- package/lib/tests/mocks/playerContextMock.js +1 -0
- package/package.json +1 -1
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.
|
|
87
|
-
|
|
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
|
@@ -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 @@
|
|
|
1
|
+
export {};
|
|
@@ -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 @@
|
|
|
1
|
+
export {};
|
|
@@ -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
|