-
Notifications
You must be signed in to change notification settings - Fork 295
/
PlatformAppProviderWrapper.tsx
57 lines (52 loc) · 2.07 KB
/
PlatformAppProviderWrapper.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import React, { ReactNode } from "react";
import VersionNumber from "react-native-version-number";
import { RemoteLiveAppProvider } from "@ledgerhq/live-common/platform/providers/RemoteLiveAppProvider/index";
import { LocalLiveAppProvider } from "@ledgerhq/live-common/wallet-api/LocalLiveAppProvider/index";
import { RampCatalogProvider } from "@ledgerhq/live-common/platform/providers/RampCatalogProvider/index";
import useEnv from "@ledgerhq/live-common/hooks/useEnv";
import { Platform } from "react-native";
import { useLocale } from "~/context/Locale";
import {
DISCOVER_STORE_KEY,
INITIAL_PLATFORM_STATE,
} from "@ledgerhq/live-common/wallet-api/constants";
import { DiscoverDB } from "@ledgerhq/live-common/wallet-api/types";
import { useDB } from "./db";
type PlatformAppProviderWrapperProps = {
children: ReactNode;
};
const AUTO_UPDATE_DEFAULT_DELAY = 1800 * 1000; // 1800 seconds
const PLATFORM = Platform.OS === "ios" ? "ios" : "android";
export default function PlatformAppProviderWrapper({ children }: PlatformAppProviderWrapperProps) {
const isExperimentalAppEnabled = useEnv<"PLATFORM_EXPERIMENTAL_APPS">(
"PLATFORM_EXPERIMENTAL_APPS",
) as boolean;
const { locale: lang } = useLocale();
const isDebugAppEnabled = useEnv<"PLATFORM_DEBUG">("PLATFORM_DEBUG") as boolean;
const localLiveAppDB = useLocalLiveAppDB();
return (
<RemoteLiveAppProvider
updateFrequency={AUTO_UPDATE_DEFAULT_DELAY}
parameters={{
platform: PLATFORM,
allowDebugApps: isDebugAppEnabled,
allowExperimentalApps: isExperimentalAppEnabled,
llVersion: VersionNumber.appVersion,
lang,
}}
>
<LocalLiveAppProvider db={localLiveAppDB}>
<RampCatalogProvider updateFrequency={AUTO_UPDATE_DEFAULT_DELAY}>
{children}
</RampCatalogProvider>
</LocalLiveAppProvider>
</RemoteLiveAppProvider>
);
}
function useLocalLiveAppDB() {
return useDB<DiscoverDB, DiscoverDB["localLiveApp"]>(
DISCOVER_STORE_KEY,
INITIAL_PLATFORM_STATE,
state => state.localLiveApp || INITIAL_PLATFORM_STATE.localLiveApp,
);
}