@applicaster/zapp-react-native-utils 12.0.0-alpha.5895113034 → 12.0.0-alpha.6115034951

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.
Files changed (55) hide show
  1. package/analyticsUtils/AnalyticsEvents/index.ts +7 -0
  2. package/analyticsUtils/AnalyticsEvents/sendShareEvent.ts +21 -0
  3. package/analyticsUtils/{playerAnalyticsTracker.ts → analyticsTracker.ts} +10 -19
  4. package/analyticsUtils/events.ts +6 -0
  5. package/analyticsUtils/index.tsx +6 -0
  6. package/appUtils/focusManager/__tests__/__snapshots__/focusManager.test.js.snap +2 -3
  7. package/appUtils/focusManager/__tests__/focusManager.test.js +4 -24
  8. package/appUtils/focusManager/__tests__/index.test.ts +2 -3
  9. package/appUtils/focusManager/index.ts +76 -56
  10. package/appUtils/focusManager/treeDataStructure/Utils/index.js +75 -44
  11. package/appUtils/focusManager/utils/index.ts +100 -0
  12. package/appUtils/focusManagerAux/index.ts +76 -0
  13. package/appUtils/focusManagerAux/utils/index.ts +100 -0
  14. package/appUtils/keyCodes/keys.web.js +8 -0
  15. package/appUtils/keyCodes/keysByPlatform.js +11 -1
  16. package/appUtils/platform/const.ts +25 -0
  17. package/appUtils/platform/index.ts +3 -0
  18. package/appUtils/platform/platformUtils.ts +223 -0
  19. package/appUtils/playerManager/conts.ts +1 -0
  20. package/appUtils/playerManager/index.ts +38 -14
  21. package/appUtils/playerManager/nativePlayerManager.ts +12 -0
  22. package/appUtils/playerManager/player.ts +13 -16
  23. package/appUtils/playerManager/playerNative.ts +6 -16
  24. package/appUtils/playerManager/usePlayerControllerSetup.tsx +3 -17
  25. package/arrayUtils/__tests__/isFilledArray.test.ts +63 -0
  26. package/arrayUtils/index.ts +5 -0
  27. package/booleanUtils/index.ts +4 -4
  28. package/keyboardState/index.ts +0 -0
  29. package/navigationUtils/index.ts +48 -0
  30. package/numberUtils/__tests__/isLikeNumber.test.ts +18 -0
  31. package/numberUtils/index.ts +5 -18
  32. package/package.json +2 -2
  33. package/pluginUtils/index.ts +9 -0
  34. package/reactHooks/cell-click/__tests__/index.test.js +9 -5
  35. package/reactHooks/cell-click/index.ts +11 -11
  36. package/reactHooks/feed/__tests__/useBuildPipesUrl.test.tsx +30 -70
  37. package/reactHooks/feed/__tests__/useFeedRefresh.test.tsx +6 -2
  38. package/reactHooks/feed/useBuildPipesUrl.ts +7 -10
  39. package/reactHooks/feed/useFeedRefresh.tsx +9 -7
  40. package/reactHooks/navigation/index.ts +44 -7
  41. package/reactHooks/player/__tests__/useAutoSeek.test.tsx +1 -8
  42. package/reactHooks/player/useAutoSeek.tsx +8 -28
  43. package/reactHooks/player/useSeek.tsx +2 -4
  44. package/reactHooks/player/useTapSeek.tsx +7 -34
  45. package/reactHooks/screen/__tests__/useCurrentScreenData.test.tsx +21 -23
  46. package/reactHooks/screen/index.ts +2 -0
  47. package/reactHooks/screen/useScreenBackgroundColor.ts +23 -0
  48. package/reactHooks/screen/useScreenContext.ts +1 -2
  49. package/reactUtils/index.ts +102 -0
  50. package/analyticsUtils/AnalyticPlayerListener.ts +0 -155
  51. package/analyticsUtils/PlayerAnalyticsManager.ts +0 -90
  52. package/appUtils/focusManager/FocusableEvents.ts +0 -8
  53. package/appUtils/focusManager/treeDataStructure/Utils/__tests__/Utils_android.test.js +0 -1094
  54. package/appUtils/focusManager/treeDataStructure/Utils/index.android.js +0 -261
  55. package/appUtils/playerManager/DelayedSeekPlayerWrapper.tsx +0 -179
@@ -1,155 +0,0 @@
1
- import { PlayerAnalyticsTracker } from "./playerAnalyticsTracker";
2
- import { Player } from "../appUtils/playerManager/player";
3
- import { AD_EVENT, GENERAL_EVENT, PLAYBACK_EVENT, QOS_EVENT } from "./events";
4
-
5
- type Props = {
6
- analyticsTracker: any;
7
- player: any;
8
- };
9
-
10
- /* eslint brace-style: 0 */ // --> OFF
11
- export class AnalyticPlayerListener
12
- implements QuickBrickPlayer.SharedPlayerCallBacks
13
- {
14
- static analyticsListenerID = "analytics-listener";
15
- private analyticsTracker: PlayerAnalyticsTracker;
16
- private player: Player;
17
-
18
- private onVideoLoadCalled; // android only
19
-
20
- constructor(props: Props) {
21
- this.analyticsTracker = props.analyticsTracker;
22
- this.player = props.player;
23
- }
24
-
25
- handleAnalyticEvent = (event, data = {}) => {
26
- if (this.analyticsTracker?.handleAnalyticEvent) {
27
- this.analyticsTracker?.handleAnalyticEvent?.(event, {
28
- ...data,
29
- player_type: this.player.playerPluginId,
30
- });
31
- }
32
- };
33
-
34
- onVideoEnd = () => {
35
- this.handleAnalyticEvent(PLAYBACK_EVENT.complete);
36
- };
37
-
38
- onError = (err: Error) => {
39
- this.handleAnalyticEvent(PLAYBACK_EVENT.error, err); // TODO: Check error format
40
- };
41
-
42
- // HACK: This is a hack to ignore the next resume event after a delayed seek
43
- private ignoreNextResume = false;
44
- onLoad = () => {
45
- this.ignoreNextResume = false;
46
- }
47
-
48
- onPlayerPause = (event) => {
49
- if (!this.player.isInDelayedSeek()) {
50
- this.handleAnalyticEvent(PLAYBACK_EVENT.pause, event);
51
- } else {
52
- this.ignoreNextResume = true;
53
- }
54
- };
55
-
56
- onPlayerResume = (event) => {
57
- if (!this.player.isInDelayedSeek() && !this.ignoreNextResume) {
58
- this.handleAnalyticEvent(PLAYBACK_EVENT.play, event);
59
- } else {
60
- this.ignoreNextResume = false;
61
- }
62
- };
63
-
64
- onPlayerSeekComplete = (event) => {
65
- this.handleAnalyticEvent(PLAYBACK_EVENT.seek_complete, event);
66
- };
67
-
68
- onPlayerSeekStart = (event) => {
69
- this.handleAnalyticEvent(PLAYBACK_EVENT.seek_start, event);
70
- };
71
-
72
- onBufferStart = (event) => {
73
- this.handleAnalyticEvent(PLAYBACK_EVENT.buffer_start, event);
74
- };
75
-
76
- onBufferComplete = (event) => {
77
- this.handleAnalyticEvent(PLAYBACK_EVENT.buffer_complete, event);
78
- };
79
-
80
- // Not implemented
81
- onPlayerStop = (event) => {
82
- this.handleAnalyticEvent(PLAYBACK_EVENT.stop, event);
83
- };
84
-
85
- // TODO: Implement method on native
86
- onVideoBandwidthUpdate = (event) => {
87
- this.handleAnalyticEvent(QOS_EVENT.bitrate_changed, event);
88
- };
89
-
90
- onAdBegin = (event) => {
91
- this.handleAnalyticEvent(AD_EVENT.ad_start, event);
92
- };
93
-
94
- onAdBreakBegin = (event) => {
95
- this.handleAnalyticEvent(AD_EVENT.ad_break_start, event);
96
- };
97
-
98
- onAdBreakEnd = (event) => {
99
- this.handleAnalyticEvent(AD_EVENT.ad_break_completed, event);
100
- };
101
-
102
- onAdEnd = (event) => {
103
- this.handleAnalyticEvent(AD_EVENT.ad_complete, event);
104
- };
105
-
106
- onAdError = (event) => {
107
- this.handleAnalyticEvent(AD_EVENT.ad_error, event);
108
- };
109
-
110
- onAdRequest = (event) => {
111
- this.handleAnalyticEvent(AD_EVENT.ad_request, event);
112
- };
113
-
114
- onAdClicked = (event) => {
115
- this.handleAnalyticEvent(AD_EVENT.ad_clicked, event);
116
- };
117
-
118
- onAdTapped = (event) => {
119
- this.handleAnalyticEvent(AD_EVENT.ad_tapped, event);
120
- };
121
-
122
- onVideoLoad = () => {
123
- // if (!this.state.isAd && !this.onVideoLoadCalled) {
124
- if (!this.player.isAd() && !this.onVideoLoadCalled) {
125
- this.onVideoLoadCalled = true;
126
-
127
- this.handleAnalyticEvent(PLAYBACK_EVENT.load_video, {
128
- player_type: this.player.playerPluginId,
129
- });
130
- }
131
- };
132
-
133
- onPlayerSessionEnd = () => {
134
- // TODO: Implement method on native android, ios exists
135
- this.handleAnalyticEvent(GENERAL_EVENT.session_end);
136
- };
137
-
138
- onPlayerSessionStart = () => {
139
- // TODO: Implement method on native android, ios exists
140
-
141
- this.handleAnalyticEvent(GENERAL_EVENT.session_start);
142
- };
143
-
144
- onPlayerNext = ({ nativeEvent }) => {
145
- // TODO: Implement method on native
146
-
147
- this.handleAnalyticEvent(PLAYBACK_EVENT.next, nativeEvent);
148
- };
149
-
150
- onPlayerPrevious = ({ nativeEvent }) => {
151
- // TODO: Implement method on native
152
-
153
- this.handleAnalyticEvent(PLAYBACK_EVENT.previous, nativeEvent);
154
- };
155
- }
@@ -1,90 +0,0 @@
1
- import {
2
- PlayerAnalyticsTracker,
3
- PlayerAnalyticsTrackerI,
4
- } from "./playerAnalyticsTracker";
5
- import {
6
- PlayerLifecycleListener,
7
- PlayerManager,
8
- } from "../appUtils/playerManager";
9
- import { Player } from "../appUtils/playerManager/player";
10
- import { AnalyticPlayerListener } from "./AnalyticPlayerListener";
11
- import { PlayerRole } from "../appUtils/playerManager/conts";
12
-
13
- enum PlayerAnalyticsTrackerType {
14
- PlayerAnalyticsTracker = "PlayerAnalyticsTracker",
15
- }
16
-
17
- class PlayerAnalyticsTrackerFactory {
18
- createTracker(type: PlayerAnalyticsTrackerType) {
19
- switch (type) {
20
- case PlayerAnalyticsTrackerType.PlayerAnalyticsTracker:
21
- return new PlayerAnalyticsTracker();
22
- default:
23
- return new PlayerAnalyticsTracker();
24
- }
25
- }
26
- }
27
-
28
- export class PlayerAnalyticsManager implements PlayerLifecycleListener {
29
- static instance: PlayerAnalyticsManager;
30
- private trackers: Record<string, PlayerAnalyticsTrackerI> = {};
31
- private trackerFactory: PlayerAnalyticsTrackerFactory;
32
-
33
- public getTracker(
34
- id: string,
35
- type: PlayerAnalyticsTrackerType = PlayerAnalyticsTrackerType.PlayerAnalyticsTracker
36
- ): PlayerAnalyticsTrackerI {
37
- if (!this.trackers[id]) {
38
- this.trackers[id] = this.trackerFactory.createTracker(type);
39
- }
40
-
41
- return this.trackers[id];
42
- }
43
-
44
- constructor(trackerFactory: PlayerAnalyticsTrackerFactory) {
45
- this.trackerFactory = trackerFactory;
46
- this.startListenPlayerManager();
47
- }
48
-
49
- static getInstance(
50
- trackerFactory: PlayerAnalyticsTrackerFactory = new PlayerAnalyticsTrackerFactory()
51
- ): PlayerAnalyticsManager {
52
- if (!PlayerAnalyticsManager.instance) {
53
- PlayerAnalyticsManager.instance = new PlayerAnalyticsManager(
54
- trackerFactory
55
- );
56
- }
57
-
58
- return PlayerAnalyticsManager.instance;
59
- }
60
-
61
- private startListenPlayerManager() {
62
- PlayerManager.getInstance().addLifecycleListener(this);
63
- }
64
-
65
- // PlayerLifecycleListener
66
-
67
- onRegistered = (player: Player) => {
68
- if (player.playerRole !== PlayerRole.Primary) {
69
- return;
70
- }
71
-
72
- const tracker = this.getTracker(player.playerId);
73
- tracker.setPlayer(player);
74
-
75
- const analyticsListener = new AnalyticPlayerListener({
76
- analyticsTracker: tracker,
77
- player,
78
- });
79
-
80
- player.addListener({
81
- id: AnalyticPlayerListener.analyticsListenerID,
82
- listener: analyticsListener,
83
- });
84
- };
85
-
86
- onUnRegistered = (player: Player) => {
87
- player.removeListener(AnalyticPlayerListener.analyticsListenerID);
88
- delete this.trackers[player.playerId];
89
- };
90
- }
@@ -1,8 +0,0 @@
1
- export const FOCUSABLE_EVENTS = {
2
- IS_REGISTERED: "isRegistered",
3
- WILL_RECEIVE_FOCUS: "willReceiveFocus",
4
- HAS_RECEIVED_FOCUS: "hasReceivedFocus",
5
- WILL_LOSE_FOCUS: "willLoseFocus",
6
- HAS_LOST_FOCUS: "hasLostFocus",
7
- WILL_UNREGISTER: "willUnregister",
8
- };