@applicaster/quick-brick-core 15.1.0-rc.1 → 16.0.0-rc.1
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/ActionSetters/index.ts +5 -4
- package/App/DeepLinking/URLSchemeHandler/SchemeHandlerHooks/__tests__/useOpenSchemeHandler.test.tsx +12 -27
- package/App/DeepLinking/URLSchemeHandler/SchemeHandlerHooks/__tests__/useUrlSchemeHandler.test.tsx +197 -104
- package/App/DeepLinking/URLSchemeHandler/SchemeHandlerHooks/useOpenSchemeHandler/index.ts +4 -7
- package/App/DeepLinking/URLSchemeHandler/SchemeHandlerHooks/useUrlSchemeHandler.ts +42 -30
- package/App/DeepLinking/URLSchemeHandler/URLSchemeHandler.tsx +4 -1
- package/App/DeepLinking/URLSchemeHandler/__tests__/URLSchemeHandler.test.tsx +20 -13
- package/App/DeepLinking/URLSchemeListener/index.tsx +3 -4
- package/App/ErrorBoundary/__tests__/store.test.js +1 -1
- package/App/NavigationProvider/Loader.tsx +3 -4
- package/App/NavigationProvider/NavigationProvider.tsx +22 -35
- package/App/NavigationProvider/ScreenHooks/usePluginScreenHooks.ts +2 -2
- package/App/NavigationProvider/__tests__/navigationProvider.test.tsx +193 -152
- package/App/NavigationProvider/navigator/selectors.ts +21 -5
- package/App/NetworkStatusProvider/NetworkStatusProvider.tsx +2 -2
- package/App/NetworkStatusProvider/__tests__/NetworkStatusProvider.test.tsx +4 -4
- package/App/__tests__/createQuickBrickApp.test.js +1 -1
- package/App/appRemoteDataLoader/index.tsx +2 -2
- package/App/remoteContextReloader/getRemoteContextData/getNativeRemoteContextData.ts +1 -1
- package/App/remoteContextReloader/helpers.ts +3 -3
- package/package.json +8 -8
- package/App/DeepLinking/URLSchemeHandler/__tests__/__snapshots__/URLSchemeHandler.test.tsx.snap +0 -24
|
@@ -3,16 +3,15 @@ import React, { useCallback, useContext } from "react";
|
|
|
3
3
|
import { URLSchemeHandler } from "../URLSchemeHandler";
|
|
4
4
|
import { URLSchemeContext } from "./URLSchemeContextProvider";
|
|
5
5
|
import { useNavigation } from "@applicaster/zapp-react-native-utils/reactHooks/navigation";
|
|
6
|
-
import {
|
|
6
|
+
import { useAppSelector } from "@applicaster/zapp-react-native-redux/hooks";
|
|
7
|
+
import { selectAppReady } from "@applicaster/zapp-react-native-redux";
|
|
7
8
|
|
|
8
9
|
export function URLSchemeListener({ children }: { children: React.ReactNode }) {
|
|
9
10
|
const { url, done } = useContext(URLSchemeContext);
|
|
10
11
|
|
|
11
12
|
const navigator = useNavigation();
|
|
12
13
|
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
const appReady = appState?.appReady;
|
|
14
|
+
const appReady = useAppSelector(selectAppReady);
|
|
16
15
|
|
|
17
16
|
const onFinish = useCallback(
|
|
18
17
|
(callback) => {
|
|
@@ -2,8 +2,9 @@ import React from "react";
|
|
|
2
2
|
import { View, StyleSheet } from "react-native";
|
|
3
3
|
|
|
4
4
|
import { Spinner } from "@applicaster/zapp-react-native-ui-components/Components/Spinner";
|
|
5
|
-
import {
|
|
5
|
+
import { useAppSelector } from "@applicaster/zapp-react-native-redux/hooks";
|
|
6
6
|
import { useNavigation } from "@applicaster/zapp-react-native-utils/reactHooks/navigation";
|
|
7
|
+
import { selectAppLaunched } from "@applicaster/zapp-react-native-redux";
|
|
7
8
|
|
|
8
9
|
type Props = {
|
|
9
10
|
children: React.ReactChild;
|
|
@@ -21,9 +22,7 @@ const styles = StyleSheet.create({
|
|
|
21
22
|
});
|
|
22
23
|
|
|
23
24
|
export function Loader({ children }: Props) {
|
|
24
|
-
const
|
|
25
|
-
appState: { appLaunched },
|
|
26
|
-
} = usePickFromState(["appState"]);
|
|
25
|
+
const appLaunched = useAppSelector(selectAppLaunched);
|
|
27
26
|
|
|
28
27
|
const { currentRoute } = useNavigation();
|
|
29
28
|
|
|
@@ -13,10 +13,6 @@ import {
|
|
|
13
13
|
useGetScreenOrientation,
|
|
14
14
|
} from "@applicaster/zapp-react-native-utils/appUtils/orientationHelper";
|
|
15
15
|
import { focusManager } from "@applicaster/zapp-react-native-utils/focusManager/FocusManager";
|
|
16
|
-
import {
|
|
17
|
-
useContentTypes,
|
|
18
|
-
usePickFromState,
|
|
19
|
-
} from "@applicaster/zapp-react-native-redux/hooks";
|
|
20
16
|
|
|
21
17
|
import reducer, {
|
|
22
18
|
ACTIONS,
|
|
@@ -44,6 +40,7 @@ import {
|
|
|
44
40
|
activeRiverSelector,
|
|
45
41
|
homeRiverSelector,
|
|
46
42
|
lastEntrySelector,
|
|
43
|
+
startUpHookPluginIdentifiersSelector,
|
|
47
44
|
} from "./navigator/selectors";
|
|
48
45
|
|
|
49
46
|
import { coreAppLogger } from "../logger";
|
|
@@ -79,6 +76,16 @@ import { Hook } from "@applicaster/zapp-react-native-utils/appUtils/HooksManager
|
|
|
79
76
|
import { URLSchemeContext } from "../DeepLinking/URLSchemeListener/URLSchemeContextProvider";
|
|
80
77
|
|
|
81
78
|
import { loadingOverlayManager } from "../LoadingOverlay";
|
|
79
|
+
import {
|
|
80
|
+
selectAppLaunched,
|
|
81
|
+
useAppSelector,
|
|
82
|
+
useContentTypes,
|
|
83
|
+
usePlugins,
|
|
84
|
+
} from "@applicaster/zapp-react-native-redux";
|
|
85
|
+
import {
|
|
86
|
+
useLayoutVersion,
|
|
87
|
+
useRivers,
|
|
88
|
+
} from "@applicaster/zapp-react-native-utils/reactHooks";
|
|
82
89
|
|
|
83
90
|
const logger = coreAppLogger.addSubsystem("Navigator");
|
|
84
91
|
|
|
@@ -100,22 +107,11 @@ const platform = getPlatform();
|
|
|
100
107
|
export function NavigationProvider({ children }: Props) {
|
|
101
108
|
const { url: deepLinkURL } = React.useContext(URLSchemeContext);
|
|
102
109
|
|
|
103
|
-
const
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
plugins,
|
|
107
|
-
pluginConfigurations,
|
|
108
|
-
appState: { appLaunched },
|
|
109
|
-
} = usePickFromState([
|
|
110
|
-
"appData",
|
|
111
|
-
"rivers",
|
|
112
|
-
"plugins",
|
|
113
|
-
"pluginConfigurations",
|
|
114
|
-
"appState",
|
|
115
|
-
"contentTypes",
|
|
116
|
-
]);
|
|
117
|
-
|
|
110
|
+
const appLaunched = useAppSelector(selectAppLaunched);
|
|
111
|
+
const layoutVersion = useLayoutVersion();
|
|
112
|
+
const rivers = useRivers();
|
|
118
113
|
const contentTypes = useContentTypes();
|
|
114
|
+
const plugins = usePlugins();
|
|
119
115
|
|
|
120
116
|
const [state, dispatch] = React.useReducer<
|
|
121
117
|
NavigationReducer,
|
|
@@ -227,6 +223,7 @@ export function NavigationProvider({ children }: Props) {
|
|
|
227
223
|
};
|
|
228
224
|
|
|
229
225
|
const isVideoModalDocked = () =>
|
|
226
|
+
state?.options.videoModal.visible &&
|
|
230
227
|
state?.options.videoModal.mode === "MINIMIZED";
|
|
231
228
|
|
|
232
229
|
// TODO: Remove as it's using a concept of "current" route.
|
|
@@ -479,21 +476,11 @@ export function NavigationProvider({ children }: Props) {
|
|
|
479
476
|
openLoadingOverlay();
|
|
480
477
|
};
|
|
481
478
|
|
|
482
|
-
const
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
const startUpHooksIdentifiers = R.compose(
|
|
486
|
-
R.map((item) => item.plugin.identifier),
|
|
487
|
-
R.filter(
|
|
488
|
-
R.allPass([
|
|
489
|
-
R.pathEq(["plugin", "api", "require_startup_execution"], true),
|
|
490
|
-
R.pathEq(["plugin", "react_native"], true),
|
|
491
|
-
R.pathEq(["plugin", "preload"], true),
|
|
492
|
-
])
|
|
493
|
-
),
|
|
494
|
-
R.values
|
|
495
|
-
)(pluginConfigurations);
|
|
479
|
+
const startUpHooksIdentifiers = useAppSelector(
|
|
480
|
+
startUpHookPluginIdentifiersSelector
|
|
481
|
+
);
|
|
496
482
|
|
|
483
|
+
const checkStartUpHooks = React.useMemo(() => {
|
|
497
484
|
if (startUpHooksIdentifiers?.length) {
|
|
498
485
|
const startUpHooks = R.filter(
|
|
499
486
|
(plugin) => R.includes(plugin.identifier, startUpHooksIdentifiers),
|
|
@@ -525,7 +512,7 @@ export function NavigationProvider({ children }: Props) {
|
|
|
525
512
|
}
|
|
526
513
|
|
|
527
514
|
return false;
|
|
528
|
-
}, [
|
|
515
|
+
}, [startUpHooksIdentifiers, plugins, rivers]);
|
|
529
516
|
|
|
530
517
|
const [startUpHooks, _setStartUpHooks] = React.useState(checkStartUpHooks);
|
|
531
518
|
const currentStartUpHooks = React.useRef(checkStartUpHooks);
|
|
@@ -728,7 +715,7 @@ export function NavigationProvider({ children }: Props) {
|
|
|
728
715
|
activeRiver,
|
|
729
716
|
getPathname: () => pathnameRef.current, // hack use to fix issue causing broken navigation as currentRoute is unreliable
|
|
730
717
|
currentRoute: pathname, // TODO: remove. Current route shouldn't be needed
|
|
731
|
-
previousAction: lastEntrySelector(state)
|
|
718
|
+
previousAction: (lastEntrySelector(state) as any)
|
|
732
719
|
?.action as QuickBrickNavigationActionType,
|
|
733
720
|
push: pushItem,
|
|
734
721
|
replace: replaceItem,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import * as R from "ramda";
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import { usePlugins } from "@applicaster/zapp-react-native-redux";
|
|
5
5
|
|
|
6
6
|
enum ReactHooks {
|
|
7
7
|
useEffect = "useEffect",
|
|
@@ -39,7 +39,7 @@ function invokeScreenHook(hooksWrappers) {
|
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
export function usePluginScreenHooks(pathname: string) {
|
|
42
|
-
const
|
|
42
|
+
const plugins = usePlugins();
|
|
43
43
|
|
|
44
44
|
const hooks = React.useMemo(
|
|
45
45
|
() => R.filter(hasScreenHook, plugins) || [],
|