@applicaster/zapp-react-native-utils 15.1.0-rc.1 → 16.0.0-alpha.9803580571
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/README.md +0 -6
- package/actionUtils/index.ts +7 -0
- package/actionsExecutor/ActionExecutorContext.tsx +43 -12
- package/actionsExecutor/feedDecorator.ts +6 -6
- package/adsUtils/__tests__/createVMAP.test.ts +419 -0
- package/adsUtils/index.ts +2 -2
- package/analyticsUtils/README.md +1 -1
- package/appDataUtils/__tests__/urlScheme.test.ts +678 -0
- package/appUtils/HooksManager/__tests__/__snapshots__/hooksManager.test.js.snap +0 -188
- package/appUtils/HooksManager/__tests__/hooksManager.test.js +16 -2
- package/appUtils/HooksManager/index.ts +10 -10
- package/appUtils/RiverFocusManager/{index.js → index.ts} +25 -18
- package/appUtils/accessibilityManager/const.ts +4 -0
- package/appUtils/accessibilityManager/utils.ts +0 -1
- package/appUtils/contextKeysManager/__tests__/getKeys/failure.test.ts +7 -2
- package/appUtils/contextKeysManager/__tests__/getKeys/success.test.ts +48 -0
- package/appUtils/contextKeysManager/contextResolver.ts +51 -22
- package/appUtils/contextKeysManager/index.ts +65 -10
- package/appUtils/focusManager/__tests__/__snapshots__/focusManager.test.js.snap +3 -0
- package/appUtils/focusManager/index.ios.ts +43 -4
- package/appUtils/focusManager/treeDataStructure/Tree/__tests__/Tree.test.js +46 -0
- package/appUtils/focusManager/treeDataStructure/Tree/index.js +18 -18
- package/appUtils/focusManagerAux/utils/index.ios.ts +122 -0
- package/appUtils/focusManagerAux/utils/index.ts +11 -3
- package/appUtils/focusManagerAux/utils/utils.ios.ts +202 -3
- package/appUtils/keyCodes/keys/keys.web.ts +1 -4
- package/appUtils/orientationHelper.ts +2 -4
- package/appUtils/platform/platformUtils.ts +1 -1
- package/appUtils/playerManager/player.ts +4 -0
- package/appUtils/playerManager/playerNative.ts +30 -21
- package/appUtils/playerManager/usePlayerState.tsx +14 -2
- package/cloudEventsUtils/__tests__/index.test.ts +529 -0
- package/cloudEventsUtils/index.ts +65 -1
- package/componentsUtils/index.ts +8 -0
- package/configurationUtils/__tests__/manifestKeyParser.test.ts +26 -26
- package/enumUtils/__tests__/getEnumKeyByEnumValue.test.ts +207 -0
- package/errorUtils/__tests__/GeneralError.test.ts +97 -0
- package/errorUtils/__tests__/HttpStatusCode.test.ts +344 -0
- package/errorUtils/__tests__/MissingPluginError.test.ts +113 -0
- package/errorUtils/__tests__/NetworkError.test.ts +202 -0
- package/errorUtils/__tests__/getParsedResponse.test.ts +188 -0
- package/errorUtils/__tests__/invariant.test.ts +112 -0
- package/focusManager/aux/index.ts +1 -1
- package/headersUtils/__tests__/headersUtils.test.js +11 -1
- package/headersUtils/index.ts +2 -1
- package/manifestUtils/_internals/__tests__/index.test.js +41 -0
- package/manifestUtils/_internals/index.js +33 -0
- package/manifestUtils/defaultManifestConfigurations/player.js +59 -1
- package/manifestUtils/fieldUtils/__tests__/fieldUtils.test.js +49 -0
- package/manifestUtils/fieldUtils/index.js +54 -0
- package/manifestUtils/index.js +2 -0
- package/manifestUtils/keys.js +228 -0
- package/manifestUtils/mobileAction/button/__tests__/mobileActionButton.test.js +168 -0
- package/manifestUtils/mobileAction/button/index.js +140 -0
- package/manifestUtils/mobileAction/container/__tests__/mobileActionButtonsContainer.test.js +102 -0
- package/manifestUtils/mobileAction/container/index.js +73 -0
- package/manifestUtils/mobileAction/groups/__tests__/buildMobileActionButtonGroups.test.js +127 -0
- package/manifestUtils/mobileAction/groups/defaults.js +76 -0
- package/manifestUtils/mobileAction/groups/index.js +80 -0
- package/manifestUtils/tvAction/container/index.js +1 -1
- package/numberUtils/__tests__/toNumber.test.ts +27 -0
- package/numberUtils/__tests__/toPositiveNumber.test.ts +193 -0
- package/numberUtils/index.ts +23 -1
- package/package.json +4 -4
- package/pluginUtils/index.ts +4 -0
- package/reactHooks/advertising/index.ts +2 -2
- package/reactHooks/analytics/__tests__/useSendAnalyticsOnPress.test.ts +537 -0
- package/reactHooks/app/__tests__/useAppState.test.ts +1 -1
- package/reactHooks/autoscrolling/__tests__/useTrackCurrentAutoScrollingElement.test.ts +1 -1
- package/reactHooks/autoscrolling/__tests__/useTrackedView.test.tsx +1 -2
- package/reactHooks/cell-click/__tests__/index.test.js +1 -3
- package/reactHooks/cell-click/index.ts +2 -1
- package/reactHooks/configuration/__tests__/index.test.tsx +1 -1
- package/reactHooks/connection/__tests__/index.test.js +1 -1
- package/reactHooks/debugging/__tests__/index.test.js +4 -4
- package/reactHooks/dev/__tests__/useReRenderLog.test.ts +188 -0
- package/reactHooks/device/useIsTablet.tsx +14 -19
- package/reactHooks/device/useMemoizedIsTablet.ts +3 -3
- package/reactHooks/feed/__tests__/useBatchLoading.test.tsx +32 -23
- package/reactHooks/feed/__tests__/useBuildPipesUrl.test.tsx +19 -19
- package/reactHooks/feed/__tests__/useEntryScreenId.test.tsx +4 -1
- package/reactHooks/feed/__tests__/useFeedLoader.test.tsx +42 -30
- package/reactHooks/feed/__tests__/useInflatedUrl.test.tsx +1 -1
- package/reactHooks/feed/index.ts +0 -2
- package/reactHooks/feed/useBatchLoading.ts +7 -1
- package/reactHooks/feed/useEntryScreenId.ts +2 -2
- package/reactHooks/feed/usePipesCacheReset.ts +3 -1
- package/reactHooks/flatList/useLoadNextPageIfNeeded.ts +13 -16
- package/reactHooks/layout/__tests__/index.test.tsx +1 -1
- package/reactHooks/layout/__tests__/useLayoutVersion.test.tsx +1 -1
- package/reactHooks/layout/useDimensions/__tests__/{useDimensions.test.ts → useDimensions.test.tsx} +105 -25
- package/reactHooks/layout/useDimensions/useDimensions.ts +2 -2
- package/reactHooks/navigation/__tests__/index.test.tsx +2 -4
- package/reactHooks/navigation/index.ts +7 -6
- package/reactHooks/navigation/useRoute.ts +8 -6
- package/reactHooks/player/TVSeekControlller/TVSeekController.ts +27 -10
- package/reactHooks/player/__tests__/useAutoSeek._test.tsx +1 -1
- package/reactHooks/player/__tests__/useTapSeek._test.ts +1 -1
- package/reactHooks/resolvers/__tests__/useCellResolver.test.tsx +1 -1
- package/reactHooks/resolvers/__tests__/useComponentResolver.test.tsx +1 -1
- package/reactHooks/resolvers/useCellResolver.ts +6 -2
- package/reactHooks/resolvers/useComponentResolver.ts +8 -2
- package/reactHooks/screen/__tests__/useCurrentScreenData.test.tsx +2 -2
- package/reactHooks/screen/__tests__/useScreenBackgroundColor.test.tsx +1 -1
- package/reactHooks/screen/__tests__/useScreenData.test.tsx +1 -1
- package/reactHooks/screen/__tests__/useTargetScreenData.test.tsx +12 -4
- package/reactHooks/screen/index.ts +0 -2
- package/reactHooks/screen/useTargetScreenData.ts +4 -2
- package/reactHooks/state/useRivers.ts +1 -1
- package/reactHooks/ui/__tests__/useFadeOutWhenBlurred.test.ts +580 -0
- package/reactHooks/usePluginConfiguration.ts +2 -2
- package/reactHooks/utils/__tests__/index.test.js +1 -1
- package/rectUtils/__tests__/index.test.ts +549 -0
- package/rectUtils/index.ts +2 -2
- package/refreshUtils/RefreshCoordinator/__tests__/refreshCoordinator.test.ts +206 -0
- package/refreshUtils/RefreshCoordinator/index.ts +245 -0
- package/refreshUtils/RefreshCoordinator/utils/__tests__/getDataRefreshConfig.test.ts +104 -0
- package/refreshUtils/RefreshCoordinator/utils/index.ts +29 -0
- package/screenPickerUtils/__tests__/index.test.ts +333 -0
- package/screenState/__tests__/index.test.ts +1 -1
- package/screenUtils/index.ts +3 -0
- package/searchUtils/const.ts +7 -0
- package/searchUtils/index.ts +3 -0
- package/stringUtils/index.ts +1 -1
- package/testUtils/index.tsx +30 -21
- package/time/__tests__/BackgroundTimer.test.ts +156 -0
- package/time/__tests__/Timer.test.ts +236 -0
- package/typeGuards/__tests__/isString.test.ts +21 -0
- package/typeGuards/index.ts +4 -0
- package/utils/__tests__/mergeRight.test.ts +48 -0
- package/utils/__tests__/path.test.ts +7 -0
- package/utils/__tests__/selectors.test.ts +124 -0
- package/utils/index.ts +13 -0
- package/utils/mergeRight.ts +5 -0
- package/utils/path.ts +6 -3
- package/utils/pathOr.ts +5 -1
- package/utils/selectors.ts +46 -0
- package/zappFrameworkUtils/HookCallback/callbackNavigationAction.ts +1 -1
- package/zappFrameworkUtils/HookCallback/hookCallbackManifestExtensions.config.js +1 -1
- package/zappFrameworkUtils/loginPluginUtils.ts +1 -1
- package/reactHooks/componentsMap/index.ts +0 -55
- package/reactHooks/feed/__tests__/useFeedRefresh.test.tsx +0 -75
- package/reactHooks/feed/useFeedRefresh.tsx +0 -65
- package/reactHooks/screen/useIsStandaloneFullscreen.ts +0 -12
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { renderHook } from "@testing-library/react-hooks";
|
|
2
|
-
|
|
3
|
-
jest.useFakeTimers();
|
|
4
|
-
|
|
5
|
-
jest.mock("@applicaster/zapp-react-native-utils/reactHooks/navigation", () => ({
|
|
6
|
-
useIsScreenActive: () => true,
|
|
7
|
-
}));
|
|
8
|
-
|
|
9
|
-
const { useFeedRefresh, feedRefreshLogger } = require("..");
|
|
10
|
-
|
|
11
|
-
describe("useFeedRefresh", () => {
|
|
12
|
-
const reloadData = jest.fn();
|
|
13
|
-
|
|
14
|
-
const component = {
|
|
15
|
-
id: "foo",
|
|
16
|
-
rules: { enable_data_refreshing: true, refreshing_interval: 61 },
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
it("Calls reloadData after passed time lapses", () => {
|
|
20
|
-
renderHook(() => useFeedRefresh({ reloadData, component }));
|
|
21
|
-
|
|
22
|
-
expect(reloadData).not.toBeCalled();
|
|
23
|
-
jest.runOnlyPendingTimers();
|
|
24
|
-
expect(reloadData).toBeCalled();
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
it("Logs warning message if refresh time set below minimum value", () => {
|
|
28
|
-
const loggerSpy = jest.spyOn(feedRefreshLogger, "warning");
|
|
29
|
-
|
|
30
|
-
renderHook(() =>
|
|
31
|
-
useFeedRefresh({
|
|
32
|
-
reloadData,
|
|
33
|
-
component: {
|
|
34
|
-
...component,
|
|
35
|
-
rules: { enable_data_refreshing: true, refreshing_interval: 2 },
|
|
36
|
-
},
|
|
37
|
-
})
|
|
38
|
-
);
|
|
39
|
-
|
|
40
|
-
expect(loggerSpy).toBeCalled();
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
it("Calls reloadData on a Component that had a timer setup and was re-mounted", () => {
|
|
44
|
-
reloadData.mockReset();
|
|
45
|
-
|
|
46
|
-
// it is not called before rendering hook"
|
|
47
|
-
expect(reloadData).not.toBeCalled();
|
|
48
|
-
|
|
49
|
-
// it is not called when rendering new component (Not previously rendered)
|
|
50
|
-
renderHook(() =>
|
|
51
|
-
useFeedRefresh({ reloadData, component: { ...component, id: "bar" } })
|
|
52
|
-
);
|
|
53
|
-
|
|
54
|
-
expect(reloadData).not.toBeCalled();
|
|
55
|
-
|
|
56
|
-
// it is called when rendering previously rendered component",
|
|
57
|
-
renderHook(() => useFeedRefresh({ reloadData, component }));
|
|
58
|
-
expect(reloadData).toBeCalled();
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
it("Doesn't refresh data when enable_data_refreshing if false", () => {
|
|
62
|
-
reloadData.mockReset();
|
|
63
|
-
|
|
64
|
-
renderHook(() =>
|
|
65
|
-
useFeedRefresh({
|
|
66
|
-
reloadData,
|
|
67
|
-
component: { ...component, rules: { enable_data_refreshing: false } },
|
|
68
|
-
})
|
|
69
|
-
);
|
|
70
|
-
|
|
71
|
-
jest.runOnlyPendingTimers();
|
|
72
|
-
|
|
73
|
-
expect(reloadData).not.toBeCalled();
|
|
74
|
-
});
|
|
75
|
-
});
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import { path, max } from "ramda";
|
|
3
|
-
import { isTrue } from "@applicaster/zapp-react-native-utils/booleanUtils";
|
|
4
|
-
import { toNumberWithDefault } from "@applicaster/zapp-react-native-utils/numberUtils";
|
|
5
|
-
import { useIsScreenActive } from "@applicaster/zapp-react-native-utils/reactHooks/navigation";
|
|
6
|
-
|
|
7
|
-
import { reactHooksLogger } from "../logger";
|
|
8
|
-
import { ReloadDataFunction } from "./useFeedLoader";
|
|
9
|
-
|
|
10
|
-
export const feedRefreshLogger = reactHooksLogger.addSubsystem("feed-refresh");
|
|
11
|
-
|
|
12
|
-
type Props = {
|
|
13
|
-
reloadData?: ReloadDataFunction;
|
|
14
|
-
component: ZappUIComponent;
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
const previousTimersMap = {};
|
|
18
|
-
const minimumRefreshingInterval = 5;
|
|
19
|
-
const defaultRefreshInterval = 60;
|
|
20
|
-
|
|
21
|
-
export const useFeedRefresh = ({ reloadData, component }: Props): void => {
|
|
22
|
-
const isDataRefreshingEnabled = isTrue(
|
|
23
|
-
path(["rules", "enable_data_refreshing"], component)
|
|
24
|
-
);
|
|
25
|
-
|
|
26
|
-
const refreshing_interval = toNumberWithDefault(
|
|
27
|
-
defaultRefreshInterval,
|
|
28
|
-
component?.rules?.refreshing_interval
|
|
29
|
-
);
|
|
30
|
-
|
|
31
|
-
const refreshingIntervalInMilliseconds =
|
|
32
|
-
max(refreshing_interval, minimumRefreshingInterval) * 1000;
|
|
33
|
-
|
|
34
|
-
const isScreenActive = useIsScreenActive();
|
|
35
|
-
|
|
36
|
-
React.useEffect(() => {
|
|
37
|
-
if (isDataRefreshingEnabled && refreshing_interval && isScreenActive) {
|
|
38
|
-
if (refreshing_interval < minimumRefreshingInterval) {
|
|
39
|
-
feedRefreshLogger.warning({
|
|
40
|
-
message: `You set your feed refresh interval to ${refreshing_interval} when minimum value is ${minimumRefreshingInterval}seconds.Your feed will refresh after ${minimumRefreshingInterval}seconds.`,
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
if (!reloadData || typeof reloadData !== "function") {
|
|
45
|
-
feedRefreshLogger.warning({
|
|
46
|
-
message:
|
|
47
|
-
"reloadData function is undefined, feed refresh feature won't work properly",
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
if (previousTimersMap[component?.id]) {
|
|
52
|
-
reloadData?.();
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
const refreshInterval = setInterval(() => {
|
|
56
|
-
reloadData?.();
|
|
57
|
-
}, refreshingIntervalInMilliseconds);
|
|
58
|
-
|
|
59
|
-
return () => {
|
|
60
|
-
previousTimersMap[component?.id] = true;
|
|
61
|
-
clearInterval(refreshInterval);
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
}, [reloadData, isScreenActive]);
|
|
65
|
-
};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { useNavigation } from "@applicaster/zapp-react-native-utils/reactHooks";
|
|
2
|
-
import { toBooleanWithDefaultFalse } from "@applicaster/zapp-react-native-utils/booleanUtils";
|
|
3
|
-
|
|
4
|
-
export const useIsStandaloneFullscreen = (): boolean => {
|
|
5
|
-
const navigator = useNavigation();
|
|
6
|
-
|
|
7
|
-
return toBooleanWithDefaultFalse(
|
|
8
|
-
!navigator?.canGoBack() &&
|
|
9
|
-
// @ts-ignore
|
|
10
|
-
navigator?.screenData?.general?.allow_screen_plugin_presentation
|
|
11
|
-
);
|
|
12
|
-
};
|