@applicaster/zapp-react-native-utils 16.0.0-alpha.4416921324 → 16.0.0-alpha.4548770949

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 (173) hide show
  1. package/actionUtils/index.ts +3 -1
  2. package/actionsExecutor/ActionExecutor.ts +50 -3
  3. package/actionsExecutor/ActionExecutorContext.tsx +99 -17
  4. package/actionsExecutor/__tests__/ActionExecutor.test.ts +71 -0
  5. package/actionsExecutor/__tests__/StorageActions.test.ts +98 -0
  6. package/actionsExecutor/__tests__/feedDecorator.test.ts +91 -0
  7. package/actionsExecutor/__tests__/screenToggleFlag.test.ts +90 -0
  8. package/actionsExecutor/actions/__tests__/dismissBottomSheet.test.ts +25 -0
  9. package/actionsExecutor/actions/__tests__/goBack.test.ts +62 -0
  10. package/actionsExecutor/actions/__tests__/goHome.test.ts +19 -0
  11. package/actionsExecutor/actions/__tests__/loadItemsFromSource.test.ts +88 -0
  12. package/actionsExecutor/actions/__tests__/navigateToScreen.test.ts +267 -0
  13. package/actionsExecutor/actions/__tests__/openBottomSheet.customContent.test.ts +100 -0
  14. package/actionsExecutor/actions/__tests__/openBottomSheet.inlineItems.test.ts +372 -0
  15. package/actionsExecutor/actions/__tests__/presentScreen.test.ts +127 -0
  16. package/actionsExecutor/actions/__tests__/showAlert.test.ts +49 -0
  17. package/actionsExecutor/actions/__tests__/showToast.test.ts +88 -0
  18. package/actionsExecutor/actions/dismissBottomSheet.ts +23 -0
  19. package/actionsExecutor/actions/goBack.ts +60 -0
  20. package/actionsExecutor/actions/goHome.ts +31 -0
  21. package/actionsExecutor/actions/index.ts +12 -0
  22. package/actionsExecutor/actions/navigateToScreen.ts +43 -45
  23. package/actionsExecutor/actions/openBottomSheet.ts +340 -0
  24. package/actionsExecutor/actions/presentScreen.ts +78 -0
  25. package/actionsExecutor/actions/refreshComponent.ts +6 -0
  26. package/actionsExecutor/actions/screenToggleFlag.ts +1 -3
  27. package/actionsExecutor/actions/sendCloudEvent.ts +6 -1
  28. package/actionsExecutor/actions/showAlert.ts +51 -0
  29. package/actionsExecutor/actions/showToast.ts +64 -8
  30. package/actionsExecutor/consts.ts +27 -0
  31. package/actionsExecutor/feedDecorator.ts +12 -6
  32. package/analyticsUtils/PlayerAnalyticsManager.ts +1 -1
  33. package/appUtils/HooksManager/index.ts +9 -0
  34. package/appUtils/contextKeysManager/__tests__/getKey/failure.test.ts +1 -22
  35. package/appUtils/contextKeysManager/__tests__/getKey/success/fullSearch.test.ts +1 -25
  36. package/appUtils/contextKeysManager/__tests__/getKey/success/searchInSecure.test.ts +1 -7
  37. package/appUtils/contextKeysManager/__tests__/removeKey/failure.test.ts +0 -25
  38. package/appUtils/contextKeysManager/__tests__/removeKey/success.test.ts +0 -6
  39. package/appUtils/contextKeysManager/__tests__/setKey/failure/failedToSaveInStorage.test.ts +0 -40
  40. package/appUtils/contextKeysManager/__tests__/setKey/{success/saveItemAndReference.test.ts → success.test.ts} +2 -42
  41. package/appUtils/contextKeysManager/index.ts +28 -129
  42. package/appUtils/playerManager/OverlayObserver/OverlaysObserver.ts +142 -59
  43. package/appUtils/playerManager/OverlayObserver/__tests__/getUpcomingQueue.test.ts +67 -0
  44. package/appUtils/playerManager/OverlayObserver/__tests__/liveContent.test.ts +205 -0
  45. package/appUtils/playerManager/OverlayObserver/__tests__/utils.test.ts +56 -0
  46. package/appUtils/playerManager/OverlayObserver/getUpcomingQueue.android.tv.ts +4 -0
  47. package/appUtils/playerManager/OverlayObserver/getUpcomingQueue.ios.tv.ts +4 -0
  48. package/appUtils/playerManager/OverlayObserver/getUpcomingQueue.ts +24 -0
  49. package/appUtils/playerManager/OverlayObserver/getUpcomingQueue.web.ts +4 -0
  50. package/appUtils/playerManager/OverlayObserver/utils.ts +51 -20
  51. package/appUtils/playerManager/__tests__/playerContent.test.ts +403 -0
  52. package/appUtils/playerManager/__tests__/playerDiagnostics.test.ts +62 -0
  53. package/appUtils/playerManager/__tests__/playerFactory.test.ts +1 -1
  54. package/appUtils/playerManager/__tests__/playerNative.test.ts +114 -0
  55. package/appUtils/playerManager/__tests__/playerNativeCommand.test.ts +62 -0
  56. package/appUtils/playerManager/__tests__/playerToolbox.test.ts +281 -0
  57. package/appUtils/playerManager/__tests__/usePlayerContent.test.tsx +64 -0
  58. package/appUtils/playerManager/__tests__/usePlayerControllerSetup.test.tsx +62 -0
  59. package/appUtils/playerManager/{conts.ts → const.ts} +33 -0
  60. package/appUtils/playerManager/index.ts +8 -1
  61. package/appUtils/playerManager/player.ts +140 -3
  62. package/appUtils/playerManager/playerFactory.ts +1 -1
  63. package/appUtils/playerManager/playerNative.ts +28 -4
  64. package/appUtils/playerManager/playerNativeCommand.ts +3 -6
  65. package/appUtils/playerManager/playerToolbox.ts +196 -0
  66. package/appUtils/playerManager/usePlayerContent.tsx +43 -0
  67. package/appUtils/playerManager/usePlayerControllerSetup.tsx +7 -1
  68. package/appUtils/playerManager/userLanguagePreference.ts +1 -1
  69. package/arrayUtils/__tests__/reorderByIds.test.ts +63 -0
  70. package/arrayUtils/index.ts +62 -0
  71. package/cellUtils/__tests__/getButtonsEnabled.test.ts +28 -0
  72. package/cellUtils/__tests__/getCellNavigationEnabled.test.ts +36 -0
  73. package/cellUtils/__tests__/getIsCellNavigationEnabled.test.ts +35 -0
  74. package/cellUtils/__tests__/isCellNavigationEnabled.test.ts +21 -0
  75. package/cellUtils/index.ts +70 -3
  76. package/configurationUtils/__tests__/manifestKeyParser.test.ts +21 -0
  77. package/configurationUtils/__tests__/modalBlocksParser.test.ts +403 -0
  78. package/configurationUtils/manifestKeyParser.ts +50 -10
  79. package/configurationUtils/modalBlocksParser.ts +252 -0
  80. package/entryActions/__tests__/buildEntryActions.test.ts +235 -0
  81. package/entryActions/aliasPresentation.ts +108 -0
  82. package/entryActions/buildEntryActions.ts +167 -0
  83. package/entryActions/index.ts +15 -0
  84. package/entryActions/types.ts +39 -0
  85. package/focusManager/FocusManager.ts +26 -0
  86. package/focusManager/__tests__/FocusManager.test.ts +9 -0
  87. package/localizationUtils/index.ts +12 -6
  88. package/logger/__tests__/xrayToolbox.test.ts +69 -0
  89. package/logger/xrayToolbox.ts +67 -0
  90. package/manifestUtils/__tests__/player.audioControls.test.js +158 -0
  91. package/manifestUtils/_internals/index.js +8 -3
  92. package/manifestUtils/defaultManifestConfigurations/generalContent.js +6 -0
  93. package/manifestUtils/defaultManifestConfigurations/player.js +338 -1
  94. package/manifestUtils/index.js +3 -0
  95. package/manifestUtils/keys.js +7 -2
  96. package/manifestUtils/mobileAction/container/__tests__/mobileActionButtonsContainer.test.js +21 -0
  97. package/manifestUtils/mobileAction/groups/__tests__/buildMobileActionButtonGroups.test.js +1 -1
  98. package/manifestUtils/mobileAction/groups/defaults.js +2 -1
  99. package/manifestUtils/modalBlocks.js +304 -0
  100. package/modalState/ContentViewModel.ts +113 -0
  101. package/modalState/EditableCollection.ts +17 -0
  102. package/modalState/EditableCollectionRegistry.ts +51 -0
  103. package/modalState/ModalOrchestrator.ts +213 -0
  104. package/modalState/RemoteEditableCollection.ts +235 -0
  105. package/modalState/__tests__/ContentViewModel.editable.test.ts +69 -0
  106. package/modalState/__tests__/ContentViewModel.test.ts +165 -0
  107. package/modalState/__tests__/EditableCollectionRegistry.test.ts +112 -0
  108. package/modalState/__tests__/ModalOrchestrator.phase3.test.ts +86 -0
  109. package/modalState/__tests__/RemoteEditableCollection.test.ts +415 -0
  110. package/modalState/__tests__/index.test.ts +30 -1
  111. package/modalState/__tests__/useBottomSheetContent.test.ts +349 -0
  112. package/modalState/__tests__/useModalStoreState.test.ts +142 -0
  113. package/modalState/index.ts +37 -83
  114. package/modalState/store.ts +109 -0
  115. package/modalState/types.ts +173 -0
  116. package/modalState/useBottomSheetContent.ts +109 -0
  117. package/navigationUtils/xrayNavigator.ts +12 -0
  118. package/package.json +3 -2
  119. package/playerUtils/__tests__/contentDataKeys.test.ts +297 -0
  120. package/playerUtils/__tests__/resolvePlayerActions.test.ts +138 -0
  121. package/playerUtils/__tests__/resolvePlayerTitleSubtitle.test.ts +180 -0
  122. package/playerUtils/contentDataKeys.ts +134 -0
  123. package/playerUtils/index.ts +37 -16
  124. package/playerUtils/isAudioItem.ts +26 -0
  125. package/playerUtils/resolvePlayerActions.ts +71 -0
  126. package/playerUtils/resolvePlayerTitleSubtitle.ts +76 -0
  127. package/pluginUtils/__tests__/pluginUtils.test.js +32 -0
  128. package/pluginUtils/index.ts +29 -0
  129. package/quickBrickAssets/__tests__/index.test.ts +18 -0
  130. package/quickBrickAssets/index.ts +35 -0
  131. package/reactHooks/__tests__/getPluginConfiguration.test.ts +82 -0
  132. package/reactHooks/actions/index.ts +74 -3
  133. package/reactHooks/cell-click/__tests__/index.test.js +64 -0
  134. package/reactHooks/cell-click/index.ts +21 -14
  135. package/reactHooks/connection/index.tsx +8 -5
  136. package/reactHooks/feed/__tests__/feedInvalidation.test.tsx +338 -0
  137. package/reactHooks/feed/__tests__/useBatchLoading.test.tsx +8 -2
  138. package/reactHooks/feed/__tests__/useMarkPipesDataStale.test.tsx +243 -0
  139. package/reactHooks/feed/useFeedLoader.tsx +28 -1
  140. package/reactHooks/feed/useLoadPipesDataDispatch.ts +12 -11
  141. package/reactHooks/feed/useMarkPipesDataStale.ts +68 -23
  142. package/reactHooks/index.ts +2 -0
  143. package/reactHooks/layout/index.ts +1 -1
  144. package/reactHooks/navigation/__tests__/index.test.tsx +176 -1
  145. package/reactHooks/navigation/__tests__/usePresentScreen.test.ts +154 -0
  146. package/reactHooks/navigation/index.ts +2 -0
  147. package/reactHooks/navigation/usePresentScreen.ts +157 -0
  148. package/reactHooks/navigation/useRoute.ts +22 -5
  149. package/reactHooks/usePluginConfiguration.ts +88 -47
  150. package/reactHooks/utils/__tests__/index.test.js +22 -2
  151. package/reactHooks/utils/index.ts +11 -1
  152. package/riverComponetsMeasurementProvider/index.tsx +3 -1
  153. package/uiActionsRegistrator/__tests__/resolveActionIdentifiers.test.ts +93 -0
  154. package/uiActionsRegistrator/__tests__/subscribe.test.ts +133 -0
  155. package/uiActionsRegistrator/__tests__/usableActionItems.test.ts +52 -0
  156. package/uiActionsRegistrator/index.ts +25 -203
  157. package/uiActionsRegistrator/registry.ts +351 -0
  158. package/uiActionsRegistrator/resolveActionIdentifiers.ts +100 -0
  159. package/uiActionsRegistrator/usableActionItems.ts +66 -0
  160. package/zappFrameworkUtils/__tests__/localStorageHelper.test.ts +146 -0
  161. package/zappFrameworkUtils/localStorageHelper.ts +19 -15
  162. package/appUtils/contextKeysManager/__tests__/getKey/success/byReference.test.ts +0 -56
  163. package/appUtils/contextKeysManager/__tests__/getKeyByReference/failure.test.ts +0 -265
  164. package/appUtils/contextKeysManager/__tests__/getKeyByReference/success.test.ts +0 -303
  165. package/appUtils/contextKeysManager/__tests__/removeReferenceForKey/failure.test.ts +0 -82
  166. package/appUtils/contextKeysManager/__tests__/removeReferenceForKey/success.test.ts +0 -41
  167. package/appUtils/contextKeysManager/__tests__/setKey/success/saveItemButNotReference.test.ts +0 -208
  168. package/appUtils/contextKeysManager/__tests__/setReferenceForKey/failure.test.ts +0 -93
  169. package/appUtils/contextKeysManager/__tests__/setReferenceForKey/success.test.ts +0 -45
  170. package/appUtils/playerManager/usePlayerTitleSummaryOverlay.tsx +0 -56
  171. package/playerUtils/__tests__/getPlayerActionButtons.test.ts +0 -54
  172. package/playerUtils/getPlayerActionButtons.ts +0 -17
  173. /package/reactHooks/actions/__tests__/{index.test.js → index.test.tsx} +0 -0
@@ -1,93 +0,0 @@
1
- import { ContextKeysManager, REFERENCE_NAMESPACE } from "../..";
2
- import { buildNamespaceKey } from "../../utils";
3
- import { StorageLevel } from "../../consts";
4
-
5
- describe("Context Keys Manager - setReferenceForKey", () => {
6
- it("returns false if save failed", async () => {
7
- // setup
8
- const key = "key";
9
- const namespace = "namespace";
10
- const storageLevel = StorageLevel.default;
11
- const error = Error("oops");
12
-
13
- const mockedLogger = {
14
- warn: jest.fn(),
15
- };
16
-
17
- const mockedReferenceStorage = {
18
- getItem: jest.fn(),
19
- setItem: jest.fn().mockRejectedValueOnce(error),
20
- removeItem: jest.fn(),
21
- };
22
-
23
- const contextManager = new ContextKeysManager({
24
- logger: mockedLogger,
25
- referenceStorage: mockedReferenceStorage,
26
- });
27
-
28
- // run
29
- const result = await contextManager.setReferenceForKey(
30
- key,
31
- namespace,
32
- storageLevel
33
- );
34
-
35
- // verify
36
- expect(result).toBe(false);
37
-
38
- expect(mockedLogger.warn).toHaveBeenCalledWith({
39
- message: error.message,
40
- data: { key, namespace, storageLevel },
41
- });
42
-
43
- expect(mockedReferenceStorage.setItem).toHaveBeenCalledWith(
44
- buildNamespaceKey(key, namespace),
45
- storageLevel,
46
- REFERENCE_NAMESPACE
47
- );
48
- });
49
-
50
- it("returns false if save success but result is not true", async () => {
51
- // setup
52
- const key = "key";
53
- const namespace = "namespace";
54
- const storageLevel = StorageLevel.default;
55
-
56
- const mockedLogger = {
57
- warn: jest.fn(),
58
- };
59
-
60
- const mockedReferenceStorage = {
61
- getItem: jest.fn(),
62
- setItem: jest.fn().mockResolvedValueOnce(undefined),
63
- removeItem: jest.fn(),
64
- };
65
-
66
- const contextManager = new ContextKeysManager({
67
- logger: mockedLogger,
68
- referenceStorage: mockedReferenceStorage,
69
- });
70
-
71
- // run
72
- const result = await contextManager.setReferenceForKey(
73
- key,
74
- namespace,
75
- storageLevel
76
- );
77
-
78
- // verify
79
- expect(result).toBe(false);
80
-
81
- expect(mockedLogger.warn).toHaveBeenCalledWith({
82
- message:
83
- "While saving reference - reference storage return non expected value: true",
84
- data: { key, namespace, storageLevel },
85
- });
86
-
87
- expect(mockedReferenceStorage.setItem).toHaveBeenCalledWith(
88
- buildNamespaceKey(key, namespace),
89
- storageLevel,
90
- REFERENCE_NAMESPACE
91
- );
92
- });
93
- });
@@ -1,45 +0,0 @@
1
- import { ContextKeysManager, REFERENCE_NAMESPACE } from "../..";
2
- import { buildNamespaceKey } from "../../utils";
3
- import { StorageLevel } from "../../consts";
4
-
5
- describe("Context Keys Manager - setReferenceForKey", () => {
6
- it("returns true if save success", async () => {
7
- // setup
8
- const key = "key";
9
- const namespace = "namespace";
10
- const value = StorageLevel.default;
11
-
12
- const mockedLogger = {
13
- warn: jest.fn(),
14
- };
15
-
16
- const mockedReferenceStorage = {
17
- getItem: jest.fn(),
18
- setItem: jest.fn().mockResolvedValueOnce(true),
19
- removeItem: jest.fn(),
20
- };
21
-
22
- const contextManager = new ContextKeysManager({
23
- logger: mockedLogger,
24
- referenceStorage: mockedReferenceStorage,
25
- });
26
-
27
- // run
28
- const result = await contextManager.setReferenceForKey(
29
- key,
30
- namespace,
31
- value
32
- );
33
-
34
- // verify
35
- expect(result).toBe(true);
36
-
37
- expect(mockedLogger.warn).not.toHaveBeenCalled();
38
-
39
- expect(mockedReferenceStorage.setItem).toHaveBeenCalledWith(
40
- buildNamespaceKey(key, namespace),
41
- value,
42
- REFERENCE_NAMESPACE
43
- );
44
- });
45
- });
@@ -1,56 +0,0 @@
1
- import { useEffect, useState } from "react";
2
- import { OverlaysObserver } from "./OverlayObserver/OverlaysObserver";
3
- import { useFeedLoader } from "../../reactHooks";
4
- import { usePlayer } from "./usePlayer";
5
-
6
- const getLiveUrl = (url: string) => {
7
- // Use the replace method with a regular expression to replace all instances of subClass with livePage
8
- return url.replace(new RegExp("subClass", "g"), "livePage");
9
- };
10
-
11
- export const useTitleSummaryOverlay = (
12
- entry,
13
- isLive = false,
14
- interval: number
15
- ) => {
16
- // TODO: Have generic place for live url from configuration. Currently its hardcoded for client.
17
- const feedUrl = getLiveUrl(entry?.extensions?.live?.channel_src ?? "");
18
- const player = usePlayer();
19
- const [title, setTitle] = useState<string | number>(entry?.title || "");
20
- const [summary, setSummary] = useState<string | number>(entry?.summary || "");
21
-
22
- // Hook to load feed data
23
- const { data: feedData, reloadData } = useFeedLoader({ feedUrl });
24
-
25
- useEffect(() => {
26
- if (player && feedUrl && isLive) {
27
- const observer = new OverlaysObserver({ player });
28
-
29
- observer.setFeedDataHandlers(feedUrl, reloadData, interval, (entry) => {
30
- setTitle(entry?.title || "");
31
- setSummary(entry?.summary || "");
32
- });
33
-
34
- const subscription = observer
35
- .getTitleSummaryObservable()
36
- .subscribe(({ title, summary }) => {
37
- setTitle(title);
38
- setSummary(summary);
39
- });
40
-
41
- return () => {
42
- subscription.unsubscribe();
43
- observer.clearFeedDataInterval();
44
- };
45
- }
46
- }, [player, feedUrl, reloadData, isLive]);
47
-
48
- useEffect(() => {
49
- if (isLive && feedData?.entry?.[0]) {
50
- setTitle(feedData.entry[0].title || "");
51
- setSummary(feedData.entry[0].summary || "");
52
- }
53
- }, [feedData]);
54
-
55
- return { title, summary };
56
- };
@@ -1,54 +0,0 @@
1
- import { getPlayerActionButtons } from "../getPlayerActionButtons";
2
- import { selectActionButtons } from "../../conf/player/selectors";
3
-
4
- jest.mock("../../conf/player/selectors", () => ({
5
- selectActionButtons: jest.fn(),
6
- }));
7
-
8
- describe("getPlayerActionButtons", () => {
9
- afterEach(() => {
10
- jest.clearAllMocks();
11
- });
12
-
13
- it("returns an empty array if selectActionButtons returns undefined", () => {
14
- (selectActionButtons as jest.Mock).mockReturnValue(undefined);
15
- const result = getPlayerActionButtons({});
16
- expect(result).toEqual([]);
17
- });
18
-
19
- it("returns an empty array if selectActionButtons returns null", () => {
20
- (selectActionButtons as jest.Mock).mockReturnValue(null);
21
- const result = getPlayerActionButtons({});
22
- expect(result).toEqual([]);
23
- });
24
-
25
- it("returns an empty array if selectActionButtons returns empty string", () => {
26
- (selectActionButtons as jest.Mock).mockReturnValue("");
27
- const result = getPlayerActionButtons({});
28
- expect(result).toEqual([]);
29
- });
30
-
31
- it("returns the first two trimmed action buttons", () => {
32
- (selectActionButtons as jest.Mock).mockReturnValue(" play , pause , stop ");
33
- const result = getPlayerActionButtons({});
34
- expect(result).toEqual(["play", "pause"]);
35
- });
36
-
37
- it("returns only one button if only one is present", () => {
38
- (selectActionButtons as jest.Mock).mockReturnValue(" play ");
39
- const result = getPlayerActionButtons({});
40
- expect(result).toEqual(["play"]);
41
- });
42
-
43
- it("trims whitespace from button names", () => {
44
- (selectActionButtons as jest.Mock).mockReturnValue(" play , pause ");
45
- const result = getPlayerActionButtons({});
46
- expect(result).toEqual(["play", "pause"]);
47
- });
48
-
49
- it("returns an empty array if selectActionButtons returns only commas", () => {
50
- (selectActionButtons as jest.Mock).mockReturnValue(" , , ");
51
- const result = getPlayerActionButtons({});
52
- expect(result).toEqual(["", ""]);
53
- });
54
- });
@@ -1,17 +0,0 @@
1
- import { map, take, trim } from "../utils";
2
- import { selectActionButtons } from "../conf/player/selectors";
3
-
4
- /**
5
- * Returns the first two action buttons from the configuration.
6
- * @param {Object} configuration - The player configuration object.
7
- * @returns {Array} An array containing the first two action buttons.
8
- */
9
- export const getPlayerActionButtons = (configuration: any) => {
10
- const buttonsString = selectActionButtons(configuration);
11
-
12
- if (!buttonsString) {
13
- return [];
14
- }
15
-
16
- return take(2, map(buttonsString.split(","), trim));
17
- };