@applicaster/zapp-react-native-ui-components 12.0.0-alpha.7725319213 → 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 (71) 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 +6 -3
  15. package/Components/HookRenderer/index.tsx +1 -6
  16. package/Components/Image/Image.android.tsx +3 -25
  17. package/Components/Image/Image.tsx +18 -2
  18. package/Components/Image/utils/index.ts +39 -0
  19. package/Components/Layout/TV/__tests__/index.test.tsx +1 -34
  20. package/Components/Layout/TV/index.tsx +20 -36
  21. package/Components/MasterCell/DefaultComponents/Image/Image.android.tsx +9 -26
  22. package/Components/MasterCell/DefaultComponents/Image/hooks/useImageSize.ts +65 -0
  23. package/Components/MasterCell/DefaultComponents/LiveImage/index.tsx +3 -1
  24. package/Components/MasterCell/DefaultComponents/SecondaryImage/Image.tsx +3 -2
  25. package/Components/MasterCell/DefaultComponents/Toggle.tsx +5 -1
  26. package/Components/MasterCell/SharedUI/CollapsibleTextContainer/index.ts +8 -14
  27. package/Components/ModalComponent/BottomSheetModalContent.tsx +121 -0
  28. package/Components/ModalComponent/Button/Item.tsx +82 -0
  29. package/Components/ModalComponent/Button/ItemIcon.tsx +60 -0
  30. package/Components/ModalComponent/Button/ItemLabel.tsx +101 -0
  31. package/Components/ModalComponent/Button/assets.ts +4 -0
  32. package/Components/ModalComponent/Button/index.tsx +111 -0
  33. package/Components/ModalComponent/Header/CloseButton.tsx +59 -0
  34. package/Components/ModalComponent/Header/Title.tsx +70 -0
  35. package/Components/ModalComponent/Header/assets.ts +4 -0
  36. package/Components/ModalComponent/Header/index.tsx +71 -0
  37. package/Components/ModalComponent/Header/utils.ts +79 -0
  38. package/Components/ModalComponent/index.tsx +38 -0
  39. package/Components/ModalComponent/utils.ts +126 -0
  40. package/Components/PlayerContainer/PlayerContainer.tsx +51 -29
  41. package/Components/PlayerContainer/ProgramInfo/index.tsx +3 -1
  42. package/Components/River/ComponentsMap/ComponentsMap.tsx +25 -0
  43. package/Components/River/TV/River.tsx +2 -2
  44. package/Components/River/__tests__/__snapshots__/componentsMap.test.js.snap +1 -1
  45. package/Components/River/__tests__/componentsMap.test.js +1 -0
  46. package/Components/River/useScreenConfiguration.ts +2 -2
  47. package/Components/RouteManager/__tests__/__snapshots__/routeManager.test.js.snap +1 -0
  48. package/Components/RouteManager/__tests__/routeManager.test.js +9 -2
  49. package/Components/RouteManager/index.tsx +5 -3
  50. package/Components/Screen/__tests__/Screen.test.tsx +88 -74
  51. package/Components/Screen/__tests__/__snapshots__/Screen.test.tsx.snap +20 -6
  52. package/Components/Screen/__tests__/navigationHandler.test.ts +1 -178
  53. package/Components/Screen/index.tsx +91 -42
  54. package/Components/Screen/navigationHandler.ts +0 -82
  55. package/Components/ScreenResolver/index.tsx +1 -1
  56. package/Components/Tabs/TV/styles.ts +1 -1
  57. package/Components/VideoLive/LiveImageManager.ts +2 -2
  58. package/Components/VideoLive/PlayerLiveImageComponent.tsx +31 -28
  59. package/Components/VideoLive/__tests__/PlayerLiveImageComponent.test.tsx +30 -3
  60. package/Components/VideoLive/__tests__/__snapshots__/PlayerLiveImageComponent.test.tsx.snap +22 -27
  61. package/Components/VideoModal/PlayerDetails.tsx +3 -0
  62. package/Components/VideoModal/__tests__/PlayerDetails.test.tsx +0 -2
  63. package/Components/VideoModal/__tests__/PlayerWrapper.test.tsx +1 -2
  64. package/Components/VideoModal/__tests__/__snapshots__/PlayerWrapper.test.tsx.snap +211 -163
  65. package/Components/Viewport/ViewportAware/__tests__/viewportAware.test.js +26 -21
  66. package/Components/Viewport/ViewportTracker/__tests__/viewportTracker.test.js +4 -5
  67. package/Components/ZappUIComponent/index.tsx +22 -12
  68. package/Components/index.js +2 -0
  69. package/Contexts/ScreenContext/index.tsx +1 -4
  70. package/Decorators/ComponentsMapWrapper/withComponentsMapProvider.tsx +7 -2
  71. package/package.json +5 -5
@@ -1,35 +1,37 @@
1
1
  /// <reference types="@applicaster/applicaster-types" />
2
- import React, { useMemo } from "react";
2
+ import React from "react";
3
3
  import * as R from "ramda";
4
4
  import { View } from "react-native";
5
- import { RouteManager } from "../RouteManager";
6
- import { useTheme } from "@applicaster/zapp-react-native-utils/theme";
7
- import { useScreenOrientationHandler } from "./orientationHandler";
8
- import { useScreenConfiguration } from "../River/useScreenConfiguration";
9
- import { useCurrentScreenData } from "@applicaster/zapp-react-native-utils/reactHooks/screen";
10
5
  import { usePickFromState } from "@applicaster/zapp-react-native-redux/hooks";
6
+
7
+ import { useTheme } from "@applicaster/zapp-react-native-utils/theme";
8
+ import { getComponentModule } from "@applicaster/zapp-react-native-utils/pluginUtils";
9
+ import { getNavigationPropsV2 } from "@applicaster/zapp-react-native-utils/navigationUtils";
10
+ import { useSafeAreaInsets } from "react-native-safe-area-context";
11
+ import {
12
+ useDimensions,
13
+ useRoute,
14
+ useCurrentScreenData,
15
+ useNavbarState,
16
+ useScreenData,
17
+ useNavigation,
18
+ } from "@applicaster/zapp-react-native-utils/reactHooks";
19
+ import { getNavigationPluginModule } from "@applicaster/zapp-react-native-app/App/Layout/layoutHelpers";
20
+
11
21
  import { ScreenContextProvider } from "../../Contexts/ScreenContext";
22
+ import { RouteManager } from "../RouteManager";
23
+ import { useScreenConfiguration } from "../River/useScreenConfiguration";
24
+ import { useScreenOrientationHandler } from "./orientationHandler";
12
25
 
13
- type Props = {
14
- pathname: string;
15
- screenData: Record<string, any>;
16
- NavBar: ZappPlugin;
17
- Menu: ZappPlugin;
18
- navBarProps: Record<string, any>;
19
- isNavBarVisible: boolean;
20
- menuProps: {
21
- setToggleMenu: () => void;
22
- toggleMenu: () => void;
23
- openMenu: () => void;
24
- setOpenMenu: () => void;
25
- closeMenu: () => void;
26
- setCloseMenu: () => void;
27
- dimensions: { window: number };
28
- navigator: ZappNavigationProps;
29
- bottomTabBarHeight: number;
30
- isRTL: boolean;
31
- category: string;
32
- } & QuickBrickAppNavigator;
26
+ const getScreenId = (
27
+ screenData: LegacyNavigationScreenData,
28
+ fallbackRiver: ZappRiver
29
+ ) => {
30
+ return screenData?.targetScreen
31
+ ? screenData?.targetScreen?.id ?? fallbackRiver.id
32
+ : "screen_id" in screenData
33
+ ? screenData.screen_id
34
+ : fallbackRiver.id;
33
35
  };
34
36
 
35
37
  function colorIsNotTransparent(color) {
@@ -49,25 +51,65 @@ function isValidColor(string) {
49
51
  return string && string !== "transparent" && colorIsNotTransparent(string);
50
52
  }
51
53
 
52
- export function Screen(props: Props) {
53
- const { pathname, screenData, NavBar } = props;
54
+ type Props = {
55
+ setToggleMenu: () => void;
56
+ setCloseMenu: () => void;
57
+ };
58
+
59
+ export function Screen({ setToggleMenu, setCloseMenu }: Props) {
60
+ const theme = useTheme<BaseThemePropertiesMobile>();
61
+ const navigation = useNavigation();
54
62
  const { plugins } = usePickFromState(["plugins"]);
55
63
 
56
- const offlinePlugin = useMemo(
64
+ // Gets the data for the current screen configuration
65
+ const currentScreenData = useCurrentScreenData();
66
+ const { backgroundColor } = useScreenConfiguration(currentScreenData.id);
67
+ const insets = useSafeAreaInsets();
68
+
69
+ const { width: screenWidth } = useDimensions("screen", {
70
+ fullDimensions: true,
71
+ });
72
+
73
+ const routeData = useRoute();
74
+
75
+ const currentRiver = useScreenData(
76
+ getScreenId(routeData.screenData, navigation.activeRiver)
77
+ );
78
+
79
+ const { title } = useNavbarState();
80
+
81
+ const navBarProps = React.useMemo(
82
+ () => ({
83
+ ...getNavigationPropsV2({
84
+ currentRiver,
85
+ title,
86
+ category: "nav_bar",
87
+ }),
88
+ setToggleMenu,
89
+ setCloseMenu,
90
+ }),
91
+ [currentRiver, setCloseMenu, setToggleMenu]
92
+ );
93
+
94
+ const NavBar = React.useMemo(
57
95
  () =>
58
- R.compose(
59
- R.prop("module"),
60
- R.find(R.propEq("identifier", "offline-experience"))
61
- )(plugins),
62
- [plugins]
96
+ getNavigationPluginModule(
97
+ "nav_bar",
98
+ currentRiver,
99
+ plugins
100
+ ) as React.ComponentType<MobileNavBarPluginProps>,
101
+ []
63
102
  );
64
103
 
65
- const { OfflineFallbackScreen } = offlinePlugin;
104
+ const { screenData, pathname } = routeData;
66
105
 
67
- // Gets the data for the current screen configuration
68
- const currentScreenData = useCurrentScreenData();
69
- const theme = useTheme();
70
- const { backgroundColor } = useScreenConfiguration(currentScreenData.id);
106
+ const offlinePlugin = getComponentModule({
107
+ plugins,
108
+ components: {},
109
+ componentType: "offline-experience",
110
+ });
111
+
112
+ const { OfflineFallbackScreen } = offlinePlugin;
71
113
 
72
114
  const style = React.useMemo(
73
115
  () => ({
@@ -75,21 +117,28 @@ export function Screen(props: Props) {
75
117
  backgroundColor: isValidColor(backgroundColor)
76
118
  ? backgroundColor
77
119
  : theme.app_background_color,
120
+ paddingTop: 0,
121
+ // paddingBottom: insets.bottom, // Should be applied directly by UI plugin
122
+ // paddingLeft: insets.left, // Should be applied directly by UI plugin
123
+ // paddingRight: insets.right, // Should be applied directly by UI plugin
78
124
  }),
79
- [theme.app_background_color, backgroundColor]
125
+ [insets, screenWidth, theme.app_background_color, backgroundColor]
80
126
  );
81
127
 
82
128
  const targetScreenData =
83
- currentScreenData || screenData?.targetScreen || screenData;
129
+ currentScreenData || (screenData as any)?.targetScreen || screenData;
84
130
 
85
131
  useScreenOrientationHandler({ screenData: targetScreenData });
86
132
 
87
133
  return (
88
134
  <ScreenContextProvider pathname={pathname}>
89
135
  <View style={style}>
90
- <NavBar key={pathname} {...props.navBarProps} />
136
+ <NavBar
137
+ {...{ ...(navBarProps as MobileNavBarPluginProps), id: pathname }}
138
+ />
91
139
 
92
140
  <OfflineFallbackScreen screenData={screenData}>
141
+ {/* @TODO RouteManager doesn't use props, can they be removed ? */}
93
142
  <RouteManager pathname={pathname} screenData={screenData} />
94
143
  </OfflineFallbackScreen>
95
144
  </View>
@@ -1,85 +1,3 @@
1
- import { isTV } from "@applicaster/zapp-react-native-utils/reactUtils";
2
-
3
- /**
4
- * This function helps to decide wether the navbar should be presented on the screen
5
- * based on route and / or screen Data
6
- *
7
- * Currently the scenarios include
8
- * - players => false
9
- * - search screen plugin => false
10
- * - hooks with `showNavBar: true` or `presentFullScreen` not set to true, defaults to no navbar for hook screens
11
- * - screens with `allow_screen_plugin_presentation` in general property => false
12
- *
13
- * @param {String} route current route of the screen
14
- * @param {Object} screenData payload associated with the currently presented screen
15
- * @returns {Boolean}
16
- */
17
- export function isNavBarVisible(
18
- route,
19
- screenData,
20
- showNavBar,
21
- canGoBack,
22
- videoModalState: QuickBrickVideoModalState | null = null
23
- ) {
24
- /* screenData is not actual navigator.data
25
- * or navigator.screenData,
26
- * but navigator.data.screen */
27
- if (route.includes("playable")) {
28
- return false;
29
- }
30
-
31
- if (
32
- videoModalState?.mode === "FULLSCREEN" &&
33
- videoModalState?.visible === true
34
- ) {
35
- return false;
36
- }
37
-
38
- if (screenData?.type === "qb_search_screen" && !isTV()) {
39
- return false;
40
- }
41
-
42
- /* Match if screen is Hook */
43
- if (route.startsWith("/hooks/")) {
44
- const module = screenData?.module;
45
-
46
- if (module?.presentFullScreen) {
47
- return false;
48
- }
49
-
50
- return module?.showNavBar ?? false;
51
- }
52
-
53
- if (screenData?.hookPlugin) {
54
- const hookPlugin = screenData?.hookPlugin?.module;
55
-
56
- return (
57
- hookPlugin?.showNavBar || hookPlugin?.presentFullScreen !== true || false
58
- );
59
- }
60
-
61
- if (
62
- screenData?.general?.allow_screen_plugin_presentation ||
63
- screenData?.general?.hide_app_nav_bar
64
- ) {
65
- return false;
66
- }
67
-
68
- const hideSecondaryLevel = screenData?.navigations?.some(
69
- (navigation) => navigation.styles?.hide_secondary_level_menu
70
- );
71
-
72
- if (canGoBack && hideSecondaryLevel) {
73
- return false;
74
- }
75
-
76
- if (typeof showNavBar === "boolean" && !showNavBar) {
77
- return false;
78
- }
79
-
80
- return true;
81
- }
82
-
83
1
  /**
84
2
  * This function helps to decide wether the menu should be presented on the screen
85
3
  * based on route and / or screen Data
@@ -91,7 +91,7 @@ export function ScreenResolverComponent(props: Props) {
91
91
  <HookRenderer
92
92
  screenData={screenData}
93
93
  focused={props.focused}
94
- parentFocus={props.parentFocus}
94
+ parentFocus={props.parentFocus as ParentFocus}
95
95
  />
96
96
  )
97
97
  );
@@ -78,7 +78,7 @@ export const getStyles = (config): Partial<TVTabsStyles> => {
78
78
  },
79
79
  tvos: {
80
80
  marginTop: -1,
81
- }
81
+ },
82
82
  }),
83
83
  },
84
84
  tabsBackground: {
@@ -369,8 +369,8 @@ export class LiveImageManager implements PlayerLifecycleListener {
369
369
  // TODO: This branch was used when we had play button to toggle replay.
370
370
  // Now we mute button instead but we keep it just in case.
371
371
  if (IS_ALLOWED_REPLAY && !isTV() && isCurrentItemEnded) {
372
- this.currentlyPlaying.player.seekTo(0);
373
- this.currentlyPlaying.player.pause();
372
+ this.currentlyPlaying?.player.seekTo(0);
373
+ this.currentlyPlaying?.player.pause();
374
374
 
375
375
  // TODO: ...Maybe player some other item
376
376
  } else {
@@ -14,7 +14,7 @@ import {
14
14
  } from "@applicaster/zapp-react-native-utils/reactUtils";
15
15
  import { playerManager } from "@applicaster/zapp-react-native-utils/appUtils/playerManager";
16
16
  import { getUserCellPlayerMutedPreference } from "@applicaster/zapp-react-native-utils/appUtils/playerManager/userCellPlayerMutedPreference";
17
- import { PlayerImageBackground } from "../PlayerImageBackground";
17
+ import Image from "@applicaster/zapp-react-native-ui-components/Components/MasterCell/DefaultComponents/Image";
18
18
  import { LiveImage, LiveImageManager, LiveImageType } from "./LiveImageManager";
19
19
 
20
20
  import { AnimatedInOut } from "@applicaster/zapp-react-native-ui-components/Components/AnimatedInOut";
@@ -39,12 +39,13 @@ type Props = {
39
39
  imageKey?: string;
40
40
  screenConfig: Record<string, any>;
41
41
  audioMutedByDefault?: boolean;
42
+ uri: string; // cover image url
42
43
  };
43
44
 
44
45
  const PlayerLiveImageComponent = (props: Props) => {
45
46
  const dimensions = useDimensions("screen", { fullDimensions: true });
46
47
 
47
- const { item, style, playerId, imageKey } = props;
48
+ const { item, style, playerId } = props;
48
49
 
49
50
  const timeoutRef = React.useRef<NodeJS.Timeout | null>(null);
50
51
  const [mode, setMode] = React.useState(LiveImageType.Image);
@@ -63,24 +64,27 @@ const PlayerLiveImageComponent = (props: Props) => {
63
64
  *
64
65
  * @param type video or image
65
66
  */
66
- const setModeDebounced = React.useCallback((type: LiveImageType) => {
67
- if (type === LiveImageType.Video) {
68
- if (type === mode) {
69
- return;
70
- }
67
+ const setModeDebounced = React.useCallback(
68
+ (type: LiveImageType) => {
69
+ if (type === LiveImageType.Video) {
70
+ if (type === mode) {
71
+ return;
72
+ }
73
+
74
+ timeoutRef.current = setTimeout(() => {
75
+ setMode(type);
76
+ }, 1000) as unknown as NodeJS.Timeout;
77
+ } else {
78
+ if (timeoutRef.current) {
79
+ clearTimeout(timeoutRef.current);
80
+ timeoutRef.current = null;
81
+ }
71
82
 
72
- timeoutRef.current = setTimeout(() => {
73
83
  setMode(type);
74
- }, 1000) as unknown as NodeJS.Timeout;
75
- } else {
76
- if (timeoutRef.current) {
77
- clearTimeout(timeoutRef.current);
78
- timeoutRef.current = null;
79
84
  }
80
-
81
- setMode(type);
82
- }
83
- }, [mode]);
85
+ },
86
+ [mode]
87
+ );
84
88
 
85
89
  const { screenConfig, playerPluginId } = props;
86
90
 
@@ -100,7 +104,7 @@ const PlayerLiveImageComponent = (props: Props) => {
100
104
  return new LiveImage({
101
105
  playerId,
102
106
  player: playerFactoryItem.controller,
103
- component: playerFactoryItem?.Component
107
+ component: playerFactoryItem?.Component,
104
108
  });
105
109
  } else {
106
110
  throw new Error("Player factory item is null");
@@ -111,10 +115,7 @@ const PlayerLiveImageComponent = (props: Props) => {
111
115
  liveImageItem.setMode = setModeDebounced;
112
116
  }, [setModeDebounced, liveImageItem]);
113
117
 
114
- const { start, end } = React.useMemo(
115
- () => getAutoplaySettings(item),
116
- [item]
117
- );
118
+ const { start, end } = React.useMemo(() => getAutoplaySettings(item), [item]);
118
119
 
119
120
  const controller = liveImageItem.getPlayer();
120
121
  const player = usePlayer(playerId);
@@ -239,7 +240,12 @@ const PlayerLiveImageComponent = (props: Props) => {
239
240
 
240
241
  const onPositionUpdated = React.useCallback(
241
242
  (data) => {
242
- const normalizedRect = (rect: {left: number, right: number, top: number, bottom: number }) => {
243
+ const normalizedRect = (rect: {
244
+ left: number;
245
+ right: number;
246
+ top: number;
247
+ bottom: number;
248
+ }) => {
243
249
  if (!rect) {
244
250
  return null;
245
251
  }
@@ -283,6 +289,7 @@ const PlayerLiveImageComponent = (props: Props) => {
283
289
  const videoStyles = { ...style, position: "absolute", zIndex: -100 };
284
290
  const Player: any = liveImageItem.component || BufferAnimation;
285
291
 
292
+ // TODO: nice to have - resolve imageKey when imageUrl is not provided
286
293
  return (
287
294
  <TrackedView
288
295
  testId={`tracked-view-${playerId}-${item.title}`}
@@ -307,11 +314,7 @@ const PlayerLiveImageComponent = (props: Props) => {
307
314
  animationConfig={overlayFadeIn}
308
315
  staticStyles={style}
309
316
  >
310
- <PlayerImageBackground
311
- entry={item}
312
- style={style}
313
- imageKey={imageKey}
314
- />
317
+ <Image {...props} resizeMode="cover" style={style} applyMaxSize />
315
318
  </AnimatedInOut>
316
319
  }
317
320
  </TrackedView>
@@ -3,6 +3,9 @@ import * as React from "react";
3
3
  import { render } from "@testing-library/react-native";
4
4
  import * as PlayerFactory from "@applicaster/zapp-react-native-utils/appUtils/playerManager/playerFactory";
5
5
  import { Player } from "@applicaster/zapp-react-native-utils/appUtils/playerManager/player";
6
+ import { ThemeContext } from "@applicaster/zapp-react-native-utils/theme";
7
+ import * as navigationHooks from "@applicaster/zapp-react-native-utils/reactHooks/navigation";
8
+
6
9
  import { PlayerLiveImage } from "../PlayerLiveImageComponent";
7
10
 
8
11
  const seekTo = jest.fn();
@@ -16,6 +19,16 @@ jest.mock(
16
19
  })
17
20
  );
18
21
 
22
+ jest.mock("@applicaster/zapp-react-native-utils/reactHooks/navigation");
23
+
24
+ const Wrapper = ({ children }: { children: React.ReactChildren }) => (
25
+ <ThemeContext.Provider
26
+ value={{ themes: { myTheme: {} }, selectedThemeId: "myTheme" }}
27
+ >
28
+ {children}
29
+ </ThemeContext.Provider>
30
+ );
31
+
19
32
  describe("PlayerLiveImageComponent", () => {
20
33
  const defaultProps = {
21
34
  item: { id: "1", title: "Test", type: { value: "" } },
@@ -36,10 +49,16 @@ describe("PlayerLiveImageComponent", () => {
36
49
  controller: new Player({}),
37
50
  Component: () => null,
38
51
  }));
52
+
53
+ jest.spyOn(navigationHooks, "useIsScreenActive").mockReturnValue(true);
39
54
  });
40
55
 
41
56
  it("should render correctly with default props", () => {
42
- const component = render(<PlayerLiveImage {...defaultProps} />);
57
+ const component = render(
58
+ <Wrapper>
59
+ <PlayerLiveImage {...defaultProps} />
60
+ </Wrapper>
61
+ );
43
62
 
44
63
  expect(component.toJSON()).toMatchSnapshot();
45
64
  });
@@ -53,7 +72,11 @@ describe("PlayerLiveImageComponent", () => {
53
72
  },
54
73
  };
55
74
 
56
- render(<PlayerLiveImage {...props} />);
75
+ render(
76
+ <Wrapper>
77
+ <PlayerLiveImage {...props} />
78
+ </Wrapper>
79
+ );
57
80
 
58
81
  // TODO: implement this test
59
82
  });
@@ -67,7 +90,11 @@ describe("PlayerLiveImageComponent", () => {
67
90
  },
68
91
  };
69
92
 
70
- render(<PlayerLiveImage {...props} />);
93
+ render(
94
+ <Wrapper>
95
+ <PlayerLiveImage {...props} />
96
+ </Wrapper>
97
+ );
71
98
 
72
99
  // TODO: implement this test
73
100
  });
@@ -13,35 +13,30 @@ exports[`PlayerLiveImageComponent should render correctly with default props 1`]
13
13
  }
14
14
  }
15
15
  >
16
- <View
17
- accessibilityIgnoresInvertColors={true}
18
- style={Object {}}
19
- >
20
- <Image
21
- resizeMode="cover"
22
- source={
23
- Object {
24
- "uri": undefined,
25
- }
16
+ <Image
17
+ applyMaxSize={true}
18
+ audioMutedByDefault={false}
19
+ imageKey="image1"
20
+ item={
21
+ Object {
22
+ "id": "1",
23
+ "title": "Test",
24
+ "type": Object {
25
+ "value": "",
26
+ },
26
27
  }
27
- style={
28
- Array [
29
- Object {
30
- "bottom": 0,
31
- "left": 0,
32
- "position": "absolute",
33
- "right": 0,
34
- "top": 0,
35
- },
36
- Object {
37
- "height": undefined,
38
- "width": undefined,
39
- },
40
- undefined,
41
- ]
28
+ }
29
+ onError={[Function]}
30
+ playerId="player1"
31
+ resizeMode="cover"
32
+ screenConfig={Object {}}
33
+ source={
34
+ Object {
35
+ "uri": "",
42
36
  }
43
- />
44
- </View>
37
+ }
38
+ style={Object {}}
39
+ />
45
40
  </View>
46
41
  </TrackedView>
47
42
  `;
@@ -23,6 +23,8 @@ const containerStyle = ({
23
23
  backgroundColor: modal_background_color,
24
24
  });
25
25
 
26
+ // const audioMarginStyle = { marginTop: 0, marginBottom: 0 };
27
+
26
28
  export const PlayerDetails = ({
27
29
  entry,
28
30
  style,
@@ -75,6 +77,7 @@ export const PlayerDetails = ({
75
77
  transform: [{ translateY }],
76
78
  opacity,
77
79
  },
80
+ // isAudioPlayer && audioMarginStyle,
78
81
  ]}
79
82
  >
80
83
  {screenData && (
@@ -8,8 +8,6 @@ const props = {
8
8
  configuration: { modal_background_color: "transparent" },
9
9
  };
10
10
 
11
- jest.mock("react-native");
12
-
13
11
  jest.mock("react-native-safe-area-context", () => ({
14
12
  useSafeAreaInsets: jest.fn(() => ({
15
13
  top: 20,
@@ -19,8 +19,6 @@ const props = {
19
19
 
20
20
  const useIsTablet = jest.fn();
21
21
 
22
- jest.mock("react-native");
23
-
24
22
  jest.mock("../PlayerDetails", () => ({ PlayerDetails: View }));
25
23
 
26
24
  jest.mock("@applicaster/zapp-react-native-utils/reactHooks/device", () => ({
@@ -38,6 +36,7 @@ jest.mock("@applicaster/zapp-react-native-utils/reactUtils", () => ({
38
36
  }));
39
37
 
40
38
  jest.mock("@applicaster/zapp-react-native-utils/reactHooks/navigation", () => ({
39
+ isNavBarVisible: jest.fn(() => true),
41
40
  useRoute: jest.fn(() => ({
42
41
  pathname: "/river/testId",
43
42
  })),