@applicaster/zapp-react-native-ui-components 12.0.0-alpha.7539319320 → 12.0.0-alpha.8433353116

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 (79) hide show
  1. package/Components/AudioPlayer/AudioPlayer.tsx +9 -1
  2. package/Components/AudioPlayer/__tests__/__snapshots__/audioPlayer.test.js.snap +5 -0
  3. package/Components/AudioPlayer/helpers.tsx +1 -0
  4. package/Components/Cell/Cell.tsx +2 -2
  5. package/Components/Cell/CellWithFocusable.tsx +21 -14
  6. package/Components/Cell/TvOSCellComponent.tsx +2 -2
  7. package/Components/ErrorScreen/index.tsx +1 -1
  8. package/Components/FocusableCell/index.tsx +7 -7
  9. package/Components/FocusableList/FocusableChild.ts +24 -14
  10. package/Components/FocusableList/FocusableItem.tsx +1 -1
  11. package/Components/FocusableList/FocusableListItemWrapper.tsx +76 -0
  12. package/Components/FocusableList/hooks/useCellState.android.ts +3 -1
  13. package/Components/FocusableList/index.tsx +26 -25
  14. package/Components/GeneralContentScreen/GeneralContentScreen.tsx +11 -8
  15. package/Components/HandlePlayable/HandlePlayable.tsx +1 -1
  16. package/Components/HookRenderer/index.tsx +1 -6
  17. package/Components/Image/Image.android.tsx +3 -26
  18. package/Components/Image/Image.tsx +18 -2
  19. package/Components/Image/utils/index.ts +39 -0
  20. package/Components/Layout/TV/__tests__/index.test.tsx +1 -34
  21. package/Components/Layout/TV/index.tsx +20 -36
  22. package/Components/MasterCell/DefaultComponents/BorderContainerView/index.tsx +0 -1
  23. package/Components/MasterCell/DefaultComponents/CellBadge/index.tsx +21 -8
  24. package/Components/MasterCell/DefaultComponents/Image/Image.android.tsx +9 -26
  25. package/Components/MasterCell/DefaultComponents/Image/hooks/useImageSize.ts +65 -0
  26. package/Components/MasterCell/DefaultComponents/LiveImage/index.tsx +3 -1
  27. package/Components/MasterCell/DefaultComponents/SecondaryImage/Image.tsx +3 -2
  28. package/Components/MasterCell/DefaultComponents/Toggle.tsx +5 -1
  29. package/Components/MasterCell/SharedUI/CollapsibleTextContainer/index.ts +8 -10
  30. package/Components/ModalComponent/BottomSheetModalContent.tsx +121 -0
  31. package/Components/ModalComponent/Button/Item.tsx +82 -0
  32. package/Components/ModalComponent/Button/ItemIcon.tsx +60 -0
  33. package/Components/ModalComponent/Button/ItemLabel.tsx +101 -0
  34. package/Components/ModalComponent/Button/assets.ts +4 -0
  35. package/Components/ModalComponent/Button/index.tsx +111 -0
  36. package/Components/ModalComponent/Header/CloseButton.tsx +59 -0
  37. package/Components/ModalComponent/Header/Title.tsx +70 -0
  38. package/Components/ModalComponent/Header/assets.ts +4 -0
  39. package/Components/ModalComponent/Header/index.tsx +71 -0
  40. package/Components/ModalComponent/Header/utils.ts +79 -0
  41. package/Components/ModalComponent/index.tsx +38 -0
  42. package/Components/ModalComponent/utils.ts +126 -0
  43. package/Components/PlayerContainer/PlayerContainer.tsx +52 -28
  44. package/Components/PlayerContainer/ProgramInfo/index.tsx +3 -1
  45. package/Components/River/ComponentsMap/ComponentsMap.tsx +25 -0
  46. package/Components/River/River.tsx +8 -5
  47. package/Components/River/TV/River.tsx +2 -2
  48. package/Components/River/__tests__/__snapshots__/componentsMap.test.js.snap +1 -1
  49. package/Components/River/__tests__/componentsMap.test.js +1 -0
  50. package/Components/River/useScreenConfiguration.ts +2 -2
  51. package/Components/RouteManager/__tests__/__snapshots__/routeManager.test.js.snap +1 -0
  52. package/Components/RouteManager/__tests__/routeManager.test.js +9 -2
  53. package/Components/RouteManager/index.tsx +5 -3
  54. package/Components/Screen/__tests__/Screen.test.tsx +88 -74
  55. package/Components/Screen/__tests__/__snapshots__/Screen.test.tsx.snap +20 -6
  56. package/Components/Screen/__tests__/navigationHandler.test.ts +1 -178
  57. package/Components/Screen/index.tsx +91 -43
  58. package/Components/Screen/navigationHandler.ts +0 -82
  59. package/Components/ScreenResolver/index.tsx +1 -1
  60. package/Components/Tabs/TV/styles.ts +1 -1
  61. package/Components/TrackedView/index.tsx +6 -3
  62. package/Components/VideoLive/LiveImageManager.ts +42 -13
  63. package/Components/VideoLive/PlayerLiveImageComponent.tsx +81 -72
  64. package/Components/VideoLive/__tests__/PlayerLiveImageComponent.test.tsx +30 -3
  65. package/Components/VideoLive/__tests__/__snapshots__/PlayerLiveImageComponent.test.tsx.snap +22 -27
  66. package/Components/VideoModal/PlayerDetails.tsx +3 -0
  67. package/Components/VideoModal/PlayerWrapper.tsx +4 -2
  68. package/Components/VideoModal/__tests__/PlayerDetails.test.tsx +0 -2
  69. package/Components/VideoModal/__tests__/PlayerWrapper.test.tsx +1 -2
  70. package/Components/VideoModal/__tests__/__snapshots__/PlayerWrapper.test.tsx.snap +211 -163
  71. package/Components/Viewport/ViewportAware/__tests__/viewportAware.test.js +26 -21
  72. package/Components/Viewport/ViewportTracker/__tests__/viewportTracker.test.js +4 -5
  73. package/Components/ZappUIComponent/index.tsx +22 -12
  74. package/Components/index.js +2 -0
  75. package/Contexts/ScreenContext/index.tsx +1 -4
  76. package/Decorators/ComponentsMapWrapper/withComponentsMapProvider.tsx +7 -2
  77. package/Decorators/RiverResolver/index.tsx +0 -4
  78. package/Decorators/index.tsx +0 -4
  79. package/package.json +5 -6
@@ -145,34 +145,36 @@ const renderApplePlayer = ({
145
145
  }) => {
146
146
  const { title, summary } = item || {};
147
147
 
148
- if (!isApplePlatform()) {
148
+ if (!isApplePlatform() || !player) {
149
+ return null;
150
+ }
151
+
152
+ // TODO: Check if it is not breaking default player logic on tvos
153
+ // Also if needs to add on tvos brightcove player for QB player
154
+ if (player.supportsNativeControls()) {
155
+ return null;
156
+ }
157
+
158
+ if (isAudioContent) {
159
+ return (
160
+ <AudioPlayer
161
+ audio_item={item}
162
+ plugin_configuration={pluginConfiguration}
163
+ />
164
+ );
165
+ }
166
+
167
+ if (!playNextData && player.isPaused() && player.isAd() === false) {
149
168
  return null;
150
169
  }
151
170
 
152
171
  return (
153
- <>
154
- {!playNextData && (
155
- <>
156
- {!isAudioContent &&
157
- !!player?.isPaused() &&
158
- !!player?.isAd() === false && (
159
- <ProgramInfo
160
- title={title}
161
- subtitle={summary}
162
- plugin_configuration={pluginConfiguration}
163
- videoStyle={videoStyle}
164
- />
165
- )}
166
- </>
167
- )}
168
-
169
- {isAudioContent && (
170
- <AudioPlayer
171
- audio_item={item}
172
- plugin_configuration={pluginConfiguration}
173
- />
174
- )}
175
- </>
172
+ <ProgramInfo
173
+ title={title}
174
+ subtitle={summary}
175
+ plugin_configuration={pluginConfiguration}
176
+ videoStyle={videoStyle}
177
+ />
176
178
  );
177
179
  };
178
180
 
@@ -339,6 +341,18 @@ const PlayerContainerComponent = (props: Props) => {
339
341
  }
340
342
  }, [item?.id, item?.extensions?.resumeTime, player]);
341
343
 
344
+ const onVideoFullscreenPlayerWillPresent = React.useCallback(() => {
345
+ playerManager.invokeHandler("toggleFullscreen", {
346
+ fullscreen: true,
347
+ });
348
+ }, []);
349
+
350
+ const onVideoFullscreenPlayerWillDismiss = React.useCallback(() => {
351
+ playerManager.invokeHandler("toggleFullscreen", {
352
+ fullscreen: false,
353
+ });
354
+ }, []);
355
+
342
356
  // Util methods
343
357
  const toggleFullscreen = (event) => {
344
358
  const { fullscreen = false } = event || {};
@@ -381,17 +395,27 @@ const PlayerContainerComponent = (props: Props) => {
381
395
  id: playerContainerId,
382
396
  listener: {
383
397
  onVideoEnd,
384
- onError: onError,
385
- onLoad: onLoad,
398
+ onError,
399
+ onLoad,
386
400
  onPlayerClose: close,
387
401
  onPlayerDetached: close,
402
+ onVideoFullscreenPlayerWillDismiss,
403
+ onVideoFullscreenPlayerWillPresent,
388
404
  },
389
405
  });
390
406
 
391
407
  return () => {
392
408
  player.removeListener(playerContainerId);
393
409
  };
394
- }, [player, onVideoEnd]);
410
+ }, [
411
+ player,
412
+ onVideoEnd,
413
+ onError,
414
+ onLoad,
415
+ close,
416
+ onVideoFullscreenPlayerWillDismiss,
417
+ onVideoFullscreenPlayerWillPresent,
418
+ ]);
395
419
 
396
420
  useEffect(() => {
397
421
  // TODO: We should not use playerManager here to connect buttons to player container
@@ -621,7 +645,7 @@ const PlayerContainerComponent = (props: Props) => {
621
645
  }}
622
646
  focused={isInlineTV ? true : undefined}
623
647
  autoplay={true}
624
- controls={isAppleTV() && !isInlineTV}
648
+ controls={false}
625
649
  disableCastAction={disableCastAction}
626
650
  docked={navigator.isVideoModalDocked()}
627
651
  entry={item}
@@ -4,7 +4,9 @@ import { styleKeys } from "@applicaster/zapp-react-native-utils/styleKeysUtils";
4
4
  import { transformColorCode as fixColorHexCode } from "@applicaster/zapp-react-native-utils/transform";
5
5
  import * as R from "ramda";
6
6
  import * as React from "react";
7
- import { Image, Text, TextStyle, View, ViewStyle } from "react-native";
7
+ import { Text, TextStyle, View, ViewStyle } from "react-native";
8
+ import { QBImage as Image } from "@applicaster/zapp-react-native-ui-components/Components/Image";
9
+
8
10
  import * as programStyles from "./styles";
9
11
 
10
12
  type Props = {
@@ -21,6 +21,7 @@ import {
21
21
  import { useScreenData } from "@applicaster/zapp-react-native-utils/reactHooks/screen/useScreenData";
22
22
  import { isLast } from "@applicaster/zapp-react-native-utils/arrayUtils";
23
23
  import { withComponentsMapProvider } from "@applicaster/zapp-react-native-ui-components/Decorators/ComponentsMapWrapper";
24
+ import { useScreenScrollStore } from "@applicaster/zapp-react-native-utils/screenState";
24
25
 
25
26
  type Props = {
26
27
  feed: ZappFeed;
@@ -193,6 +194,27 @@ function ComponentsMapComponent(props: Props) {
193
194
  []
194
195
  );
195
196
 
197
+ const onScrollFlatList = React.useCallback(
198
+ ({ nativeEvent }, isScrollingDone = false) => {
199
+ const {
200
+ contentOffset: { y },
201
+ } = nativeEvent;
202
+
203
+ useScreenScrollStore.setState({
204
+ scrollingVelocity: isScrollingDone ? 0 : 1,
205
+ scrollPosition: y,
206
+ });
207
+ },
208
+ []
209
+ );
210
+
211
+ const onMomentumScrollEnd = React.useCallback(
212
+ ({ nativeEvent }) => {
213
+ onScrollFlatList({ nativeEvent }, true);
214
+ },
215
+ [onScrollFlatList]
216
+ );
217
+
196
218
  if (shouldShowLoadingError) {
197
219
  return <RiverError />;
198
220
  }
@@ -227,6 +249,9 @@ function ComponentsMapComponent(props: Props) {
227
249
  }
228
250
  ListFooterComponent={renderFooter}
229
251
  refreshControl={refreshControl}
252
+ onScroll={onScrollFlatList}
253
+ onMomentumScrollEnd={onMomentumScrollEnd}
254
+ scrollEventThrottle={16}
230
255
  {...scrollViewExtraProps}
231
256
  />
232
257
  </ViewportTracker>
@@ -1,13 +1,10 @@
1
1
  import * as React from "react";
2
2
  import * as R from "ramda";
3
+ import { GeneralContentScreen } from "@applicaster/zapp-react-native-ui-components/Components/GeneralContentScreen";
3
4
 
4
5
  import { FeedLoader } from "../FeedLoader";
5
6
  import { ScreenResolver } from "../ScreenResolver";
6
7
 
7
- import type { ZappScreenProps } from "@applicaster/zapp-react-native-flow-types";
8
-
9
- import { GeneralContentScreen } from "../GeneralContentScreen";
10
-
11
8
  type Props = ZappScreenProps & {
12
9
  feedUrl?: string;
13
10
  isInsideContainer?: boolean;
@@ -18,6 +15,12 @@ type Props = ZappScreenProps & {
18
15
  | import("react-native").FlatListProps<any>
19
16
  ) &
20
17
  Record<string, any>;
18
+ appData: AppDataKeys;
19
+ screenTitle: string;
20
+ screenSummary: string;
21
+ setIsScreenWrappedInContainer: (isInsideContainer: boolean) => void;
22
+ screenContext: ZappRiver;
23
+ river: ZappRiver;
21
24
  };
22
25
 
23
26
  type State = {
@@ -27,7 +30,7 @@ type State = {
27
30
  export class RiverComponent extends React.Component<Props, State> {
28
31
  private currentScreenTitle: string;
29
32
  private currentScreenSummary: string;
30
- constructor(props) {
33
+ constructor(props: Props) {
31
34
  super(props);
32
35
 
33
36
  this.state = {
@@ -4,7 +4,6 @@ import * as React from "react";
4
4
  import { Text } from "react-native";
5
5
  import * as R from "ramda";
6
6
 
7
- import { usePickFromState } from "@applicaster/zapp-react-native-redux/hooks";
8
7
  import {
9
8
  useFeedLoader,
10
9
  useLayoutVersion,
@@ -20,6 +19,7 @@ import {
20
19
  useNavbarState,
21
20
  useSetNavbarState,
22
21
  } from "@applicaster/zapp-react-native-utils/reactHooks/screen/useScreenContext";
22
+ import { useRivers } from "@applicaster/zapp-react-native-utils/reactHooks/state";
23
23
 
24
24
  type Props = {
25
25
  screenId: string;
@@ -53,7 +53,7 @@ export const River = (props: Props) => {
53
53
 
54
54
  const navigationPluginData = useNavigationPluginData();
55
55
 
56
- const { rivers } = usePickFromState(["rivers"]);
56
+ const rivers = useRivers();
57
57
  const isV2 = useLayoutVersion({ isV2: true });
58
58
 
59
59
  const river = React.useMemo(() => rivers?.[screenId], [screenId]);
@@ -64,7 +64,7 @@ exports[`componentsMap renders renders components map correctly 1`] = `
64
64
  refreshControl={null}
65
65
  removeClippedSubviews={true}
66
66
  renderItem={[Function]}
67
- scrollEventThrottle={50}
67
+ scrollEventThrottle={16}
68
68
  scrollIndicatorInsets={
69
69
  Object {
70
70
  "right": 1,
@@ -83,6 +83,7 @@ jest.mock("@applicaster/zapp-react-native-utils/reactHooks/navigation", () => ({
83
83
  useNavigation: jest.fn(() => ({ currentRoute: "/river/A1234" })),
84
84
  useRoute: jest.fn(() => ({ pathname: "/river/A1234", screenData })),
85
85
  useProfilerLogging: jest.fn(),
86
+ useIsScreenActive: jest.fn().mockReturnValue(true),
86
87
  }));
87
88
 
88
89
  jest.mock("@applicaster/zapp-react-native-utils/reactHooks/screen", () => ({
@@ -1,10 +1,10 @@
1
1
  import * as R from "ramda";
2
2
 
3
- import { usePickFromState } from "@applicaster/zapp-react-native-redux/hooks";
4
3
  import { useIsTablet } from "@applicaster/zapp-react-native-utils/reactHooks";
5
4
  import { toCamelCase } from "@applicaster/zapp-react-native-utils/stringUtils";
6
5
  import { useMemo } from "react";
7
6
  import { isNilOrEmpty } from "@applicaster/zapp-react-native-utils/reactUtils/helpers";
7
+ import { useRivers } from "@applicaster/zapp-react-native-utils/reactHooks/state";
8
8
 
9
9
  type GeneralContentScreen = ZappRiver & {
10
10
  styles: {
@@ -46,7 +46,7 @@ const stylingKeys = [
46
46
  ];
47
47
 
48
48
  export function useScreenConfiguration(screenId: string): ScreenConfiguration {
49
- const { rivers } = usePickFromState(["rivers"]);
49
+ const rivers = useRivers();
50
50
  const isTablet = useIsTablet();
51
51
 
52
52
  return useMemo(() => {
@@ -5,6 +5,7 @@ exports[`<RouteManager /> renders correctly 1`] = `
5
5
  screenId="A1234"
6
6
  >
7
7
  <WithProvider
8
+ pathname="/river/A1234"
8
9
  screenData={
9
10
  Object {
10
11
  "id": "A1234",
@@ -2,11 +2,17 @@ import React from "react";
2
2
  import { shallow } from "enzyme";
3
3
  import { shallowToJson } from "enzyme-to-json";
4
4
 
5
- import { ScreenResolver } from "@applicaster/zapp-react-native-ui-components/Components/ScreenResolver";
6
-
7
5
  const pathname = "/river/A1234";
8
6
  const screenData = { id: "A1234" };
9
7
 
8
+ jest.mock("@applicaster/zapp-react-native-utils/reactHooks/navigation", () => ({
9
+ useRoute: jest.fn(() => ({ pathname: pathname, screenData: screenData })),
10
+ }));
11
+
12
+ const {
13
+ ScreenResolver,
14
+ } = require("@applicaster/zapp-react-native-ui-components/Components/ScreenResolver");
15
+
10
16
  const { RouteManager } = require("../index");
11
17
 
12
18
  describe("<RouteManager />", () => {
@@ -20,6 +26,7 @@ describe("<RouteManager />", () => {
20
26
 
21
27
  it("passes the correct props to ScreenResolver", () => {
22
28
  expect(wrapper.find(ScreenResolver).props()).toEqual({
29
+ pathname: "/river/A1234",
23
30
  screenType: "river",
24
31
  screenId: "A1234",
25
32
  screenData: { id: "A1234" },
@@ -2,6 +2,7 @@ import * as React from "react";
2
2
  import * as R from "ramda";
3
3
 
4
4
  import { getPathAttributes } from "@applicaster/zapp-react-native-utils/navigationUtils";
5
+ import { useRoute } from "@applicaster/zapp-react-native-utils/reactHooks";
5
6
  import { ScreenResolver } from "../ScreenResolver";
6
7
  import { TestId } from "./TestId";
7
8
 
@@ -12,7 +13,8 @@ type Props = { pathname: string; screenData: Record<string, any> };
12
13
  * and reconciles data returned from hook plugins if needed
13
14
  * @param {Props}: see props above
14
15
  */
15
- export function RouteManager({ pathname, screenData, ...otherProps }: Props) {
16
+ export function RouteManager(props: Props) {
17
+ const { pathname, screenData: _screenData } = useRoute();
16
18
  const pathAttributes = getPathAttributes({ pathname });
17
19
 
18
20
  const { screenType, screenId } = R.last(pathAttributes);
@@ -22,8 +24,8 @@ export function RouteManager({ pathname, screenData, ...otherProps }: Props) {
22
24
  <ScreenResolver
23
25
  screenType={screenType}
24
26
  screenId={screenId}
25
- screenData={screenData}
26
- {...otherProps}
27
+ {...props}
28
+ screenData={props.screenData}
27
29
  />
28
30
  </TestId>
29
31
  );
@@ -1,11 +1,19 @@
1
1
  import * as React from "react";
2
2
  import { View } from "react-native";
3
- import { create, act } from "react-test-renderer";
3
+ import { act, create } from "react-test-renderer";
4
4
 
5
5
  const Mocked_RouteManager = jest.fn((props) => (
6
6
  <View testID="routeManager" {...props} />
7
7
  ));
8
8
 
9
+ const mock_navBarVisibleFlag = true;
10
+
11
+ const mockIsNavBarVisible = jest.fn(() => mock_navBarVisibleFlag);
12
+
13
+ jest.mock("react-native-safe-area-context", () => ({
14
+ useSafeAreaInsets: () => ({ top: 44 }),
15
+ }));
16
+
9
17
  jest.mock("../../RouteManager", () => ({
10
18
  RouteManager: Mocked_RouteManager,
11
19
  }));
@@ -23,59 +31,54 @@ jest.mock(
23
31
  })
24
32
  );
25
33
 
26
- let mock_navBarVisibleFlag = true;
27
-
28
- jest.mock("../navigationHandler.ts", () => ({
29
- isNavBarVisible: jest.fn(() => mock_navBarVisibleFlag),
30
- }));
31
-
32
34
  jest.mock("@applicaster/zapp-react-native-utils/analyticsUtils", () => ({
33
35
  useAnalytics: jest.fn(() => ({
34
36
  sendScreenEvent: jest.fn(),
35
37
  })),
36
38
  }));
37
39
 
38
- const {
39
- allowedOrientationsForScreen,
40
- getOrientation,
41
- useGetScreenOrientation,
42
- } = require("@applicaster/zapp-react-native-utils/appUtils/orientationHelper");
43
-
44
40
  jest.mock("@applicaster/zapp-react-native-utils/theme", () => ({
45
41
  useTheme: jest.fn(() => ({
46
42
  app_background_color: "blue",
47
43
  })),
48
44
  }));
49
45
 
46
+ const NavBar = jest.fn((props) => <View testID="navBar" {...props} />);
47
+
48
+ jest.mock(
49
+ "@applicaster/zapp-react-native-app/App/Layout/layoutHelpers",
50
+ () => ({
51
+ getNavigationPluginModule: () => NavBar,
52
+ })
53
+ );
54
+
50
55
  jest.mock("@applicaster/zapp-react-native-utils/reactHooks/screen", () => ({
51
- useCurrentScreenData: jest.fn(() => ({
56
+ ...(jest.requireActual(
57
+ "@applicaster/zapp-react-native-utils/reactHooks/screen"
58
+ ) as any),
59
+ useScreenData: jest.fn(() => ({
52
60
  id: "testId",
61
+ navigations: [{ id: "testId", category: "nav_bar" }],
53
62
  })),
54
- useNavbarState: jest.fn(() => ({
55
- visible: jest.fn(() => mock_navBarVisibleFlag),
63
+ useCurrentScreenData: jest.fn(() => ({
64
+ id: "testId",
56
65
  })),
57
66
  }));
58
67
 
59
- const {
60
- useCurrentScreenData,
61
- } = require("@applicaster/zapp-react-native-utils/reactHooks/screen");
62
-
63
- const { isNavBarVisible } = require("../navigationHandler");
64
-
65
- const NavBar = jest.fn((props) => <View testID="navBar" {...props} />);
66
- const navigator = {};
67
- const navBarProps = { nav_items: [] };
68
- const screenData = {};
69
-
70
68
  jest.mock("@applicaster/zapp-react-native-utils/reactHooks/navigation", () => ({
69
+ isNavBarVisible: mockIsNavBarVisible,
71
70
  useRoute: jest.fn(() => ({
72
71
  pathname: "/river/testId",
72
+ screenData: { id: "testId" },
73
73
  })),
74
74
  useNavigation: jest.fn(() => ({
75
75
  canGoBack: () => false,
76
76
  currentRoute: "/river/testId",
77
+ activeRiver: { id: "testId" },
78
+ screenData: { id: "testId" },
77
79
  data: { screen: { id: "testId" } },
78
80
  })),
81
+ useIsScreenActive: jest.fn().mockReturnValue(true),
79
82
  }));
80
83
 
81
84
  jest.mock("@applicaster/zapp-react-native-redux/hooks", () => ({
@@ -93,9 +96,26 @@ jest.mock("@applicaster/zapp-react-native-redux/hooks", () => ({
93
96
  }),
94
97
  }));
95
98
 
99
+ const {
100
+ ORIENTATIONS,
101
+ } = require("@applicaster/zapp-react-native-utils/appUtils/orientationHelper");
102
+
103
+ const {
104
+ useCurrentScreenData,
105
+ } = require("@applicaster/zapp-react-native-utils/reactHooks/screen");
106
+
107
+ const {
108
+ allowedOrientationsForScreen,
109
+ getOrientation,
110
+ useGetScreenOrientation,
111
+ } = require("@applicaster/zapp-react-native-utils/appUtils/orientationHelper");
112
+
113
+ const navigator = {};
114
+ const navBarProps = { nav_items: [] };
115
+ const screenData = {};
116
+
96
117
  const screenProps = {
97
118
  pathname: "/foo/path",
98
- NavBar,
99
119
  navigator,
100
120
  navBarProps,
101
121
  screenData,
@@ -109,7 +129,6 @@ describe("<Screen Component />", () => {
109
129
  beforeEach(() => {
110
130
  allowedOrientationsForScreen.mockClear();
111
131
  getOrientation.mockClear();
112
- isNavBarVisible.mockClear();
113
132
  useGetScreenOrientation.mockClear();
114
133
  });
115
134
 
@@ -125,14 +144,9 @@ describe("<Screen Component />", () => {
125
144
 
126
145
  describe("when the navbar should be hidden", () => {
127
146
  beforeEach(() => {
128
- mock_navBarVisibleFlag = false;
129
147
  wrapper = create(<Screen {...screenProps} />);
130
148
  });
131
149
 
132
- afterEach(() => {
133
- mock_navBarVisibleFlag = true;
134
- });
135
-
136
150
  it("renders correctly", () => {
137
151
  act(() => {
138
152
  wrapper = create(<Screen {...screenProps} />);
@@ -142,44 +156,44 @@ describe("<Screen Component />", () => {
142
156
  });
143
157
  });
144
158
 
145
- // it("invokes the orientation hook when the route changes", () => {
146
- // act(() => {
147
- // wrapper = create(<Screen {...screenProps} />);
148
- // });
149
-
150
- // // @ts-ignore
151
- // useCurrentScreenData.mockReturnValue({
152
- // id: "player-testId",
153
- // general: { screen_orientation: ORIENTATIONS.landscapeSensor },
154
- // plugin_type: "player",
155
- // });
156
-
157
- // act(() => {
158
- // wrapper.update(
159
- // <Screen
160
- // {...screenProps}
161
- // pathname="/playable"
162
- // screenData={{
163
- // id: "player-testId",
164
- // general: { screen_orientation: ORIENTATIONS.landscapeSensor },
165
- // plugin_type: "player",
166
- // }}
167
- // />
168
- // );
169
- // });
170
-
171
- // useCurrentScreenData.mockReturnValue({
172
- // id: "player-testId",
173
- // general: { screen_orientation: ORIENTATIONS.landscapeSensor },
174
- // });
175
-
176
- // act(() => {
177
- // wrapper.update(<Screen {...screenProps} />);
178
- // });
179
-
180
- // expect(allowedOrientationsForScreen).toHaveBeenNthCalledWith(
181
- // 1,
182
- // ORIENTATIONS.landscapeSensor
183
- // );
184
- // });
159
+ it("invokes the orientation hook when the route changes", () => {
160
+ act(() => {
161
+ wrapper = create(<Screen {...screenProps} />);
162
+ });
163
+
164
+ // @ts-ignore
165
+ useCurrentScreenData.mockReturnValue({
166
+ id: "player-testId",
167
+ general: { screen_orientation: ORIENTATIONS.landscapeSensor },
168
+ plugin_type: "player",
169
+ });
170
+
171
+ act(() => {
172
+ wrapper.update(
173
+ <Screen
174
+ {...screenProps}
175
+ pathname="/playable"
176
+ screenData={{
177
+ id: "player-testId",
178
+ general: { screen_orientation: ORIENTATIONS.landscapeSensor },
179
+ plugin_type: "player",
180
+ }}
181
+ />
182
+ );
183
+ });
184
+
185
+ useCurrentScreenData.mockReturnValue({
186
+ id: "player-testId",
187
+ general: { screen_orientation: ORIENTATIONS.landscapeSensor },
188
+ });
189
+
190
+ act(() => {
191
+ wrapper.update(<Screen {...screenProps} />);
192
+ });
193
+
194
+ expect(allowedOrientationsForScreen).toHaveBeenNthCalledWith(
195
+ 1,
196
+ ORIENTATIONS.landscapeSensor
197
+ );
198
+ });
185
199
  });
@@ -6,17 +6,24 @@ exports[`<Screen Component /> when the navbar should be hidden renders correctly
6
6
  Object {
7
7
  "backgroundColor": "blue",
8
8
  "flex": 1,
9
+ "paddingTop": 0,
9
10
  }
10
11
  }
11
12
  >
12
13
  <View
13
- nav_items={Array []}
14
+ id="/river/testId"
15
+ selected="testId"
14
16
  testID="navBar"
17
+ title=""
15
18
  />
16
19
  <View>
17
20
  <View
18
- pathname="/foo/path"
19
- screenData={Object {}}
21
+ pathname="/river/testId"
22
+ screenData={
23
+ Object {
24
+ "id": "testId",
25
+ }
26
+ }
20
27
  testID="routeManager"
21
28
  />
22
29
  </View>
@@ -29,17 +36,24 @@ exports[`<Screen Component /> when the navbar should show renders correctly 1`]
29
36
  Object {
30
37
  "backgroundColor": "blue",
31
38
  "flex": 1,
39
+ "paddingTop": 0,
32
40
  }
33
41
  }
34
42
  >
35
43
  <View
36
- nav_items={Array []}
44
+ id="/river/testId"
45
+ selected="testId"
37
46
  testID="navBar"
47
+ title=""
38
48
  />
39
49
  <View>
40
50
  <View
41
- pathname="/foo/path"
42
- screenData={Object {}}
51
+ pathname="/river/testId"
52
+ screenData={
53
+ Object {
54
+ "id": "testId",
55
+ }
56
+ }
43
57
  testID="routeManager"
44
58
  />
45
59
  </View>