@applicaster/zapp-react-native-utils 16.0.0-alpha.1833861900 → 16.0.0-alpha.1852433906
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/actionUtils/index.ts +3 -1
- package/actionsExecutor/ActionExecutor.ts +57 -12
- package/actionsExecutor/ActionExecutorContext.tsx +113 -314
- package/actionsExecutor/__tests__/ActionExecutor.test.ts +71 -0
- package/actionsExecutor/__tests__/StorageActions.test.ts +98 -0
- package/actionsExecutor/__tests__/feedDecorator.test.ts +91 -0
- package/actionsExecutor/__tests__/screenToggleFlag.test.ts +90 -0
- package/actionsExecutor/actions/__tests__/dismissBottomSheet.test.ts +25 -0
- package/actionsExecutor/actions/__tests__/goBack.test.ts +62 -0
- package/actionsExecutor/actions/__tests__/goHome.test.ts +19 -0
- package/actionsExecutor/actions/__tests__/loadItemsFromSource.test.ts +88 -0
- package/actionsExecutor/actions/__tests__/navigateToScreen.test.ts +267 -0
- package/actionsExecutor/actions/__tests__/openBottomSheet.customContent.test.ts +100 -0
- package/actionsExecutor/actions/__tests__/openBottomSheet.inlineItems.test.ts +372 -0
- package/actionsExecutor/actions/__tests__/presentScreen.test.ts +127 -0
- package/actionsExecutor/actions/__tests__/showAlert.test.ts +49 -0
- package/actionsExecutor/actions/__tests__/showToast.test.ts +88 -0
- package/actionsExecutor/actions/appRestart.ts +24 -0
- package/actionsExecutor/actions/confirmDialog.ts +53 -0
- package/actionsExecutor/actions/dismissBottomSheet.ts +23 -0
- package/actionsExecutor/actions/goBack.ts +60 -0
- package/actionsExecutor/actions/goHome.ts +31 -0
- package/actionsExecutor/actions/index.ts +42 -0
- package/actionsExecutor/actions/localStorageRemove.ts +27 -0
- package/actionsExecutor/actions/localStorageSet.ts +28 -0
- package/actionsExecutor/actions/localStorageToggleFlag.ts +28 -0
- package/actionsExecutor/actions/navigateToScreen.ts +121 -0
- package/actionsExecutor/actions/openBottomSheet.ts +340 -0
- package/actionsExecutor/actions/presentScreen.ts +78 -0
- package/actionsExecutor/actions/refreshComponent.ts +85 -0
- package/actionsExecutor/actions/screenSetVariable.ts +35 -0
- package/actionsExecutor/actions/screenToggleFlag.ts +36 -0
- package/actionsExecutor/actions/sendCloudEvent.ts +93 -0
- package/actionsExecutor/actions/sessionStorageRemove.ts +19 -0
- package/actionsExecutor/actions/sessionStorageSet.ts +20 -0
- package/actionsExecutor/actions/sessionStorageToggleFlag.ts +15 -0
- package/actionsExecutor/actions/showAlert.ts +51 -0
- package/actionsExecutor/actions/showToast.ts +87 -0
- package/actionsExecutor/actions/switchLayout.ts +40 -0
- package/actionsExecutor/consts.ts +27 -0
- package/actionsExecutor/feedDecorator.ts +12 -6
- package/actionsExecutor/types.ts +59 -0
- package/analyticsUtils/AnalyticsEvents/sendMenuClickEvent.ts +2 -2
- package/analyticsUtils/PlayerAnalyticsManager.ts +1 -1
- package/analyticsUtils/__tests__/analyticsMapper.test.ts +35 -0
- package/analyticsUtils/__tests__/fixtures/analytics_mapper_testACP_events.json +1 -1
- package/analyticsUtils/__tests__/fixtures/analytics_mapper_testBlockUnlistedParams_rules.json +1 -1
- package/analyticsUtils/__tests__/fixtures/analytics_mapper_testEmptyRenameKeepsName_events.json +4 -0
- package/analyticsUtils/__tests__/fixtures/analytics_mapper_testEmptyRenameKeepsName_rules.json +6 -0
- package/analyticsUtils/__tests__/fixtures/analytics_mapper_testEventRegex_events.json +3 -9
- package/analyticsUtils/__tests__/fixtures/analytics_mapper_testIgnoreOrdering_events.json +18 -0
- package/analyticsUtils/__tests__/fixtures/analytics_mapper_testIgnoreOrdering_rules.json +16 -0
- package/analyticsUtils/__tests__/fixtures/analytics_mapper_testRegexEventNoFallback_events.json +4 -0
- package/analyticsUtils/__tests__/fixtures/analytics_mapper_testRegexEventNoFallback_rules.json +6 -0
- package/analyticsUtils/__tests__/fixtures/analytics_mapper_testRegexMultiGroupRename_events.json +4 -0
- package/analyticsUtils/__tests__/fixtures/analytics_mapper_testRegexMultiGroupRename_rules.json +6 -0
- package/analyticsUtils/__tests__/fixtures/analytics_mapper_testRegexNonNamedFullMatch_events.json +4 -0
- package/analyticsUtils/__tests__/fixtures/analytics_mapper_testRegexNonNamedFullMatch_rules.json +6 -0
- package/analyticsUtils/__tests__/fixtures/index.js +20 -0
- package/analyticsUtils/analyticsMapper.ts +4 -1
- package/appUtils/HooksManager/index.ts +9 -0
- package/appUtils/contextKeysManager/__tests__/getKey/failure.test.ts +2 -23
- package/appUtils/contextKeysManager/__tests__/getKey/success/fullSearch.test.ts +1 -25
- package/appUtils/contextKeysManager/__tests__/getKey/success/searchInSecure.test.ts +1 -7
- package/appUtils/contextKeysManager/__tests__/removeKey/failure.test.ts +1 -26
- package/appUtils/contextKeysManager/__tests__/removeKey/success.test.ts +0 -6
- package/appUtils/contextKeysManager/__tests__/setKey/failure/failedToSaveInStorage.test.ts +0 -40
- package/appUtils/contextKeysManager/__tests__/setKey/failure/invalidKey.test.ts +4 -4
- package/appUtils/contextKeysManager/__tests__/setKey/{success/saveItemAndReference.test.ts → success.test.ts} +2 -42
- package/appUtils/contextKeysManager/index.ts +29 -130
- package/appUtils/playerManager/OverlayObserver/OverlaysObserver.ts +142 -59
- package/appUtils/playerManager/OverlayObserver/__tests__/getUpcomingQueue.test.ts +67 -0
- package/appUtils/playerManager/OverlayObserver/__tests__/liveContent.test.ts +205 -0
- package/appUtils/playerManager/OverlayObserver/__tests__/utils.test.ts +56 -0
- package/appUtils/playerManager/OverlayObserver/getUpcomingQueue.android.tv.ts +4 -0
- package/appUtils/playerManager/OverlayObserver/getUpcomingQueue.ios.tv.ts +4 -0
- package/appUtils/playerManager/OverlayObserver/getUpcomingQueue.ts +24 -0
- package/appUtils/playerManager/OverlayObserver/getUpcomingQueue.web.ts +4 -0
- package/appUtils/playerManager/OverlayObserver/utils.ts +51 -20
- package/appUtils/playerManager/__tests__/playerContent.test.ts +403 -0
- package/appUtils/playerManager/__tests__/playerDiagnostics.test.ts +62 -0
- package/appUtils/playerManager/__tests__/playerFactory.test.ts +1 -1
- package/appUtils/playerManager/__tests__/playerNative.test.ts +114 -0
- package/appUtils/playerManager/__tests__/playerNativeCommand.test.ts +62 -0
- package/appUtils/playerManager/__tests__/playerToolbox.test.ts +281 -0
- package/appUtils/playerManager/__tests__/usePlayerContent.test.tsx +64 -0
- package/appUtils/playerManager/__tests__/usePlayerControllerSetup.test.tsx +62 -0
- package/appUtils/playerManager/{conts.ts → const.ts} +33 -0
- package/appUtils/playerManager/index.ts +8 -1
- package/appUtils/playerManager/player.ts +140 -3
- package/appUtils/playerManager/playerFactory.ts +1 -1
- package/appUtils/playerManager/playerNative.ts +28 -4
- package/appUtils/playerManager/playerNativeCommand.ts +3 -6
- package/appUtils/playerManager/playerToolbox.ts +196 -0
- package/appUtils/playerManager/usePlayerContent.tsx +43 -0
- package/appUtils/playerManager/usePlayerControllerSetup.tsx +7 -1
- package/appUtils/playerManager/userLanguagePreference.ts +1 -1
- package/arrayUtils/__tests__/{anyThruthy.test.ts → anyTruthy.test.ts} +8 -0
- package/arrayUtils/__tests__/arrayUtils.test.ts +165 -108
- package/arrayUtils/__tests__/isEmptyArray.test.ts +11 -0
- package/arrayUtils/__tests__/isFilledArray.test.ts +12 -0
- package/arrayUtils/__tests__/isFirst.test.ts +17 -0
- package/arrayUtils/__tests__/isIndexInRange.test.ts +14 -0
- package/arrayUtils/__tests__/isLast.test.ts +31 -0
- package/arrayUtils/__tests__/makeListOf.test.ts +31 -0
- package/arrayUtils/__tests__/makeListOfIndexes.test.ts +20 -0
- package/arrayUtils/__tests__/reorderByIds.test.ts +63 -0
- package/arrayUtils/__tests__/sample.test.ts +61 -0
- package/arrayUtils/index.ts +119 -20
- package/bottomSheet/__tests__/scrollContext.test.tsx +35 -0
- package/bottomSheet/index.ts +17 -0
- package/cellUtils/__tests__/getButtonsEnabled.test.ts +28 -0
- package/cellUtils/__tests__/getCellNavigationEnabled.test.ts +36 -0
- package/cellUtils/__tests__/getIsCellNavigationEnabled.test.ts +35 -0
- package/cellUtils/__tests__/isCellNavigationEnabled.test.ts +21 -0
- package/cellUtils/index.ts +73 -8
- package/colorUtils/__tests__/isTransparentColor.test.ts +76 -0
- package/colorUtils/__tests__/isValidColor.test.ts +70 -0
- package/colorUtils/index.ts +50 -0
- package/configurationUtils/__tests__/manifestKeyParser.test.ts +21 -0
- package/configurationUtils/__tests__/modalBlocksParser.test.ts +403 -0
- package/configurationUtils/manifestKeyParser.ts +50 -10
- package/configurationUtils/modalBlocksParser.ts +252 -0
- package/entryActions/__tests__/buildEntryActions.test.ts +235 -0
- package/entryActions/aliasPresentation.ts +108 -0
- package/entryActions/buildEntryActions.ts +167 -0
- package/entryActions/index.ts +15 -0
- package/entryActions/types.ts +39 -0
- package/focusManager/FocusManager.ts +26 -0
- package/focusManager/__tests__/FocusManager.test.ts +9 -0
- package/localizationUtils/index.ts +12 -6
- package/logger/__tests__/xrayToolbox.test.ts +69 -0
- package/logger/xrayToolbox.ts +67 -0
- package/manifestUtils/__tests__/player.audioControls.test.js +158 -0
- package/manifestUtils/_internals/index.js +14 -3
- package/manifestUtils/defaultManifestConfigurations/generalContent.js +41 -0
- package/manifestUtils/defaultManifestConfigurations/player.js +357 -20
- package/manifestUtils/fieldUtils/__tests__/fieldUtils.test.js +84 -0
- package/manifestUtils/fieldUtils/index.js +125 -0
- package/manifestUtils/index.js +3 -0
- package/manifestUtils/keys.js +16 -2
- package/manifestUtils/mobileAction/button/index.js +16 -0
- package/manifestUtils/mobileAction/container/__tests__/mobileActionButtonsContainer.test.js +21 -0
- package/manifestUtils/mobileAction/container/index.js +3 -1
- package/manifestUtils/mobileAction/groups/__tests__/buildMobileActionButtonGroups.test.js +1 -1
- package/manifestUtils/mobileAction/groups/defaults.js +5 -2
- package/manifestUtils/modalBlocks.js +304 -0
- package/manifestUtils/platformIsTV.js +1 -0
- package/modalState/ContentViewModel.ts +113 -0
- package/modalState/EditableCollection.ts +17 -0
- package/modalState/EditableCollectionRegistry.ts +51 -0
- package/modalState/ModalOrchestrator.ts +213 -0
- package/modalState/RemoteEditableCollection.ts +235 -0
- package/modalState/__tests__/ContentViewModel.editable.test.ts +69 -0
- package/modalState/__tests__/ContentViewModel.test.ts +165 -0
- package/modalState/__tests__/EditableCollectionRegistry.test.ts +112 -0
- package/modalState/__tests__/ModalOrchestrator.phase3.test.ts +86 -0
- package/modalState/__tests__/RemoteEditableCollection.test.ts +415 -0
- package/modalState/__tests__/index.test.ts +30 -1
- package/modalState/__tests__/useBottomSheetContent.test.ts +349 -0
- package/modalState/__tests__/useModalStoreState.test.ts +142 -0
- package/modalState/index.ts +37 -83
- package/modalState/store.ts +109 -0
- package/modalState/types.ts +173 -0
- package/modalState/useBottomSheetContent.ts +109 -0
- package/navigationUtils/xrayNavigator.ts +12 -0
- package/numberUtils/__tests__/isMinusZero.test.ts +20 -0
- package/numberUtils/__tests__/isZero.test.ts +27 -0
- package/numberUtils/__tests__/requireNumber.test.ts +50 -0
- package/numberUtils/__tests__/toNumber.test.ts +27 -0
- package/numberUtils/__tests__/toNumberWithDefault.test.ts +64 -0
- package/numberUtils/__tests__/toNumberWithDefaultZero.test.ts +48 -0
- package/numberUtils/index.ts +27 -8
- package/package.json +3 -2
- package/pipesUtils/__tests__/buildUrlWithQuery.test.ts +33 -0
- package/pipesUtils/__tests__/withPipesEndpoint.test.tsx +56 -0
- package/pipesUtils/index.ts +1 -0
- package/pipesUtils/withPipesEndpoint.tsx +54 -0
- package/playerUtils/__tests__/contentDataKeys.test.ts +297 -0
- package/playerUtils/__tests__/resolvePlayerActions.test.ts +138 -0
- package/playerUtils/__tests__/resolvePlayerTitleSubtitle.test.ts +180 -0
- package/playerUtils/contentDataKeys.ts +134 -0
- package/playerUtils/index.ts +37 -16
- package/playerUtils/isAudioItem.ts +26 -0
- package/playerUtils/resolvePlayerActions.ts +71 -0
- package/playerUtils/resolvePlayerTitleSubtitle.ts +76 -0
- package/pluginUtils/__tests__/pluginUtils.test.js +32 -0
- package/pluginUtils/index.ts +29 -0
- package/quickBrickAssets/__tests__/index.test.ts +18 -0
- package/quickBrickAssets/index.ts +35 -0
- package/reactHooks/__tests__/getPluginConfiguration.test.ts +82 -0
- package/reactHooks/actions/index.ts +124 -3
- package/reactHooks/cell-click/__tests__/index.test.js +64 -0
- package/reactHooks/cell-click/index.ts +39 -24
- package/reactHooks/connection/index.tsx +8 -5
- package/reactHooks/feed/__mocks__/useMarkPipesDataStale.ts +4 -0
- package/reactHooks/feed/__tests__/feedInvalidation.test.tsx +338 -0
- package/reactHooks/feed/__tests__/useBatchLoading.test.tsx +8 -2
- package/reactHooks/feed/__tests__/useInflatedUrl.test.tsx +25 -0
- package/reactHooks/feed/__tests__/useMarkPipesDataStale.test.tsx +243 -0
- package/reactHooks/feed/index.ts +5 -1
- package/reactHooks/feed/useBatchLoading.ts +9 -1
- package/reactHooks/feed/useFeedLoader.tsx +28 -1
- package/reactHooks/feed/useLoadPipesDataDispatch.ts +12 -11
- package/reactHooks/feed/useMarkPipesDataStale.ts +97 -0
- package/reactHooks/index.ts +2 -0
- package/reactHooks/layout/index.ts +1 -1
- package/reactHooks/navigation/__mocks__/index.ts +4 -0
- package/reactHooks/navigation/__tests__/index.test.tsx +176 -1
- package/reactHooks/navigation/__tests__/useIsScreenActive.test.ts +42 -0
- package/reactHooks/navigation/__tests__/usePresentScreen.test.ts +154 -0
- package/reactHooks/navigation/index.ts +3 -1
- package/reactHooks/navigation/useIsScreenActive.ts +29 -8
- package/reactHooks/navigation/usePresentScreen.ts +157 -0
- package/reactHooks/navigation/useRoute.ts +22 -5
- package/reactHooks/state/useComponentScreenState.ts +1 -1
- package/reactHooks/usePluginConfiguration.ts +88 -47
- package/reactHooks/utils/__tests__/index.test.js +22 -2
- package/reactHooks/utils/index.ts +13 -2
- package/riverComponetsMeasurementProvider/index.tsx +15 -9
- package/stringUtils/__tests__/stringUtils.test.js +42 -0
- package/stringUtils/index.ts +2 -2
- package/uiActionsRegistrator/__tests__/resolveActionIdentifiers.test.ts +93 -0
- package/uiActionsRegistrator/__tests__/subscribe.test.ts +133 -0
- package/uiActionsRegistrator/__tests__/usableActionItems.test.ts +52 -0
- package/uiActionsRegistrator/index.ts +25 -0
- package/uiActionsRegistrator/registry.ts +351 -0
- package/uiActionsRegistrator/resolveActionIdentifiers.ts +100 -0
- package/uiActionsRegistrator/usableActionItems.ts +66 -0
- package/zappFrameworkUtils/__tests__/localStorageHelper.test.ts +146 -0
- package/zappFrameworkUtils/localStorageHelper.ts +19 -15
- package/appUtils/contextKeysManager/__tests__/getKey/success/byReference.test.ts +0 -56
- package/appUtils/contextKeysManager/__tests__/getKeyByReference/failure.test.ts +0 -265
- package/appUtils/contextKeysManager/__tests__/getKeyByReference/success.test.ts +0 -303
- package/appUtils/contextKeysManager/__tests__/removeReferenceForKey/failure.test.ts +0 -82
- package/appUtils/contextKeysManager/__tests__/removeReferenceForKey/success.test.ts +0 -41
- package/appUtils/contextKeysManager/__tests__/setKey/success/saveItemButNotReference.test.ts +0 -208
- package/appUtils/contextKeysManager/__tests__/setReferenceForKey/failure.test.ts +0 -93
- package/appUtils/contextKeysManager/__tests__/setReferenceForKey/success.test.ts +0 -45
- package/appUtils/playerManager/usePlayerTitleSummaryOverlay.tsx +0 -56
- package/playerUtils/__tests__/getPlayerActionButtons.test.ts +0 -54
- package/playerUtils/getPlayerActionButtons.ts +0 -17
- package/reactHooks/feed/__mocks__/usePipesCacheReset.ts +0 -1
- package/reactHooks/feed/usePipesCacheReset.ts +0 -44
- /package/reactHooks/actions/__tests__/{index.test.js → index.test.tsx} +0 -0
package/appUtils/contextKeysManager/__tests__/setKey/success/saveItemButNotReference.test.ts
DELETED
|
@@ -1,208 +0,0 @@
|
|
|
1
|
-
import { ContextKeysManager } from "../../..";
|
|
2
|
-
import { StorageLevel } from "../../../consts";
|
|
3
|
-
|
|
4
|
-
describe("Context Keys Manager - setKey", () => {
|
|
5
|
-
it("returns true if saved item but not reference with storage-level=default", async () => {
|
|
6
|
-
// setup
|
|
7
|
-
const key = "namespace.key";
|
|
8
|
-
const value = "value";
|
|
9
|
-
const storageLevel = StorageLevel.default;
|
|
10
|
-
|
|
11
|
-
const mockedLogger = {
|
|
12
|
-
warn: jest.fn(),
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
const mockedSessionStorage = {
|
|
16
|
-
getItem: jest.fn(),
|
|
17
|
-
setItem: jest.fn().mockResolvedValueOnce(true),
|
|
18
|
-
removeItem: jest.fn(),
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
const mockedLocalStorage = {
|
|
22
|
-
getItem: jest.fn(),
|
|
23
|
-
setItem: jest.fn(),
|
|
24
|
-
removeItem: jest.fn(),
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
const mockedSecureStorage = {
|
|
28
|
-
getItem: jest.fn(),
|
|
29
|
-
setItem: jest.fn(),
|
|
30
|
-
removeItem: jest.fn(),
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
const contextManager = new ContextKeysManager({
|
|
34
|
-
logger: mockedLogger,
|
|
35
|
-
sessionStorage: mockedSessionStorage,
|
|
36
|
-
localStorage: mockedLocalStorage,
|
|
37
|
-
secureStorage: mockedSecureStorage,
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
const setReferenceForKey = jest
|
|
41
|
-
.spyOn(contextManager, "setReferenceForKey")
|
|
42
|
-
.mockResolvedValueOnce(false);
|
|
43
|
-
|
|
44
|
-
// run
|
|
45
|
-
const result = await contextManager.setKey({ key, value, storageLevel });
|
|
46
|
-
|
|
47
|
-
// verify
|
|
48
|
-
expect(result).toBe(true);
|
|
49
|
-
|
|
50
|
-
expect(mockedLogger.warn).not.toHaveBeenCalled();
|
|
51
|
-
|
|
52
|
-
expect(mockedSessionStorage.getItem).not.toHaveBeenCalled();
|
|
53
|
-
|
|
54
|
-
expect(mockedSessionStorage.setItem).toHaveBeenCalledWith(
|
|
55
|
-
"key",
|
|
56
|
-
value,
|
|
57
|
-
"namespace"
|
|
58
|
-
);
|
|
59
|
-
|
|
60
|
-
expect(mockedLocalStorage.getItem).not.toHaveBeenCalled();
|
|
61
|
-
expect(mockedLocalStorage.setItem).not.toHaveBeenCalled();
|
|
62
|
-
|
|
63
|
-
expect(mockedSecureStorage.getItem).not.toHaveBeenCalled();
|
|
64
|
-
expect(mockedSecureStorage.setItem).not.toHaveBeenCalled();
|
|
65
|
-
|
|
66
|
-
expect(setReferenceForKey).toHaveBeenCalledWith(
|
|
67
|
-
"key",
|
|
68
|
-
"namespace",
|
|
69
|
-
StorageLevel.default
|
|
70
|
-
);
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
it("returns true if saved item but not reference with storage-level=persisted", async () => {
|
|
74
|
-
// setup
|
|
75
|
-
const key = "namespace.key";
|
|
76
|
-
const value = "value";
|
|
77
|
-
const storageLevel = StorageLevel.persisted;
|
|
78
|
-
|
|
79
|
-
const mockedLogger = {
|
|
80
|
-
warn: jest.fn(),
|
|
81
|
-
};
|
|
82
|
-
|
|
83
|
-
const mockedSessionStorage = {
|
|
84
|
-
getItem: jest.fn(),
|
|
85
|
-
setItem: jest.fn(),
|
|
86
|
-
removeItem: jest.fn(),
|
|
87
|
-
};
|
|
88
|
-
|
|
89
|
-
const mockedLocalStorage = {
|
|
90
|
-
getItem: jest.fn(),
|
|
91
|
-
setItem: jest.fn().mockResolvedValueOnce(true),
|
|
92
|
-
removeItem: jest.fn(),
|
|
93
|
-
};
|
|
94
|
-
|
|
95
|
-
const mockedSecureStorage = {
|
|
96
|
-
getItem: jest.fn(),
|
|
97
|
-
setItem: jest.fn(),
|
|
98
|
-
removeItem: jest.fn(),
|
|
99
|
-
};
|
|
100
|
-
|
|
101
|
-
const contextManager = new ContextKeysManager({
|
|
102
|
-
logger: mockedLogger,
|
|
103
|
-
sessionStorage: mockedSessionStorage,
|
|
104
|
-
localStorage: mockedLocalStorage,
|
|
105
|
-
secureStorage: mockedSecureStorage,
|
|
106
|
-
});
|
|
107
|
-
|
|
108
|
-
const setReferenceForKey = jest
|
|
109
|
-
.spyOn(contextManager, "setReferenceForKey")
|
|
110
|
-
.mockResolvedValueOnce(false);
|
|
111
|
-
|
|
112
|
-
// run
|
|
113
|
-
const result = await contextManager.setKey({ key, value, storageLevel });
|
|
114
|
-
|
|
115
|
-
// verify
|
|
116
|
-
expect(result).toBe(true);
|
|
117
|
-
|
|
118
|
-
expect(mockedLogger.warn).not.toHaveBeenCalled();
|
|
119
|
-
|
|
120
|
-
expect(mockedSessionStorage.getItem).not.toHaveBeenCalled();
|
|
121
|
-
expect(mockedSessionStorage.setItem).not.toHaveBeenCalled();
|
|
122
|
-
|
|
123
|
-
expect(mockedLocalStorage.getItem).not.toHaveBeenCalled();
|
|
124
|
-
|
|
125
|
-
expect(mockedLocalStorage.setItem).toHaveBeenCalledWith(
|
|
126
|
-
"key",
|
|
127
|
-
value,
|
|
128
|
-
"namespace"
|
|
129
|
-
);
|
|
130
|
-
|
|
131
|
-
expect(mockedSecureStorage.getItem).not.toHaveBeenCalled();
|
|
132
|
-
expect(mockedSecureStorage.setItem).not.toHaveBeenCalled();
|
|
133
|
-
|
|
134
|
-
expect(setReferenceForKey).toHaveBeenCalledWith(
|
|
135
|
-
"key",
|
|
136
|
-
"namespace",
|
|
137
|
-
StorageLevel.persisted
|
|
138
|
-
);
|
|
139
|
-
});
|
|
140
|
-
|
|
141
|
-
it("returns true if saved item but not reference with storage-level=secure", async () => {
|
|
142
|
-
// setup
|
|
143
|
-
const key = "namespace.key";
|
|
144
|
-
const value = "value";
|
|
145
|
-
const storageLevel = StorageLevel.secure;
|
|
146
|
-
|
|
147
|
-
const mockedLogger = {
|
|
148
|
-
warn: jest.fn(),
|
|
149
|
-
};
|
|
150
|
-
|
|
151
|
-
const mockedSessionStorage = {
|
|
152
|
-
getItem: jest.fn(),
|
|
153
|
-
setItem: jest.fn(),
|
|
154
|
-
removeItem: jest.fn(),
|
|
155
|
-
};
|
|
156
|
-
|
|
157
|
-
const mockedLocalStorage = {
|
|
158
|
-
getItem: jest.fn(),
|
|
159
|
-
setItem: jest.fn(),
|
|
160
|
-
removeItem: jest.fn(),
|
|
161
|
-
};
|
|
162
|
-
|
|
163
|
-
const mockedSecureStorage = {
|
|
164
|
-
getItem: jest.fn(),
|
|
165
|
-
setItem: jest.fn().mockResolvedValueOnce(true),
|
|
166
|
-
removeItem: jest.fn(),
|
|
167
|
-
};
|
|
168
|
-
|
|
169
|
-
const contextManager = new ContextKeysManager({
|
|
170
|
-
logger: mockedLogger,
|
|
171
|
-
sessionStorage: mockedSessionStorage,
|
|
172
|
-
localStorage: mockedLocalStorage,
|
|
173
|
-
secureStorage: mockedSecureStorage,
|
|
174
|
-
});
|
|
175
|
-
|
|
176
|
-
const setReferenceForKey = jest
|
|
177
|
-
.spyOn(contextManager, "setReferenceForKey")
|
|
178
|
-
.mockResolvedValueOnce(false);
|
|
179
|
-
|
|
180
|
-
// run
|
|
181
|
-
const result = await contextManager.setKey({ key, value, storageLevel });
|
|
182
|
-
|
|
183
|
-
// verify
|
|
184
|
-
expect(result).toBe(true);
|
|
185
|
-
|
|
186
|
-
expect(mockedLogger.warn).not.toHaveBeenCalled();
|
|
187
|
-
|
|
188
|
-
expect(mockedSessionStorage.getItem).not.toHaveBeenCalled();
|
|
189
|
-
expect(mockedSessionStorage.setItem).not.toHaveBeenCalled();
|
|
190
|
-
|
|
191
|
-
expect(mockedLocalStorage.getItem).not.toHaveBeenCalled();
|
|
192
|
-
expect(mockedLocalStorage.setItem).not.toHaveBeenCalled();
|
|
193
|
-
|
|
194
|
-
expect(mockedSecureStorage.getItem).not.toHaveBeenCalled();
|
|
195
|
-
|
|
196
|
-
expect(mockedSecureStorage.setItem).toHaveBeenCalledWith(
|
|
197
|
-
"key",
|
|
198
|
-
value,
|
|
199
|
-
"namespace"
|
|
200
|
-
);
|
|
201
|
-
|
|
202
|
-
expect(setReferenceForKey).toHaveBeenCalledWith(
|
|
203
|
-
"key",
|
|
204
|
-
"namespace",
|
|
205
|
-
StorageLevel.secure
|
|
206
|
-
);
|
|
207
|
-
});
|
|
208
|
-
});
|
|
@@ -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
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export const usePipesCacheReset = jest.fn();
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
|
|
3
|
-
import { getDatasourceUrl } from "@applicaster/zapp-react-native-ui-components/Decorators/RiverFeedLoader/utils/getDatasourceUrl";
|
|
4
|
-
import { usePipesContexts } from "@applicaster/zapp-react-native-ui-components/Decorators/RiverFeedLoader/utils/usePipesContexts";
|
|
5
|
-
import { clearPipesData } from "@applicaster/zapp-react-native-redux/ZappPipes";
|
|
6
|
-
|
|
7
|
-
import { useRoute } from "../navigation";
|
|
8
|
-
import { useAppDispatch } from "@applicaster/zapp-react-native-redux";
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* reset river components cache when screen is unmounted
|
|
12
|
-
* @param {string} riverId screen id
|
|
13
|
-
* @param {Array} riverComponents list of UI components
|
|
14
|
-
*/
|
|
15
|
-
export const usePipesCacheReset = (riverId, riverComponents) => {
|
|
16
|
-
const dispatch = useAppDispatch();
|
|
17
|
-
const { screenData, pathname } = useRoute();
|
|
18
|
-
const pipesContexts = usePipesContexts(riverId, pathname);
|
|
19
|
-
|
|
20
|
-
React.useEffect(() => {
|
|
21
|
-
return () => {
|
|
22
|
-
riverComponents.forEach((component) => {
|
|
23
|
-
if (
|
|
24
|
-
component?.rules?.clear_cache_on_reload &&
|
|
25
|
-
component?.data?.source &&
|
|
26
|
-
// We don't want to refresh cache when closing/minimising videoModal
|
|
27
|
-
!pathname.includes("videoModal")
|
|
28
|
-
) {
|
|
29
|
-
const url = getDatasourceUrl(
|
|
30
|
-
{
|
|
31
|
-
screenData,
|
|
32
|
-
...pipesContexts,
|
|
33
|
-
},
|
|
34
|
-
component
|
|
35
|
-
);
|
|
36
|
-
|
|
37
|
-
if (url) {
|
|
38
|
-
dispatch(clearPipesData(url, { riverId }));
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
};
|
|
43
|
-
}, []);
|
|
44
|
-
};
|
|
File without changes
|