@applicaster/quick-brick-core 13.0.0-alpha.7586259907 → 13.0.0-alpha.7620873141
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/App/ModalProvider/ModalBottomSheet/Overlay.tsx +5 -7
- package/App/ModalProvider/ModalBottomSheet/index.tsx +2 -8
- package/App/ModalProvider/index.tsx +2 -2
- package/App/NavigationProvider/NavigationProvider.tsx +23 -39
- package/App/NavigationProvider/__tests__/navigationProvider.test.tsx +0 -44
- package/App/index.tsx +1 -0
- package/package.json +8 -8
- package/App/ModalProvider/ModalChildrenWrapper/index.web.ts +0 -1
- package/App/NavigationProvider/__tests__/__snapshots__/navigationProvider.test.tsx.snap +0 -68
- /package/App/ModalProvider/ModalChildrenWrapper/{index.ios.ts → index.ts} +0 -0
|
@@ -2,7 +2,7 @@ import React from "react";
|
|
|
2
2
|
import { StyleSheet, TouchableOpacity, Easing, View } from "react-native";
|
|
3
3
|
|
|
4
4
|
import { AnimatedInOut } from "@applicaster/zapp-react-native-ui-components/Components/AnimatedInOut";
|
|
5
|
-
import {
|
|
5
|
+
import { dismissModal } from "@applicaster/zapp-react-native-utils/modalState";
|
|
6
6
|
|
|
7
7
|
type Props = {
|
|
8
8
|
overlayColor: string;
|
|
@@ -35,21 +35,19 @@ const fadeInAnimation = {
|
|
|
35
35
|
delay,
|
|
36
36
|
};
|
|
37
37
|
|
|
38
|
-
const animationConfig =
|
|
38
|
+
const animationConfig = {
|
|
39
39
|
in: fadeInAnimation,
|
|
40
40
|
out: {
|
|
41
41
|
...fadeInAnimation,
|
|
42
|
-
onAnimationEnd,
|
|
42
|
+
onAnimationEnd: dismissModal,
|
|
43
43
|
},
|
|
44
|
-
}
|
|
44
|
+
};
|
|
45
45
|
|
|
46
46
|
export function Overlay(props: Props) {
|
|
47
|
-
const navigator = useNavigation();
|
|
48
|
-
|
|
49
47
|
return (
|
|
50
48
|
<AnimatedInOut
|
|
51
49
|
visible={props.visible}
|
|
52
|
-
animationConfig={animationConfig
|
|
50
|
+
animationConfig={animationConfig}
|
|
53
51
|
staticStyles={styles.container}
|
|
54
52
|
>
|
|
55
53
|
<TouchableOpacity
|
|
@@ -3,7 +3,7 @@ import { useTheme } from "@applicaster/zapp-react-native-utils/theme";
|
|
|
3
3
|
import { platformSelect } from "@applicaster/zapp-react-native-utils/reactUtils";
|
|
4
4
|
import { useSafeAreaInsets } from "react-native-safe-area-context";
|
|
5
5
|
|
|
6
|
-
import React, { useCallback, useEffect,
|
|
6
|
+
import React, { useCallback, useEffect, useState } from "react";
|
|
7
7
|
import { Keyboard, StyleSheet, View } from "react-native";
|
|
8
8
|
|
|
9
9
|
import { Overlay } from "./Overlay";
|
|
@@ -75,13 +75,7 @@ export function ModalBottomSheet(props: Props) {
|
|
|
75
75
|
|
|
76
76
|
const isTablet = useIsTablet();
|
|
77
77
|
|
|
78
|
-
const maxWidth =
|
|
79
|
-
() =>
|
|
80
|
-
isTablet
|
|
81
|
-
? Math.max(sheetTabletMaxWidth, dimensions.width)
|
|
82
|
-
: dimensions.width,
|
|
83
|
-
[isTablet]
|
|
84
|
-
);
|
|
78
|
+
const maxWidth = isTablet ? sheetTabletMaxWidth : dimensions.width;
|
|
85
79
|
|
|
86
80
|
const modalVisible = visible && sheetHeight > 0;
|
|
87
81
|
|
|
@@ -6,10 +6,10 @@ import { ModalChildrenWrapper } from "./ModalChildrenWrapper";
|
|
|
6
6
|
import { PathnameContext } from "@applicaster/zapp-react-native-ui-components/Contexts/PathnameContext";
|
|
7
7
|
import { ScreenContextProvider } from "@applicaster/zapp-react-native-ui-components/Contexts/ScreenContext";
|
|
8
8
|
import { ROUTE_TYPES } from "@applicaster/zapp-react-native-utils/navigationUtils/routeTypes";
|
|
9
|
-
import {
|
|
9
|
+
import { useModalStoreState } from "@applicaster/zapp-react-native-utils/modalState";
|
|
10
10
|
|
|
11
11
|
export function ModalProvider() {
|
|
12
|
-
const
|
|
12
|
+
const modalState = useModalStoreState();
|
|
13
13
|
|
|
14
14
|
const [modalVisible, setModalVisible] = React.useState(false);
|
|
15
15
|
const [modalShown, setModalShown] = React.useState(false);
|
|
@@ -58,13 +58,20 @@ import {
|
|
|
58
58
|
legacyScreenData,
|
|
59
59
|
openExternalUrl,
|
|
60
60
|
} from "./utils";
|
|
61
|
-
import {
|
|
61
|
+
import {
|
|
62
|
+
debounce,
|
|
63
|
+
getJsonReplacer,
|
|
64
|
+
} from "@applicaster/zapp-react-native-utils/functionUtils";
|
|
62
65
|
|
|
63
66
|
import { findParent } from "@applicaster/zapp-react-native-ui-components/Contexts/ZappPipesContext/ZappPipesEntryContext";
|
|
64
67
|
import { ZappPipesEntryContext } from "@applicaster/zapp-react-native-ui-components/Contexts";
|
|
65
68
|
import { PlayNextState } from "@applicaster/zapp-react-native-utils/appUtils/playerManager/OverlayObserver/OverlaysObserver";
|
|
66
69
|
import { inflateUrl } from "@applicaster/zapp-react-native-ui-components/Components/LinkHandler/LinkHandler";
|
|
67
|
-
import {
|
|
70
|
+
import {
|
|
71
|
+
dismissModal,
|
|
72
|
+
modalStore,
|
|
73
|
+
openModal,
|
|
74
|
+
} from "@applicaster/zapp-react-native-utils/modalState";
|
|
68
75
|
import { useSubscriberFor } from "@applicaster/zapp-react-native-utils/reactHooks/useSubscriberFor";
|
|
69
76
|
import { QBUIComponentEvents } from "@applicaster/zapp-react-native-ui-components/events";
|
|
70
77
|
import { Hook } from "@applicaster/zapp-react-native-utils/appUtils/HooksManager/Hook";
|
|
@@ -120,8 +127,6 @@ export function NavigationProvider({ children }: Props) {
|
|
|
120
127
|
|
|
121
128
|
const { context } = React.useContext(ZappPipesEntryContext.Context);
|
|
122
129
|
|
|
123
|
-
const { openModal, dismissModal } = useModalStore();
|
|
124
|
-
|
|
125
130
|
const playNextOverlayState = React.useRef();
|
|
126
131
|
|
|
127
132
|
const online = useConnectionInfo(true);
|
|
@@ -147,7 +152,7 @@ export function NavigationProvider({ children }: Props) {
|
|
|
147
152
|
);
|
|
148
153
|
|
|
149
154
|
const getModalState: () => ModalState = () => {
|
|
150
|
-
const { modalState } =
|
|
155
|
+
const { modalState } = modalStore.getState();
|
|
151
156
|
|
|
152
157
|
return modalState;
|
|
153
158
|
};
|
|
@@ -391,7 +396,7 @@ export function NavigationProvider({ children }: Props) {
|
|
|
391
396
|
}
|
|
392
397
|
|
|
393
398
|
if (hookPlugin.isModalHook()) {
|
|
394
|
-
|
|
399
|
+
openModal({
|
|
395
400
|
item: payload,
|
|
396
401
|
props: { screenType: "hooks" },
|
|
397
402
|
options: { ModalContainer: hookPlugin.getModalContainer() },
|
|
@@ -411,7 +416,7 @@ export function NavigationProvider({ children }: Props) {
|
|
|
411
416
|
}
|
|
412
417
|
|
|
413
418
|
if (hookPlugin.isModalHook()) {
|
|
414
|
-
|
|
419
|
+
dismissModal();
|
|
415
420
|
} else {
|
|
416
421
|
goBack(true, true);
|
|
417
422
|
}
|
|
@@ -433,7 +438,7 @@ export function NavigationProvider({ children }: Props) {
|
|
|
433
438
|
|
|
434
439
|
if (!abort) {
|
|
435
440
|
if (hookPlugin.isModalHook()) {
|
|
436
|
-
|
|
441
|
+
dismissModal();
|
|
437
442
|
} else {
|
|
438
443
|
goBack(true, true);
|
|
439
444
|
}
|
|
@@ -446,7 +451,7 @@ export function NavigationProvider({ children }: Props) {
|
|
|
446
451
|
callback?.();
|
|
447
452
|
|
|
448
453
|
if (hookPlugin.isModalHook()) {
|
|
449
|
-
|
|
454
|
+
dismissModal();
|
|
450
455
|
}
|
|
451
456
|
};
|
|
452
457
|
|
|
@@ -683,33 +688,6 @@ export function NavigationProvider({ children }: Props) {
|
|
|
683
688
|
}
|
|
684
689
|
}, [state?.options?.videoModal?.previousMode]);
|
|
685
690
|
|
|
686
|
-
const openModalBottomSheet = React.useCallback(
|
|
687
|
-
({
|
|
688
|
-
ModalBottomSheetContent,
|
|
689
|
-
modalBottomSheetContentProps,
|
|
690
|
-
props = {},
|
|
691
|
-
options = {},
|
|
692
|
-
}) => {
|
|
693
|
-
openModal({
|
|
694
|
-
item: {
|
|
695
|
-
ModalBottomSheetContent,
|
|
696
|
-
modalBottomSheetContentProps,
|
|
697
|
-
},
|
|
698
|
-
props,
|
|
699
|
-
options: {
|
|
700
|
-
animationType: "none",
|
|
701
|
-
animated: false,
|
|
702
|
-
...options,
|
|
703
|
-
},
|
|
704
|
-
});
|
|
705
|
-
},
|
|
706
|
-
[openModal]
|
|
707
|
-
);
|
|
708
|
-
|
|
709
|
-
const closeModalBottomSheet = React.useCallback(() => {
|
|
710
|
-
dismissModal();
|
|
711
|
-
}, [dismissModal]);
|
|
712
|
-
|
|
713
691
|
const getNestedEntry = () => state?.location?.state?.nested?.entry ?? null;
|
|
714
692
|
|
|
715
693
|
// It will only work for the regular stack and pathname, It won't work for modals
|
|
@@ -750,8 +728,6 @@ export function NavigationProvider({ children }: Props) {
|
|
|
750
728
|
openModal,
|
|
751
729
|
dismissModal,
|
|
752
730
|
getModalState,
|
|
753
|
-
openModalBottomSheet,
|
|
754
|
-
closeModalBottomSheet,
|
|
755
731
|
videoModalState: state.options.videoModal,
|
|
756
732
|
openVideoModal,
|
|
757
733
|
closeVideoModal,
|
|
@@ -768,7 +744,15 @@ export function NavigationProvider({ children }: Props) {
|
|
|
768
744
|
getStackForPathname,
|
|
769
745
|
mainStack: state.stack.mainStack,
|
|
770
746
|
}),
|
|
771
|
-
[
|
|
747
|
+
[
|
|
748
|
+
rivers,
|
|
749
|
+
plugins,
|
|
750
|
+
// TODO: Compare entire screen data from state must be removed
|
|
751
|
+
// State size could be large ~150kb and take 80ms on android tv on 8 rails
|
|
752
|
+
JSON.stringify(state, getJsonReplacer()),
|
|
753
|
+
appLaunched,
|
|
754
|
+
startUpHooks,
|
|
755
|
+
]
|
|
772
756
|
);
|
|
773
757
|
|
|
774
758
|
// when running the tests, we pass the dispatch function
|
|
@@ -461,48 +461,4 @@ describe("<NavigationProvider />", () => {
|
|
|
461
461
|
});
|
|
462
462
|
});
|
|
463
463
|
});
|
|
464
|
-
|
|
465
|
-
describe("modal feature", () => {
|
|
466
|
-
it("sets the modalState when opening a modal", () => {
|
|
467
|
-
act(() => {
|
|
468
|
-
wrapper = renderContextConsumer();
|
|
469
|
-
});
|
|
470
|
-
|
|
471
|
-
const view = getByTestId(wrapper, "WrapperView");
|
|
472
|
-
act(() => view.props.navigator.openModal({ item: rivers.A1234 }));
|
|
473
|
-
expect(view.props.navigator.get).toMatchSnapshot();
|
|
474
|
-
});
|
|
475
|
-
|
|
476
|
-
it("removes the visible flag when dismissing a modal", () => {
|
|
477
|
-
act(() => {
|
|
478
|
-
wrapper = renderContextConsumer();
|
|
479
|
-
});
|
|
480
|
-
|
|
481
|
-
const view = getByTestId(wrapper, "WrapperView");
|
|
482
|
-
act(() => view.props.navigator.openModal({ item: rivers.A1234 }));
|
|
483
|
-
expect(view.props.navigator.getModalState()).toMatchSnapshot();
|
|
484
|
-
act(() => view.props.navigator.dismissModal());
|
|
485
|
-
expect(view.props.navigator.getModalState().visible).toBeFalsy();
|
|
486
|
-
expect(view.props.navigator.getModalState()).toMatchSnapshot();
|
|
487
|
-
});
|
|
488
|
-
|
|
489
|
-
it("should reset state to initial when dismissing a modal ( closeModalBottomSheet ) opened by openModalBottomSheet", () => {
|
|
490
|
-
act(() => {
|
|
491
|
-
wrapper = renderContextConsumer();
|
|
492
|
-
});
|
|
493
|
-
|
|
494
|
-
const view = getByTestId(wrapper, "WrapperView");
|
|
495
|
-
|
|
496
|
-
act(() =>
|
|
497
|
-
view.props.navigator.openModalBottomSheet({
|
|
498
|
-
ModalBottomSheetContent: rivers.A1234,
|
|
499
|
-
modalBottomSheetContentProps: { some: "props" },
|
|
500
|
-
})
|
|
501
|
-
);
|
|
502
|
-
|
|
503
|
-
expect(view.props.navigator.getModalState()).toMatchSnapshot();
|
|
504
|
-
act(() => view.props.navigator.closeModalBottomSheet());
|
|
505
|
-
expect(view.props.navigator.getModalState()).toMatchSnapshot();
|
|
506
|
-
});
|
|
507
|
-
});
|
|
508
464
|
});
|
package/App/index.tsx
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@applicaster/quick-brick-core",
|
|
3
|
-
"version": "13.0.0-alpha.
|
|
3
|
+
"version": "13.0.0-alpha.7620873141",
|
|
4
4
|
"description": "Core package for Applicaster's Quick Brick App",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"types": "index.d.ts",
|
|
@@ -28,13 +28,13 @@
|
|
|
28
28
|
},
|
|
29
29
|
"homepage": "https://github.com/applicaster/quickbrick#readme",
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@applicaster/applicaster-types": "13.0.0-alpha.
|
|
32
|
-
"@applicaster/quick-brick-core-plugins": "13.0.0-alpha.
|
|
33
|
-
"@applicaster/zapp-pipes-v2-client": "13.0.0-alpha.
|
|
34
|
-
"@applicaster/zapp-react-native-bridge": "13.0.0-alpha.
|
|
35
|
-
"@applicaster/zapp-react-native-redux": "13.0.0-alpha.
|
|
36
|
-
"@applicaster/zapp-react-native-ui-components": "13.0.0-alpha.
|
|
37
|
-
"@applicaster/zapp-react-native-utils": "13.0.0-alpha.
|
|
31
|
+
"@applicaster/applicaster-types": "13.0.0-alpha.7620873141",
|
|
32
|
+
"@applicaster/quick-brick-core-plugins": "13.0.0-alpha.7620873141",
|
|
33
|
+
"@applicaster/zapp-pipes-v2-client": "13.0.0-alpha.7620873141",
|
|
34
|
+
"@applicaster/zapp-react-native-bridge": "13.0.0-alpha.7620873141",
|
|
35
|
+
"@applicaster/zapp-react-native-redux": "13.0.0-alpha.7620873141",
|
|
36
|
+
"@applicaster/zapp-react-native-ui-components": "13.0.0-alpha.7620873141",
|
|
37
|
+
"@applicaster/zapp-react-native-utils": "13.0.0-alpha.7620873141",
|
|
38
38
|
"atob": "^2.1.2",
|
|
39
39
|
"axios": "^0.28.0",
|
|
40
40
|
"btoa": "^1.2.1",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { Fragment as ModalChildrenWrapper } from "react";
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
-
|
|
3
|
-
exports[`<NavigationProvider /> modal feature removes the visible flag when dismissing a modal 1`] = `
|
|
4
|
-
{
|
|
5
|
-
"options": {
|
|
6
|
-
"animated": true,
|
|
7
|
-
"animationType": "slide",
|
|
8
|
-
"onDismiss": [Function],
|
|
9
|
-
"onRequestClose": [Function],
|
|
10
|
-
"onShow": [Function],
|
|
11
|
-
"presentationStyle": "overFullScreen",
|
|
12
|
-
"transparent": true,
|
|
13
|
-
},
|
|
14
|
-
"props": undefined,
|
|
15
|
-
"screen": {
|
|
16
|
-
"id": "A1234",
|
|
17
|
-
"navigations": [],
|
|
18
|
-
"ui_components": [],
|
|
19
|
-
},
|
|
20
|
-
"visible": true,
|
|
21
|
-
}
|
|
22
|
-
`;
|
|
23
|
-
|
|
24
|
-
exports[`<NavigationProvider /> modal feature removes the visible flag when dismissing a modal 2`] = `
|
|
25
|
-
{
|
|
26
|
-
"options": {},
|
|
27
|
-
"props": {},
|
|
28
|
-
"screen": null,
|
|
29
|
-
"visible": false,
|
|
30
|
-
}
|
|
31
|
-
`;
|
|
32
|
-
|
|
33
|
-
exports[`<NavigationProvider /> modal feature sets the modalState when opening a modal 1`] = `undefined`;
|
|
34
|
-
|
|
35
|
-
exports[`<NavigationProvider /> modal feature should reset state to initial when dismissing a modal ( closeModalBottomSheet ) opened by openModalBottomSheet 1`] = `
|
|
36
|
-
{
|
|
37
|
-
"options": {
|
|
38
|
-
"animated": false,
|
|
39
|
-
"animationType": "none",
|
|
40
|
-
"onDismiss": [Function],
|
|
41
|
-
"onRequestClose": [Function],
|
|
42
|
-
"onShow": [Function],
|
|
43
|
-
"presentationStyle": "overFullScreen",
|
|
44
|
-
"transparent": true,
|
|
45
|
-
},
|
|
46
|
-
"props": {},
|
|
47
|
-
"screen": {
|
|
48
|
-
"ModalBottomSheetContent": {
|
|
49
|
-
"id": "A1234",
|
|
50
|
-
"navigations": [],
|
|
51
|
-
"ui_components": [],
|
|
52
|
-
},
|
|
53
|
-
"modalBottomSheetContentProps": {
|
|
54
|
-
"some": "props",
|
|
55
|
-
},
|
|
56
|
-
},
|
|
57
|
-
"visible": true,
|
|
58
|
-
}
|
|
59
|
-
`;
|
|
60
|
-
|
|
61
|
-
exports[`<NavigationProvider /> modal feature should reset state to initial when dismissing a modal ( closeModalBottomSheet ) opened by openModalBottomSheet 2`] = `
|
|
62
|
-
{
|
|
63
|
-
"options": {},
|
|
64
|
-
"props": {},
|
|
65
|
-
"screen": null,
|
|
66
|
-
"visible": false,
|
|
67
|
-
}
|
|
68
|
-
`;
|
|
File without changes
|