@applicaster/zapp-react-native-utils 13.0.0-alpha.1700735421 → 13.0.0-alpha.1711912250
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/actionsExecutor/ActionExecutorContext.tsx +126 -6
- package/actionsExecutor/consts.ts +4 -0
- package/analyticsUtils/AnalyticsEvents/sendHeaderClickEvent.ts +1 -1
- package/analyticsUtils/AnalyticsEvents/sendMenuClickEvent.ts +1 -2
- package/analyticsUtils/index.tsx +4 -3
- package/analyticsUtils/manager.ts +1 -1
- package/appUtils/HooksManager/Hook.ts +4 -0
- package/appUtils/HooksManager/index.ts +2 -0
- package/appUtils/__tests__/__snapshots__/localizationsHelper.test.ts.snap +151 -0
- package/appUtils/__tests__/allZappLocales.ts +79 -0
- package/appUtils/__tests__/{localizationsHelper.test.js → localizationsHelper.test.ts} +11 -0
- package/appUtils/contextKeysManager/contextResolver.ts +1 -12
- package/appUtils/focusManager/__tests__/__snapshots__/focusManager.test.js.snap +2 -0
- package/appUtils/focusManager/index.ios.ts +14 -4
- package/appUtils/focusManager/index.ts +13 -0
- package/appUtils/focusManager/utils/__tests__/findChild.test.ts +35 -0
- package/appUtils/focusManager/utils/index.ts +5 -0
- package/appUtils/localizationsHelper.ts +31 -0
- package/appUtils/orientationHelper.ts +11 -12
- package/appUtils/playerManager/player.ts +24 -12
- package/appUtils/playerManager/playerHooks/usePlayerCurrentTime.tsx +11 -7
- package/appUtils/playerManager/playerNative.ts +18 -3
- package/appUtils/playerManager/usePlayerTitleSummaryOverlay.tsx +7 -1
- package/cellUtils/index.ts +9 -5
- package/componentsUtils/__tests__/isFirstComponentGallery.test.ts +33 -0
- package/componentsUtils/__tests__/isFirstComponentScreenPicker.test.ts +33 -0
- package/componentsUtils/__tests__/isGallery.test.ts +33 -0
- package/componentsUtils/__tests__/isScreenPicker.test.ts +33 -0
- package/componentsUtils/index.ts +39 -0
- package/dateUtils/index.ts +19 -0
- package/focusManager/FocusManager.ts +3 -1
- package/focusManager/index.ts +3 -21
- package/functionUtils/index.ts +25 -0
- package/index.d.ts +0 -12
- package/localizationUtils/index.ts +8 -13
- package/manifestUtils/defaultManifestConfigurations/generalContent.js +13 -0
- package/manifestUtils/defaultManifestConfigurations/player.js +10 -4
- package/manifestUtils/index.js +2 -0
- package/manifestUtils/keys.js +27 -2
- package/modalState/__tests__/index.test.ts +51 -0
- package/modalState/index.ts +32 -2
- package/navigationUtils/__tests__/__snapshots__/navigationUtils.test.js.snap +1 -0
- package/navigationUtils/index.ts +3 -1
- package/numberUtils/__tests__/toPositiveNumberWithDefault.test.ts +23 -3
- package/numberUtils/index.ts +4 -0
- package/package.json +2 -3
- package/playerUtils/configurationGenerator.ts +9 -11
- package/reactHooks/advertising/index.ts +5 -5
- package/reactHooks/app/useAppState.ts +2 -2
- package/reactHooks/feed/__tests__/useBatchLoading.test.tsx +88 -39
- package/reactHooks/feed/useBatchLoading.ts +10 -12
- package/reactHooks/feed/useFeedLoader.tsx +17 -8
- package/reactHooks/hookModal/hooks/useHookModalScreenData.ts +39 -0
- package/reactHooks/navigation/{useGetTabBarHeight.ts → getTabBarHeight.ts} +1 -1
- package/reactHooks/navigation/index.ts +7 -5
- package/reactHooks/navigation/useGetBottomTabBarHeight.ts +10 -3
- package/reactHooks/navigation/useNavigationPluginData.ts +8 -4
- package/reactHooks/navigation/useNavigationType.ts +4 -2
- package/reactHooks/navigation/useRoute.ts +4 -6
- package/reactHooks/screen/__tests__/useScreenBackgroundColor.test.tsx +69 -0
- package/reactHooks/screen/useScreenBackgroundColor.ts +3 -15
- package/reactHooks/useListenEventBusEvent.ts +1 -1
- package/reactUtils/index.ts +9 -0
- package/services/js2native.ts +673 -0
- package/testUtils/index.tsx +8 -7
- package/time/BackgroundTimer.ts +55 -0
- package/time/Timer.ts +6 -6
- package/utils/README.md +30 -0
- package/utils/chunk.ts +5 -0
- package/utils/index.ts +5 -0
- package/utils/times.ts +5 -0
- package/zappFrameworkUtils/localStorageHelper.ts +6 -0
- package/zappFrameworkUtils/loginPluginUtils.ts +6 -2
- package/zappFrameworkUtils/types.ts +11 -0
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import * as R from "ramda";
|
|
2
1
|
import { ViewStyle } from "react-native";
|
|
3
2
|
|
|
4
3
|
import { useMemo } from "react";
|
|
5
|
-
import { getUILanguage } from "
|
|
6
|
-
import { utilsLogger } from "
|
|
4
|
+
import { getUILanguage } from "@applicaster/zapp-react-native-utils/appUtils/localizationsHelper";
|
|
5
|
+
import { utilsLogger } from "@applicaster/zapp-react-native-utils/logger";
|
|
7
6
|
|
|
8
7
|
export {
|
|
9
8
|
getLocale,
|
|
@@ -11,7 +10,7 @@ export {
|
|
|
11
10
|
getCountryCode,
|
|
12
11
|
getLocalizations,
|
|
13
12
|
getUILanguage,
|
|
14
|
-
} from "
|
|
13
|
+
} from "@applicaster/zapp-react-native-utils/appUtils/localizationsHelper";
|
|
15
14
|
|
|
16
15
|
const RTL_LOCALES = [
|
|
17
16
|
"ar", // Arabic
|
|
@@ -29,14 +28,16 @@ const RTL_LOCALES = [
|
|
|
29
28
|
"yi", // Yiddish
|
|
30
29
|
];
|
|
31
30
|
|
|
32
|
-
export function useLocalizedStrings({ localizations }) {
|
|
31
|
+
export function useLocalizedStrings({ localizations = {} }) {
|
|
33
32
|
const languageCode = getUILanguage();
|
|
34
33
|
|
|
35
34
|
// TODO: probably we can call getLocalizations here from localizationsHelper.js
|
|
36
35
|
const result = useMemo(
|
|
37
36
|
() =>
|
|
38
37
|
localizations?.[languageCode] ||
|
|
39
|
-
|
|
38
|
+
Object.values(localizations).find(
|
|
39
|
+
(value) => typeof value === "object" && value !== null
|
|
40
|
+
) ||
|
|
40
41
|
{},
|
|
41
42
|
[languageCode, localizations]
|
|
42
43
|
);
|
|
@@ -53,13 +54,7 @@ export function getIsRTL(): boolean {
|
|
|
53
54
|
return false;
|
|
54
55
|
}
|
|
55
56
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
const lowerCaseLanguageCode = languageCode.toLocaleLowerCase();
|
|
59
|
-
|
|
60
|
-
const isRTL = R.contains(lowerCaseLanguageCode, RTL_LOCALES);
|
|
61
|
-
|
|
62
|
-
return isRTL;
|
|
57
|
+
return RTL_LOCALES.includes(uiLanguage.split("-")[0].toLocaleLowerCase());
|
|
63
58
|
}
|
|
64
59
|
|
|
65
60
|
export function useIsRTL(): boolean {
|
|
@@ -251,6 +251,19 @@ const generalContent = () => ({
|
|
|
251
251
|
key: "screen_title",
|
|
252
252
|
initial_value: null,
|
|
253
253
|
},
|
|
254
|
+
{
|
|
255
|
+
type: "text_input",
|
|
256
|
+
label: "Maximum Selection Reached - Alert Description",
|
|
257
|
+
key: "msg_maximum_selection_reached_message",
|
|
258
|
+
initial_value:
|
|
259
|
+
"You’ve reached the maximum number of items you can select.",
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
type: "text_input",
|
|
263
|
+
label: "Maximum Selection Reached - Alert Button",
|
|
264
|
+
key: "msg_maximum_selection_reached_message_ok_button",
|
|
265
|
+
initial_value: "Got it",
|
|
266
|
+
},
|
|
254
267
|
],
|
|
255
268
|
},
|
|
256
269
|
advertising: {
|
|
@@ -43,12 +43,12 @@ function getPlayerConfiguration({ platform }) {
|
|
|
43
43
|
"Enable if you want to have adaptive background gradient based on audio background image.",
|
|
44
44
|
},
|
|
45
45
|
{
|
|
46
|
-
key: "
|
|
47
|
-
label: "Audio Player Image
|
|
46
|
+
key: "audio_player_background_image_default_color",
|
|
47
|
+
label: "Audio Player Background Image Default Color",
|
|
48
48
|
initial_value: "",
|
|
49
49
|
type: "text_input",
|
|
50
50
|
label_tooltip:
|
|
51
|
-
"Set the
|
|
51
|
+
"Set the default color for the audio player background image if not image or set of gradient colors are not provided.",
|
|
52
52
|
},
|
|
53
53
|
],
|
|
54
54
|
};
|
|
@@ -2513,7 +2513,7 @@ function getPlayerConfiguration({ platform }) {
|
|
|
2513
2513
|
styles.fields.push(
|
|
2514
2514
|
fieldsGroup(
|
|
2515
2515
|
"Audio Player",
|
|
2516
|
-
"This section allows you to configure the audio player layout",
|
|
2516
|
+
"This section allows you to configure the audio player layout 2",
|
|
2517
2517
|
[
|
|
2518
2518
|
{
|
|
2519
2519
|
key: "audio_player_background_color",
|
|
@@ -2547,6 +2547,12 @@ function getPlayerConfiguration({ platform }) {
|
|
|
2547
2547
|
multiple: false,
|
|
2548
2548
|
label_tooltip: "Choose the default aspect ratio for the artwork",
|
|
2549
2549
|
},
|
|
2550
|
+
{
|
|
2551
|
+
key: "audio_player_artwork_border_radius",
|
|
2552
|
+
label: "Audio Player Artwork Corner Radius",
|
|
2553
|
+
type: "number_input",
|
|
2554
|
+
initial_value: 16,
|
|
2555
|
+
},
|
|
2550
2556
|
]
|
|
2551
2557
|
)
|
|
2552
2558
|
);
|
package/manifestUtils/index.js
CHANGED
|
@@ -8,6 +8,7 @@ const {
|
|
|
8
8
|
|
|
9
9
|
const { tvActionButtonsContainer } = require("./tvAction/container");
|
|
10
10
|
const { tvActionButton } = require("./tvAction/button");
|
|
11
|
+
const { compact } = require("./_internals");
|
|
11
12
|
|
|
12
13
|
const { spacingKey, absolutePositionElement } = require("./containers");
|
|
13
14
|
|
|
@@ -46,4 +47,5 @@ module.exports = {
|
|
|
46
47
|
tvProgressBar,
|
|
47
48
|
secondaryImage,
|
|
48
49
|
getUpdatedSecondaryImageKeys,
|
|
50
|
+
compact,
|
|
49
51
|
};
|
package/manifestUtils/keys.js
CHANGED
|
@@ -21,7 +21,30 @@ const ZAPPIFEST_FIELDS = {
|
|
|
21
21
|
},
|
|
22
22
|
};
|
|
23
23
|
|
|
24
|
-
const
|
|
24
|
+
const TV_PLATFORMS_FOR_FONTS = [
|
|
25
|
+
"tvOS",
|
|
26
|
+
"android",
|
|
27
|
+
"LG",
|
|
28
|
+
"samsung",
|
|
29
|
+
"roku",
|
|
30
|
+
"vizio",
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
const MOBILE_PLATFORMS = [
|
|
34
|
+
"ios",
|
|
35
|
+
"ios_for_quickbrick",
|
|
36
|
+
"android",
|
|
37
|
+
"android_for_quickbrick",
|
|
38
|
+
];
|
|
39
|
+
|
|
40
|
+
const TV_PLATFORMS = [
|
|
41
|
+
"android_tv_for_quickbrick",
|
|
42
|
+
"amazon_fire_tv_for_quickbrick",
|
|
43
|
+
"tvos_for_quickbrick",
|
|
44
|
+
"samsung_tv",
|
|
45
|
+
"lg_tv",
|
|
46
|
+
"vizio",
|
|
47
|
+
];
|
|
25
48
|
|
|
26
49
|
const FontPropsForTVPlatform = (platform) => ({
|
|
27
50
|
[`${R.toLower(platform)}FontFamily`]: {
|
|
@@ -92,7 +115,7 @@ const TV_FONT_KEY_DATA = {
|
|
|
92
115
|
name: "focused font color",
|
|
93
116
|
type: ZAPPIFEST_FIELDS.color_picker,
|
|
94
117
|
},
|
|
95
|
-
...R.reduce(addTVFontsForPlatform, {},
|
|
118
|
+
...R.reduce(addTVFontsForPlatform, {}, TV_PLATFORMS_FOR_FONTS),
|
|
96
119
|
textAlignment: {
|
|
97
120
|
name: "text alignment",
|
|
98
121
|
type: ZAPPIFEST_FIELDS.select,
|
|
@@ -2083,4 +2106,6 @@ module.exports = {
|
|
|
2083
2106
|
TV_CELL_BADGE_FIELDS,
|
|
2084
2107
|
progressBarFields,
|
|
2085
2108
|
secondaryImageFields,
|
|
2109
|
+
TV_PLATFORMS,
|
|
2110
|
+
MOBILE_PLATFORMS,
|
|
2086
2111
|
};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { modalStore } from "../";
|
|
2
|
+
|
|
3
|
+
describe("Modal State", () => {
|
|
4
|
+
it("should have initial state", () => {
|
|
5
|
+
const state = modalStore.getState();
|
|
6
|
+
|
|
7
|
+
expect(state).toMatchObject({
|
|
8
|
+
modalState: {
|
|
9
|
+
visible: false,
|
|
10
|
+
screen: null,
|
|
11
|
+
options: {},
|
|
12
|
+
props: {},
|
|
13
|
+
},
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
expect(state.openModal).toBeDefined();
|
|
17
|
+
expect(state.dismissModal).toBeDefined();
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
describe("opening and dismissing modal", () => {
|
|
21
|
+
it("should open modal", () => {
|
|
22
|
+
const item = { id: "test", name: "Test Modal" };
|
|
23
|
+
const options = { animated: true, animationType: "slide" };
|
|
24
|
+
const props = { customProp: "value" };
|
|
25
|
+
|
|
26
|
+
modalStore.getState().openModal({ item, options, props });
|
|
27
|
+
|
|
28
|
+
const state = modalStore.getState();
|
|
29
|
+
|
|
30
|
+
expect(state.modalState).toMatchObject({
|
|
31
|
+
visible: true,
|
|
32
|
+
screen: item,
|
|
33
|
+
options,
|
|
34
|
+
props,
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
it("should dismiss modal", () => {
|
|
39
|
+
modalStore.getState().dismissModal();
|
|
40
|
+
|
|
41
|
+
const state = modalStore.getState();
|
|
42
|
+
|
|
43
|
+
expect(state.modalState).toMatchObject({
|
|
44
|
+
visible: false,
|
|
45
|
+
screen: null,
|
|
46
|
+
options: {},
|
|
47
|
+
props: {},
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
});
|
package/modalState/index.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useStore, createStore } from "zustand";
|
|
2
2
|
|
|
3
3
|
interface ModalState {
|
|
4
4
|
visible: boolean;
|
|
@@ -25,7 +25,7 @@ const initialModalState: ModalState = {
|
|
|
25
25
|
props: {},
|
|
26
26
|
};
|
|
27
27
|
|
|
28
|
-
export const
|
|
28
|
+
export const modalStore = createStore<ModalStore>((set) => ({
|
|
29
29
|
modalState: initialModalState,
|
|
30
30
|
setModalState: (newState) =>
|
|
31
31
|
set((state) => ({
|
|
@@ -51,3 +51,33 @@ export const useModalStore = create<ModalStore>((set) => ({
|
|
|
51
51
|
}),
|
|
52
52
|
dismissModal: () => set(() => ({ modalState: initialModalState })),
|
|
53
53
|
}));
|
|
54
|
+
|
|
55
|
+
export const useModalStore = <T>(selector: (state: ModalStore) => T) =>
|
|
56
|
+
useStore(modalStore, selector);
|
|
57
|
+
|
|
58
|
+
export const openModal = modalStore.getInitialState().openModal;
|
|
59
|
+
|
|
60
|
+
export const dismissModal = modalStore.getInitialState().dismissModal;
|
|
61
|
+
|
|
62
|
+
export const openBottomSheetModal = ({
|
|
63
|
+
ModalBottomSheetContent,
|
|
64
|
+
modalBottomSheetContentProps,
|
|
65
|
+
props = {},
|
|
66
|
+
options = {},
|
|
67
|
+
}: OpenModalBottomSheetArgs) => {
|
|
68
|
+
openModal({
|
|
69
|
+
item: {
|
|
70
|
+
ModalBottomSheetContent,
|
|
71
|
+
modalBottomSheetContentProps,
|
|
72
|
+
},
|
|
73
|
+
props,
|
|
74
|
+
options: {
|
|
75
|
+
animationType: "none",
|
|
76
|
+
animated: false,
|
|
77
|
+
...options,
|
|
78
|
+
},
|
|
79
|
+
});
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
export const useModalStoreState = (): ModalState =>
|
|
83
|
+
useModalStore<ModalState>((state) => state.modalState);
|
package/navigationUtils/index.ts
CHANGED
|
@@ -111,6 +111,7 @@ export function getNavigationProps({
|
|
|
111
111
|
assets: ZappNavBarAssets;
|
|
112
112
|
rules: ZappNavBarRules;
|
|
113
113
|
nav_items: NavBarItem[];
|
|
114
|
+
data: MenuItemDataProperties;
|
|
114
115
|
} | null {
|
|
115
116
|
const { activeRiver } = navigator;
|
|
116
117
|
const { navigations, id: selected, home } = activeRiver; // use useRiver hook instead
|
|
@@ -124,7 +125,7 @@ export function getNavigationProps({
|
|
|
124
125
|
return null;
|
|
125
126
|
}
|
|
126
127
|
|
|
127
|
-
const { styles, assets, nav_items, rules } = navigation;
|
|
128
|
+
const { styles, assets, nav_items, rules, data } = navigation;
|
|
128
129
|
|
|
129
130
|
return {
|
|
130
131
|
selected,
|
|
@@ -134,6 +135,7 @@ export function getNavigationProps({
|
|
|
134
135
|
assets: assets as ZappNavBarAssets,
|
|
135
136
|
nav_items: nav_items as any as NavBarItem[],
|
|
136
137
|
rules: rules as any as ZappNavBarRules,
|
|
138
|
+
data: data as MenuItemDataProperties,
|
|
137
139
|
};
|
|
138
140
|
}
|
|
139
141
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { toPositiveNumberWithDefault } from "..";
|
|
2
2
|
|
|
3
|
-
describe("
|
|
3
|
+
describe("toPositiveNumberWithDefault", () => {
|
|
4
4
|
const DEFAULT = 5;
|
|
5
5
|
|
|
6
6
|
it("return number if input is positive number", () => {
|
|
7
|
-
const inputs = [
|
|
7
|
+
const inputs = [1, 2, 100, 200.12, Infinity];
|
|
8
8
|
expect.assertions(inputs.length);
|
|
9
9
|
|
|
10
10
|
inputs.forEach((input) => {
|
|
@@ -14,7 +14,7 @@ describe("toNumber", () => {
|
|
|
14
14
|
});
|
|
15
15
|
|
|
16
16
|
it("return number if input is positive number as string", () => {
|
|
17
|
-
const inputs = ["
|
|
17
|
+
const inputs = ["1", "2", "100", "200.12"];
|
|
18
18
|
expect.assertions(inputs.length);
|
|
19
19
|
|
|
20
20
|
inputs.forEach((input) => {
|
|
@@ -63,4 +63,24 @@ describe("toNumber", () => {
|
|
|
63
63
|
expect(output).toBe(DEFAULT);
|
|
64
64
|
});
|
|
65
65
|
});
|
|
66
|
+
|
|
67
|
+
it("return default if input is zero number", () => {
|
|
68
|
+
const inputs = [0, -0];
|
|
69
|
+
expect.assertions(inputs.length);
|
|
70
|
+
|
|
71
|
+
inputs.forEach((input) => {
|
|
72
|
+
const output = toPositiveNumberWithDefault(DEFAULT, input);
|
|
73
|
+
expect(output).toBe(DEFAULT);
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
it("return default if input is zero string", () => {
|
|
78
|
+
const inputs = ["0", "-0"];
|
|
79
|
+
expect.assertions(inputs.length);
|
|
80
|
+
|
|
81
|
+
inputs.forEach((input) => {
|
|
82
|
+
const output = toPositiveNumberWithDefault(DEFAULT, input);
|
|
83
|
+
expect(output).toBe(DEFAULT);
|
|
84
|
+
});
|
|
85
|
+
});
|
|
66
86
|
});
|
package/numberUtils/index.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@applicaster/zapp-react-native-utils",
|
|
3
|
-
"version": "13.0.0-alpha.
|
|
3
|
+
"version": "13.0.0-alpha.1711912250",
|
|
4
4
|
"description": "Applicaster Zapp React Native utilities package",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"types": "index.d.ts",
|
|
7
7
|
"scripts": {
|
|
8
|
-
"test": "jest -w=2",
|
|
9
8
|
"build": "echo skipping hybrid ts build in main packages for now"
|
|
10
9
|
},
|
|
11
10
|
"publishConfig": {
|
|
@@ -28,7 +27,7 @@
|
|
|
28
27
|
},
|
|
29
28
|
"homepage": "https://github.com/applicaster/quickbrick#readme",
|
|
30
29
|
"dependencies": {
|
|
31
|
-
"@applicaster/applicaster-types": "13.0.0-alpha.
|
|
30
|
+
"@applicaster/applicaster-types": "13.0.0-alpha.1711912250",
|
|
32
31
|
"buffer": "^5.2.1",
|
|
33
32
|
"camelize": "^1.0.0",
|
|
34
33
|
"dayjs": "^1.11.10",
|
|
@@ -40,20 +40,12 @@ function getPlayerConfiguration({ platform }) {
|
|
|
40
40
|
"Disable if you don't want the content to have a right orientation",
|
|
41
41
|
},
|
|
42
42
|
{
|
|
43
|
-
key: "
|
|
44
|
-
label: "
|
|
45
|
-
initial_value: false,
|
|
46
|
-
type: "switch",
|
|
47
|
-
label_tooltip:
|
|
48
|
-
"Enable if you want to have adaptive background gradient based on audio background image.",
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
key: "audio_player_background_image_query",
|
|
52
|
-
label: "Audio Player Image Query",
|
|
43
|
+
key: "audio_player_background_image_default_color",
|
|
44
|
+
label: "Audio Player Background Image Default Color",
|
|
53
45
|
initial_value: "",
|
|
54
46
|
type: "text_input",
|
|
55
47
|
label_tooltip:
|
|
56
|
-
"Set the
|
|
48
|
+
"Set the default color for the audio player background image if not image or set of gradient colors are not provided.",
|
|
57
49
|
},
|
|
58
50
|
],
|
|
59
51
|
};
|
|
@@ -2549,6 +2541,12 @@ function getPlayerConfiguration({ platform }) {
|
|
|
2549
2541
|
multiple: false,
|
|
2550
2542
|
label_tooltip: "Choose the default aspect ratio for the artwork",
|
|
2551
2543
|
},
|
|
2544
|
+
{
|
|
2545
|
+
key: "audio_player_artwork_border_radius",
|
|
2546
|
+
label: "Audio Player Artwork Corner Radius",
|
|
2547
|
+
type: "number_input",
|
|
2548
|
+
initial_value: 16,
|
|
2549
|
+
},
|
|
2552
2550
|
]
|
|
2553
2551
|
)
|
|
2554
2552
|
);
|
|
@@ -5,6 +5,7 @@ import * as R from "ramda";
|
|
|
5
5
|
import { useNavigation } from "../navigation";
|
|
6
6
|
import { usePickFromState } from "@applicaster/zapp-react-native-redux/hooks";
|
|
7
7
|
import { platformSelect } from "@applicaster/zapp-react-native-utils/reactUtils";
|
|
8
|
+
import { dismissModal, openModal } from "../../modalState";
|
|
8
9
|
|
|
9
10
|
const GOOGLE_ADS_IDENTIFIER = "google-admob-ads-qb";
|
|
10
11
|
|
|
@@ -14,9 +15,8 @@ const ModalContainer = platformSelect({
|
|
|
14
15
|
});
|
|
15
16
|
|
|
16
17
|
export function useAdvertisingInterstitial() {
|
|
17
|
-
const
|
|
18
|
+
const { screenData, currentRoute } = useNavigation();
|
|
18
19
|
const { plugins } = usePickFromState();
|
|
19
|
-
const { screenData } = navigator;
|
|
20
20
|
|
|
21
21
|
return useEffect(() => {
|
|
22
22
|
// TODD: typing problem: fix any type
|
|
@@ -26,7 +26,7 @@ export function useAdvertisingInterstitial() {
|
|
|
26
26
|
plugins
|
|
27
27
|
);
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
openModal({
|
|
30
30
|
item: {},
|
|
31
31
|
options: {
|
|
32
32
|
ModalContainer,
|
|
@@ -36,11 +36,11 @@ export function useAdvertisingInterstitial() {
|
|
|
36
36
|
screenType: "hooks",
|
|
37
37
|
screenData: {
|
|
38
38
|
payload: screenData,
|
|
39
|
-
callback:
|
|
39
|
+
callback: dismissModal,
|
|
40
40
|
hookPlugin: GoogleAdsPlugin,
|
|
41
41
|
},
|
|
42
42
|
},
|
|
43
43
|
});
|
|
44
44
|
}
|
|
45
|
-
}, [
|
|
45
|
+
}, [currentRoute, screenData?.id]);
|
|
46
46
|
}
|
|
@@ -14,10 +14,10 @@ export function useAppState(returnIsActive) {
|
|
|
14
14
|
};
|
|
15
15
|
|
|
16
16
|
React.useEffect(() => {
|
|
17
|
-
|
|
17
|
+
AppState.addEventListener("change", setAppState);
|
|
18
18
|
|
|
19
19
|
return () => {
|
|
20
|
-
|
|
20
|
+
AppState.removeEventListener("change", setAppState);
|
|
21
21
|
};
|
|
22
22
|
}, []);
|
|
23
23
|
|