mirror of
https://github.com/BlueWallet/BlueWallet.git
synced 2025-03-04 12:18:10 +01:00
Merge branch 'master' of github.com:BlueWallet/BlueWallet into add-bip47-notif-tx
This commit is contained in:
commit
71bd7963d5
22 changed files with 211 additions and 342 deletions
15
App.tsx
15
App.tsx
|
@ -1,6 +1,6 @@
|
||||||
import 'react-native-gesture-handler'; // should be on top
|
import 'react-native-gesture-handler'; // should be on top
|
||||||
import React, { useEffect } from 'react';
|
import React from 'react';
|
||||||
import { NativeModules, Platform, useColorScheme } from 'react-native';
|
import { useColorScheme } from 'react-native';
|
||||||
import { NavigationContainer } from '@react-navigation/native';
|
import { NavigationContainer } from '@react-navigation/native';
|
||||||
import { SafeAreaProvider } from 'react-native-safe-area-context';
|
import { SafeAreaProvider } from 'react-native-safe-area-context';
|
||||||
import { navigationRef } from './NavigationService';
|
import { navigationRef } from './NavigationService';
|
||||||
|
@ -9,19 +9,13 @@ import { NavigationProvider } from './components/NavigationProvider';
|
||||||
import { BlueStorageProvider } from './blue_modules/storage-context';
|
import { BlueStorageProvider } from './blue_modules/storage-context';
|
||||||
import MasterView from './MasterView';
|
import MasterView from './MasterView';
|
||||||
import { SettingsProvider } from './components/Context/SettingsContext';
|
import { SettingsProvider } from './components/Context/SettingsContext';
|
||||||
const { SplashScreen } = NativeModules;
|
import { LargeScreenProvider } from './components/Context/LargeScreenProvider';
|
||||||
|
|
||||||
const App = () => {
|
const App = () => {
|
||||||
const colorScheme = useColorScheme();
|
const colorScheme = useColorScheme();
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
if (Platform.OS === 'ios') {
|
|
||||||
// Call hide to setup the listener on the native side
|
|
||||||
SplashScreen?.addObserver();
|
|
||||||
}
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
<LargeScreenProvider>
|
||||||
<NavigationContainer ref={navigationRef} theme={colorScheme === 'dark' ? BlueDarkTheme : BlueDefaultTheme}>
|
<NavigationContainer ref={navigationRef} theme={colorScheme === 'dark' ? BlueDarkTheme : BlueDefaultTheme}>
|
||||||
<NavigationProvider>
|
<NavigationProvider>
|
||||||
<SafeAreaProvider>
|
<SafeAreaProvider>
|
||||||
|
@ -33,6 +27,7 @@ const App = () => {
|
||||||
</SafeAreaProvider>
|
</SafeAreaProvider>
|
||||||
</NavigationProvider>
|
</NavigationProvider>
|
||||||
</NavigationContainer>
|
</NavigationContainer>
|
||||||
|
</LargeScreenProvider>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,22 +1,13 @@
|
||||||
import 'react-native-gesture-handler'; // should be on top
|
import 'react-native-gesture-handler'; // should be on top
|
||||||
import React, { Suspense, lazy, useEffect } from 'react';
|
import React, { Suspense, lazy } from 'react';
|
||||||
import { NativeModules, Platform } from 'react-native';
|
|
||||||
import MainRoot from './navigation';
|
import MainRoot from './navigation';
|
||||||
import { useStorage } from './blue_modules/storage-context';
|
import { useStorage } from './blue_modules/storage-context';
|
||||||
import Biometric from './class/biometrics';
|
import Biometric from './class/biometrics';
|
||||||
const CompanionDelegates = lazy(() => import('./components/CompanionDelegates'));
|
const CompanionDelegates = lazy(() => import('./components/CompanionDelegates'));
|
||||||
const { SplashScreen } = NativeModules;
|
|
||||||
|
|
||||||
const MasterView = () => {
|
const MasterView = () => {
|
||||||
const { walletsInitialized } = useStorage();
|
const { walletsInitialized } = useStorage();
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
if (Platform.OS === 'ios') {
|
|
||||||
// Call hide to setup the listener on the native side
|
|
||||||
SplashScreen?.addObserver();
|
|
||||||
}
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Biometric />
|
<Biometric />
|
||||||
|
|
|
@ -7,14 +7,14 @@
|
||||||
android:required="false" />
|
android:required="false" />
|
||||||
|
|
||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
|
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
|
||||||
<uses-permission android:name="android.permission.CAMERA"/>
|
<uses-permission android:name="android.permission.CAMERA" />
|
||||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||||
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
|
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
|
||||||
<uses-permission android:name="android.permission.USE_BIOMETRIC" />
|
<uses-permission android:name="android.permission.USE_BIOMETRIC" />
|
||||||
<uses-permission android:name="android.permission.USE_FINGERPRINT" />
|
<uses-permission android:name="android.permission.USE_FINGERPRINT" />
|
||||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
|
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
||||||
<uses-permission android:name="android.permission.VIBRATE" />
|
<uses-permission android:name="android.permission.VIBRATE" />
|
||||||
<uses-permission android:name="android.permission.ACTION_OPEN_DOCUMENT" />
|
<uses-permission android:name="android.permission.ACTION_OPEN_DOCUMENT" />
|
||||||
<uses-permission android:name="android.permission.ACTION_GET_CONTENT" />
|
<uses-permission android:name="android.permission.ACTION_GET_CONTENT" />
|
||||||
|
@ -33,24 +33,26 @@
|
||||||
android:theme="@style/AppTheme"
|
android:theme="@style/AppTheme"
|
||||||
android:networkSecurityConfig="@xml/network_security_config">
|
android:networkSecurityConfig="@xml/network_security_config">
|
||||||
|
|
||||||
<meta-data android:name="com.dieam.reactnativepushnotification.notification_channel_name"
|
<meta-data
|
||||||
android:value="BlueWallet notifications"/> <!-- YOUR NOTIFICATION CHANNEL NAME -->
|
android:name="com.dieam.reactnativepushnotification.notification_channel_name"
|
||||||
<meta-data android:name="com.dieam.reactnativepushnotification.notification_channel_description"
|
android:value="BlueWallet notifications" />
|
||||||
android:value="Notifications about incoming payments"/> <!-- YOUR NOTIFICATION CHANNEL DESCRIPTION -->
|
<meta-data
|
||||||
|
android:name="com.dieam.reactnativepushnotification.notification_channel_description"
|
||||||
<!-- Change the value to true to enable pop-up for in foreground (remote-only, for local use ignoreInForeground) -->
|
android:value="Notifications about incoming payments" />
|
||||||
<meta-data android:name="com.dieam.reactnativepushnotification.notification_foreground"
|
<meta-data
|
||||||
android:value="true"/>
|
android:name="com.dieam.reactnativepushnotification.notification_foreground"
|
||||||
<!-- Change the value to false if you don't want the creation of the default channel -->
|
android:value="true" />
|
||||||
<meta-data android:name="com.dieam.reactnativepushnotification.channel_create_default"
|
<meta-data
|
||||||
android:value="true"/>
|
android:name="com.dieam.reactnativepushnotification.channel_create_default"
|
||||||
<!-- Change the resource name to your App's accent color - or any other color you want -->
|
android:value="true" />
|
||||||
<meta-data android:name="com.dieam.reactnativepushnotification.notification_color"
|
<meta-data
|
||||||
android:resource="@color/white"/> <!-- or @android:color/{name} to use a standard color -->
|
android:name="com.dieam.reactnativepushnotification.notification_color"
|
||||||
|
android:resource="@color/white" />
|
||||||
|
|
||||||
<receiver android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationActions" />
|
<receiver android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationActions" />
|
||||||
<receiver android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationPublisher" />
|
<receiver android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationPublisher" />
|
||||||
<receiver android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationBootEventReceiver"
|
<receiver
|
||||||
|
android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationBootEventReceiver"
|
||||||
android:exported="true">
|
android:exported="true">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.BOOT_COMPLETED" />
|
<action android:name="android.intent.action.BOOT_COMPLETED" />
|
||||||
|
@ -59,20 +61,11 @@
|
||||||
|
|
||||||
<service
|
<service
|
||||||
android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationListenerService"
|
android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationListenerService"
|
||||||
android:exported="false" >
|
android:exported="false">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="com.google.firebase.MESSAGING_EVENT" />
|
<action android:name="com.google.firebase.MESSAGING_EVENT" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</service>
|
</service>
|
||||||
<activity android:name=".SplashActivity"
|
|
||||||
android:exported="true"
|
|
||||||
>
|
|
||||||
<intent-filter>
|
|
||||||
<action android:name="android.intent.action.MAIN" />
|
|
||||||
<category android:name="android.intent.category.LAUNCHER" />
|
|
||||||
</intent-filter>
|
|
||||||
</activity>
|
|
||||||
|
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".MainActivity"
|
android:name=".MainActivity"
|
||||||
|
@ -81,6 +74,10 @@
|
||||||
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
|
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
|
||||||
android:windowSoftInputMode="adjustResize"
|
android:windowSoftInputMode="adjustResize"
|
||||||
android:exported="true">
|
android:exported="true">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
|
</intent-filter>
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.VIEW" />
|
<action android:name="android.intent.action.VIEW" />
|
||||||
<category android:name="android.intent.category.DEFAULT" />
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
|
@ -109,7 +106,6 @@
|
||||||
android:mimeType="text/plain"
|
android:mimeType="text/plain"
|
||||||
android:pathPattern=".*\\.psbt" />
|
android:pathPattern=".*\\.psbt" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<meta-data android:name="com.bugsnag.android.API_KEY" android:value="17ba9059f676f1cc4f45d98182388b01" />
|
<meta-data android:name="com.bugsnag.android.API_KEY" android:value="17ba9059f676f1cc4f45d98182388b01" />
|
||||||
|
@ -118,11 +114,11 @@
|
||||||
<queries>
|
<queries>
|
||||||
<intent>
|
<intent>
|
||||||
<action android:name="android.intent.action.VIEW" />
|
<action android:name="android.intent.action.VIEW" />
|
||||||
<data android:scheme="https"/>
|
<data android:scheme="https" />
|
||||||
</intent>
|
</intent>
|
||||||
<intent>
|
<intent>
|
||||||
<action android:name="android.intent.action.VIEW" />
|
<action android:name="android.intent.action.VIEW" />
|
||||||
<data android:scheme="http"/>
|
<data android:scheme="http" />
|
||||||
</intent>
|
</intent>
|
||||||
</queries>
|
</queries>
|
||||||
</manifest>
|
</manifest>
|
||||||
|
|
|
@ -1,26 +0,0 @@
|
||||||
package io.bluewallet.bluewallet; // Replace with your package name
|
|
||||||
|
|
||||||
import android.content.Intent;
|
|
||||||
import android.os.Bundle;
|
|
||||||
import android.os.Handler;
|
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
|
||||||
|
|
||||||
public class SplashActivity extends AppCompatActivity {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
|
||||||
super.onCreate(savedInstanceState);
|
|
||||||
setContentView(R.layout.splash_screen); // Replace with your layout name
|
|
||||||
|
|
||||||
int SPLASH_DISPLAY_LENGTH = 1000; // Splash screen duration in milliseconds
|
|
||||||
|
|
||||||
new Handler().postDelayed(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
Intent mainIntent = new Intent(SplashActivity.this, MainActivity.class);
|
|
||||||
SplashActivity.this.startActivity(mainIntent);
|
|
||||||
SplashActivity.this.finish();
|
|
||||||
}
|
|
||||||
}, SPLASH_DISPLAY_LENGTH);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,13 +0,0 @@
|
||||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:background="@color/background_color">
|
|
||||||
|
|
||||||
<ImageView
|
|
||||||
android:layout_width="100dp"
|
|
||||||
android:layout_height="75dp"
|
|
||||||
android:scaleType="fitCenter"
|
|
||||||
android:layout_centerInParent="true"
|
|
||||||
android:src="@drawable/splash_icon" />
|
|
||||||
</RelativeLayout>
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import { isTablet, getDeviceType } from 'react-native-device-info';
|
import { isTablet as checkIsTablet, getDeviceType } from 'react-native-device-info';
|
||||||
|
|
||||||
|
const isTablet: boolean = checkIsTablet();
|
||||||
const isDesktop: boolean = getDeviceType() === 'Desktop';
|
const isDesktop: boolean = getDeviceType() === 'Desktop';
|
||||||
|
const isHandset: boolean = getDeviceType() === 'Handset';
|
||||||
|
|
||||||
export const isHandset: boolean = getDeviceType() === 'Handset';
|
export { isDesktop, isTablet, isHandset };
|
||||||
export { isDesktop, isTablet };
|
|
||||||
|
|
|
@ -74,11 +74,13 @@ export const BlueStorageProvider = ({ children }: { children: React.ReactNode })
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setWallets(BlueApp.getWallets());
|
setWallets(BlueApp.getWallets());
|
||||||
|
(async () => {
|
||||||
BlueElectrum.isDisabled().then(setIsElectrumDisabled);
|
const isElectrumDisabledValue = await BlueElectrum.isDisabled();
|
||||||
if (walletsInitialized) {
|
setIsElectrumDisabled(isElectrumDisabledValue);
|
||||||
|
if (walletsInitialized && !isElectrumDisabledValue) {
|
||||||
BlueElectrum.connectMain();
|
BlueElectrum.connectMain();
|
||||||
}
|
}
|
||||||
|
})();
|
||||||
}, [walletsInitialized]);
|
}, [walletsInitialized]);
|
||||||
|
|
||||||
const saveToDisk = async (force: boolean = false) => {
|
const saveToDisk = async (force: boolean = false) => {
|
||||||
|
|
41
components/Context/LargeScreenProvider.tsx
Normal file
41
components/Context/LargeScreenProvider.tsx
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
import React, { createContext, useState, useEffect, useMemo, ReactNode } from 'react';
|
||||||
|
import { Dimensions } from 'react-native';
|
||||||
|
import { isDesktop, isTablet } from '../../blue_modules/environment';
|
||||||
|
|
||||||
|
interface ILargeScreenContext {
|
||||||
|
isLargeScreen: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const LargeScreenContext = createContext<ILargeScreenContext | undefined>(undefined);
|
||||||
|
|
||||||
|
interface LargeScreenProviderProps {
|
||||||
|
children: ReactNode;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const LargeScreenProvider: React.FC<LargeScreenProviderProps> = ({ children }) => {
|
||||||
|
const [windowWidth, setWindowWidth] = useState<number>(Dimensions.get('window').width);
|
||||||
|
const screenWidth: number = useMemo(() => Dimensions.get('screen').width, []);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const updateScreenUsage = (): void => {
|
||||||
|
const newWindowWidth = Dimensions.get('window').width;
|
||||||
|
if (newWindowWidth !== windowWidth) {
|
||||||
|
setWindowWidth(newWindowWidth);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const subscription = Dimensions.addEventListener('change', updateScreenUsage);
|
||||||
|
return () => subscription.remove();
|
||||||
|
}, [windowWidth]);
|
||||||
|
|
||||||
|
const isLargeScreen: boolean = useMemo(() => {
|
||||||
|
const halfScreenWidth = windowWidth >= screenWidth / 2;
|
||||||
|
const condition = (isTablet && halfScreenWidth) || isDesktop;
|
||||||
|
console.debug(
|
||||||
|
`LargeScreenProvider.isLargeScreen: width: ${windowWidth}, Screen width: ${screenWidth}, Is tablet: ${isTablet}, Is large screen: ${condition}, isDesktkop: ${isDesktop}`,
|
||||||
|
);
|
||||||
|
return condition;
|
||||||
|
}, [windowWidth, screenWidth]);
|
||||||
|
|
||||||
|
return <LargeScreenContext.Provider value={{ isLargeScreen }}>{children}</LargeScreenContext.Provider>;
|
||||||
|
};
|
|
@ -154,7 +154,7 @@ const iStyles = StyleSheet.create({
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
export const WalletCarouselItem = ({ item, _, onPress, handleLongPress, isSelectedWallet, customStyle }) => {
|
export const WalletCarouselItem = React.memo(({ item, _, onPress, handleLongPress, isSelectedWallet, customStyle }) => {
|
||||||
const scaleValue = new Animated.Value(1.0);
|
const scaleValue = new Animated.Value(1.0);
|
||||||
const { colors } = useTheme();
|
const { colors } = useTheme();
|
||||||
const { walletTransactionUpdateStatus } = useContext(BlueStorageContext);
|
const { walletTransactionUpdateStatus } = useContext(BlueStorageContext);
|
||||||
|
@ -251,7 +251,7 @@ export const WalletCarouselItem = ({ item, _, onPress, handleLongPress, isSelect
|
||||||
</Pressable>
|
</Pressable>
|
||||||
</Animated.View>
|
</Animated.View>
|
||||||
);
|
);
|
||||||
};
|
});
|
||||||
|
|
||||||
WalletCarouselItem.propTypes = {
|
WalletCarouselItem.propTypes = {
|
||||||
item: PropTypes.any,
|
item: PropTypes.any,
|
||||||
|
@ -292,7 +292,7 @@ const WalletsCarousel = forwardRef((props, ref) => {
|
||||||
<NewWalletPanel onPress={onPress} />
|
<NewWalletPanel onPress={onPress} />
|
||||||
),
|
),
|
||||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
[horizontal, selectedWallet, handleLongPress, onPress, preferredFiatCurrency, language],
|
[horizontal, selectedWallet, preferredFiatCurrency, language],
|
||||||
);
|
);
|
||||||
const flatListRef = useRef();
|
const flatListRef = useRef();
|
||||||
|
|
||||||
|
|
|
@ -1,41 +1,10 @@
|
||||||
import { useState, useEffect, useMemo } from 'react';
|
import { useContext } from 'react';
|
||||||
import { Dimensions } from 'react-native';
|
import { LargeScreenContext } from '../components/Context/LargeScreenProvider';
|
||||||
import { isTablet } from 'react-native-device-info';
|
|
||||||
import { isDesktop } from '../blue_modules/environment';
|
|
||||||
|
|
||||||
// Custom hook to determine if the screen is large
|
export const useIsLargeScreen = (): boolean => {
|
||||||
export const useIsLargeScreen = () => {
|
const context = useContext(LargeScreenContext);
|
||||||
const [windowWidth, setWindowWidth] = useState(Dimensions.get('window').width);
|
if (context === undefined) {
|
||||||
const screenWidth = useMemo(() => Dimensions.get('screen').width, []);
|
throw new Error('useIsLargeScreen must be used within a LargeScreenProvider');
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
const updateScreenUsage = () => {
|
|
||||||
const newWindowWidth = Dimensions.get('window').width;
|
|
||||||
if (newWindowWidth !== windowWidth) {
|
|
||||||
console.debug(`Window width changed: ${newWindowWidth}`);
|
|
||||||
setWindowWidth(newWindowWidth);
|
|
||||||
}
|
}
|
||||||
};
|
return context.isLargeScreen;
|
||||||
|
|
||||||
// Add event listener for dimension changes
|
|
||||||
const subscription = Dimensions.addEventListener('change', updateScreenUsage);
|
|
||||||
|
|
||||||
// Cleanup function to remove the event listener
|
|
||||||
return () => {
|
|
||||||
subscription.remove();
|
|
||||||
};
|
|
||||||
}, [windowWidth]);
|
|
||||||
|
|
||||||
// Determine if the window width is at least half of the screen width
|
|
||||||
const isLargeScreen = useMemo(() => {
|
|
||||||
const isRunningOnTablet = isTablet();
|
|
||||||
const halfScreenWidth = windowWidth >= screenWidth / 2;
|
|
||||||
const condition = (isRunningOnTablet && halfScreenWidth) || isDesktop;
|
|
||||||
console.debug(
|
|
||||||
`Window width: ${windowWidth}, Screen width: ${screenWidth}, Is tablet: ${isTablet()}, Is large screen: ${condition}, isDesktkop: ${isDesktop}`,
|
|
||||||
);
|
|
||||||
return condition;
|
|
||||||
}, [windowWidth, screenWidth]);
|
|
||||||
|
|
||||||
return isLargeScreen;
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -151,8 +151,6 @@
|
||||||
B4A29A3A2B55C990002A67DF /* BlueWalletWatch.app in Embed Watch Content */ = {isa = PBXBuildFile; fileRef = B40D4E30225841EC00428FCC /* BlueWalletWatch.app */; platformFilter = ios; };
|
B4A29A3A2B55C990002A67DF /* BlueWalletWatch.app in Embed Watch Content */ = {isa = PBXBuildFile; fileRef = B40D4E30225841EC00428FCC /* BlueWalletWatch.app */; platformFilter = ios; };
|
||||||
B4A29A3C2B55C990002A67DF /* Stickers.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 6D2A6461258BA92C0092292B /* Stickers.appex */; platformFilter = ios; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
B4A29A3C2B55C990002A67DF /* Stickers.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 6D2A6461258BA92C0092292B /* Stickers.appex */; platformFilter = ios; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
||||||
B4A29A3D2B55C990002A67DF /* WidgetsExtension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 6DD4109C266CADF10087DE03 /* WidgetsExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
B4A29A3D2B55C990002A67DF /* WidgetsExtension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 6DD4109C266CADF10087DE03 /* WidgetsExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
||||||
B4AB21072B61D8CA0080440C /* SplashScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4AB21062B61D8CA0080440C /* SplashScreen.swift */; };
|
|
||||||
B4AB21092B61DC3F0080440C /* SplashScreen.m in Sources */ = {isa = PBXBuildFile; fileRef = B4AB21082B61DC3F0080440C /* SplashScreen.m */; };
|
|
||||||
B4AB225D2B02AD12001F4328 /* XMLParserDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4AB225C2B02AD12001F4328 /* XMLParserDelegate.swift */; };
|
B4AB225D2B02AD12001F4328 /* XMLParserDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4AB225C2B02AD12001F4328 /* XMLParserDelegate.swift */; };
|
||||||
B4AB225E2B02AD12001F4328 /* XMLParserDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4AB225C2B02AD12001F4328 /* XMLParserDelegate.swift */; };
|
B4AB225E2B02AD12001F4328 /* XMLParserDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4AB225C2B02AD12001F4328 /* XMLParserDelegate.swift */; };
|
||||||
B4EE583C226703320003363C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B40D4E35225841ED00428FCC /* Assets.xcassets */; };
|
B4EE583C226703320003363C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B40D4E35225841ED00428FCC /* Assets.xcassets */; };
|
||||||
|
@ -445,8 +443,6 @@
|
||||||
B49038D82B8FBAD300A8164A /* BlueWalletUITest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlueWalletUITest.swift; sourceTree = "<group>"; };
|
B49038D82B8FBAD300A8164A /* BlueWalletUITest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlueWalletUITest.swift; sourceTree = "<group>"; };
|
||||||
B4A29A452B55C990002A67DF /* BlueWallet.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = BlueWallet.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
B4A29A452B55C990002A67DF /* BlueWallet.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = BlueWallet.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
B4A29A462B55C990002A67DF /* BlueWallet-NoLDK.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "BlueWallet-NoLDK.plist"; sourceTree = "<absolute>"; };
|
B4A29A462B55C990002A67DF /* BlueWallet-NoLDK.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "BlueWallet-NoLDK.plist"; sourceTree = "<absolute>"; };
|
||||||
B4AB21062B61D8CA0080440C /* SplashScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SplashScreen.swift; sourceTree = "<group>"; };
|
|
||||||
B4AB21082B61DC3F0080440C /* SplashScreen.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SplashScreen.m; sourceTree = "<group>"; };
|
|
||||||
B4AB225C2B02AD12001F4328 /* XMLParserDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = XMLParserDelegate.swift; sourceTree = "<group>"; };
|
B4AB225C2B02AD12001F4328 /* XMLParserDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = XMLParserDelegate.swift; sourceTree = "<group>"; };
|
||||||
B4D3235A177F4580BA52F2F9 /* libRNCSlider.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNCSlider.a; sourceTree = "<group>"; };
|
B4D3235A177F4580BA52F2F9 /* libRNCSlider.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNCSlider.a; sourceTree = "<group>"; };
|
||||||
B642AFB13483418CAB6FF25E /* libRCTQRCodeLocalImage.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRCTQRCodeLocalImage.a; sourceTree = "<group>"; };
|
B642AFB13483418CAB6FF25E /* libRCTQRCodeLocalImage.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRCTQRCodeLocalImage.a; sourceTree = "<group>"; };
|
||||||
|
@ -865,8 +861,6 @@
|
||||||
B4AB21052B61D8890080440C /* SplashScreen */ = {
|
B4AB21052B61D8890080440C /* SplashScreen */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
B4AB21062B61D8CA0080440C /* SplashScreen.swift */,
|
|
||||||
B4AB21082B61DC3F0080440C /* SplashScreen.m */,
|
|
||||||
);
|
);
|
||||||
name = SplashScreen;
|
name = SplashScreen;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
|
@ -1502,9 +1496,7 @@
|
||||||
files = (
|
files = (
|
||||||
B44033E92BCC371A00162242 /* MarketData.swift in Sources */,
|
B44033E92BCC371A00162242 /* MarketData.swift in Sources */,
|
||||||
B44033CA2BCC350A00162242 /* Currency.swift in Sources */,
|
B44033CA2BCC350A00162242 /* Currency.swift in Sources */,
|
||||||
B4AB21092B61DC3F0080440C /* SplashScreen.m in Sources */,
|
|
||||||
B44033EE2BCC374500162242 /* Numeric+abbreviated.swift in Sources */,
|
B44033EE2BCC374500162242 /* Numeric+abbreviated.swift in Sources */,
|
||||||
B4AB21072B61D8CA0080440C /* SplashScreen.swift in Sources */,
|
|
||||||
B44033DD2BCC36C300162242 /* LatestTransaction.swift in Sources */,
|
B44033DD2BCC36C300162242 /* LatestTransaction.swift in Sources */,
|
||||||
6D32C5C62596CE3A008C077C /* EventEmitter.m in Sources */,
|
6D32C5C62596CE3A008C077C /* EventEmitter.m in Sources */,
|
||||||
B44033FE2BCC37D700162242 /* MarketAPI.swift in Sources */,
|
B44033FE2BCC37D700162242 /* MarketAPI.swift in Sources */,
|
||||||
|
|
|
@ -41,8 +41,6 @@ NSUserDefaults *group = [[NSUserDefaults alloc] initWithSuiteName:@"group.io.blu
|
||||||
[NSUserDefaults.standardUserDefaults setValue:@"" forKey:@"deviceUIDCopy"];
|
[NSUserDefaults.standardUserDefaults setValue:@"" forKey:@"deviceUIDCopy"];
|
||||||
}
|
}
|
||||||
|
|
||||||
[self addSplashScreenView];
|
|
||||||
|
|
||||||
self.moduleName = @"BlueWallet";
|
self.moduleName = @"BlueWallet";
|
||||||
// You can add your custom initial props in the dictionary below.
|
// You can add your custom initial props in the dictionary below.
|
||||||
// They will be passed down to the ViewController used by React Native.
|
// They will be passed down to the ViewController used by React Native.
|
||||||
|
@ -56,22 +54,6 @@ NSUserDefaults *group = [[NSUserDefaults alloc] initWithSuiteName:@"group.io.blu
|
||||||
return [super application:application didFinishLaunchingWithOptions:launchOptions];
|
return [super application:application didFinishLaunchingWithOptions:launchOptions];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)addSplashScreenView
|
|
||||||
{
|
|
||||||
// Get the rootView
|
|
||||||
RCTRootView *rootView = (RCTRootView *)self.window.rootViewController.view;
|
|
||||||
|
|
||||||
// Capture the launch screen view
|
|
||||||
UIStoryboard *launchScreenStoryboard = [UIStoryboard storyboardWithName:@"LaunchScreen" bundle:nil];
|
|
||||||
UIViewController *launchScreenVC = [launchScreenStoryboard instantiateInitialViewController];
|
|
||||||
UIView *launchScreenView = launchScreenVC.view;
|
|
||||||
launchScreenView.frame = self.window.bounds;
|
|
||||||
[self.window addSubview:launchScreenView];
|
|
||||||
|
|
||||||
// Keep a reference to the launch screen view to remove it later
|
|
||||||
rootView.loadingView = launchScreenView;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
|
- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
|
||||||
{
|
{
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
PODS:
|
PODS:
|
||||||
- boost (1.76.0)
|
- boost (1.76.0)
|
||||||
- BugsnagReactNative (7.22.7):
|
- BugsnagReactNative (7.23.0):
|
||||||
- React-Core
|
- React-Core
|
||||||
- BVLinearGradient (2.8.3):
|
- BVLinearGradient (2.8.3):
|
||||||
- React-Core
|
- React-Core
|
||||||
|
@ -466,7 +466,7 @@ PODS:
|
||||||
- React-perflogger (= 0.72.14)
|
- React-perflogger (= 0.72.14)
|
||||||
- ReactNativeCameraKit (13.0.0):
|
- ReactNativeCameraKit (13.0.0):
|
||||||
- React-Core
|
- React-Core
|
||||||
- RealmJS (12.8.0):
|
- RealmJS (12.8.1):
|
||||||
- React
|
- React
|
||||||
- rn-ldk (0.8.4):
|
- rn-ldk (0.8.4):
|
||||||
- React-Core
|
- React-Core
|
||||||
|
@ -478,7 +478,7 @@ PODS:
|
||||||
- React-Core
|
- React-Core
|
||||||
- RNDefaultPreference (1.4.4):
|
- RNDefaultPreference (1.4.4):
|
||||||
- React-Core
|
- React-Core
|
||||||
- RNDeviceInfo (10.13.2):
|
- RNDeviceInfo (10.14.0):
|
||||||
- React-Core
|
- React-Core
|
||||||
- RNFS (2.20.0):
|
- RNFS (2.20.0):
|
||||||
- React-Core
|
- React-Core
|
||||||
|
@ -511,7 +511,7 @@ PODS:
|
||||||
- React-RCTImage
|
- React-RCTImage
|
||||||
- RNShare (10.2.0):
|
- RNShare (10.2.0):
|
||||||
- React-Core
|
- React-Core
|
||||||
- RNSVG (13.14.0):
|
- RNSVG (13.14.1):
|
||||||
- React-Core
|
- React-Core
|
||||||
- RNVectorIcons (10.1.0):
|
- RNVectorIcons (10.1.0):
|
||||||
- RCT-Folly (= 2021.07.22.00)
|
- RCT-Folly (= 2021.07.22.00)
|
||||||
|
@ -777,7 +777,7 @@ EXTERNAL SOURCES:
|
||||||
|
|
||||||
SPEC CHECKSUMS:
|
SPEC CHECKSUMS:
|
||||||
boost: 7dcd2de282d72e344012f7d6564d024930a6a440
|
boost: 7dcd2de282d72e344012f7d6564d024930a6a440
|
||||||
BugsnagReactNative: 7cc5c927f6a0b00a8e3cc7157dab4cc94a4bc575
|
BugsnagReactNative: 079e8ede687b76bd8b661acd55bc5c888af56dc7
|
||||||
BVLinearGradient: 880f91a7854faff2df62518f0281afb1c60d49a3
|
BVLinearGradient: 880f91a7854faff2df62518f0281afb1c60d49a3
|
||||||
CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99
|
CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99
|
||||||
DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54
|
DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54
|
||||||
|
@ -836,13 +836,13 @@ SPEC CHECKSUMS:
|
||||||
React-utils: 22a77b05da25ce49c744faa82e73856dcae1734e
|
React-utils: 22a77b05da25ce49c744faa82e73856dcae1734e
|
||||||
ReactCommon: ff94462e007c568d8cdebc32e3c97af86ec93bb5
|
ReactCommon: ff94462e007c568d8cdebc32e3c97af86ec93bb5
|
||||||
ReactNativeCameraKit: 9d46a5d7dd544ca64aa9c03c150d2348faf437eb
|
ReactNativeCameraKit: 9d46a5d7dd544ca64aa9c03c150d2348faf437eb
|
||||||
RealmJS: 3e6010ae878227830e947f40f996e13ccab4c8ba
|
RealmJS: 2c7fdb3991d7655fba5f88eb288f75eaf5cb9980
|
||||||
rn-ldk: 0d8749d98cc5ce67302a32831818c116b67f7643
|
rn-ldk: 0d8749d98cc5ce67302a32831818c116b67f7643
|
||||||
RNCAsyncStorage: 826b603ae9c0f88b5ac4e956801f755109fa4d5c
|
RNCAsyncStorage: 826b603ae9c0f88b5ac4e956801f755109fa4d5c
|
||||||
RNCClipboard: 0a720adef5ec193aa0e3de24c3977222c7e52a37
|
RNCClipboard: 0a720adef5ec193aa0e3de24c3977222c7e52a37
|
||||||
RNCPushNotificationIOS: 64218f3c776c03d7408284a819b2abfda1834bc8
|
RNCPushNotificationIOS: 64218f3c776c03d7408284a819b2abfda1834bc8
|
||||||
RNDefaultPreference: 08bdb06cfa9188d5da97d4642dac745218d7fb31
|
RNDefaultPreference: 08bdb06cfa9188d5da97d4642dac745218d7fb31
|
||||||
RNDeviceInfo: 42aadf1282ffa0a88dc38a504a7be145eb010dfa
|
RNDeviceInfo: 59344c19152c4b2b32283005f9737c5c64b42fba
|
||||||
RNFS: 4ac0f0ea233904cb798630b3c077808c06931688
|
RNFS: 4ac0f0ea233904cb798630b3c077808c06931688
|
||||||
RNGestureHandler: 982741f345785f2927e7b28f67dc83679cf3bfc8
|
RNGestureHandler: 982741f345785f2927e7b28f67dc83679cf3bfc8
|
||||||
RNHandoff: d3b0754cca3a6bcd9b25f544f733f7f033ccf5fa
|
RNHandoff: d3b0754cca3a6bcd9b25f544f733f7f033ccf5fa
|
||||||
|
@ -856,7 +856,7 @@ SPEC CHECKSUMS:
|
||||||
RNReanimated: d4f25b2a931c4f0b2bb12173a3096f02ea4cfb05
|
RNReanimated: d4f25b2a931c4f0b2bb12173a3096f02ea4cfb05
|
||||||
RNScreens: b8d370282cdeae9df85dd5eab20c88eb5181243b
|
RNScreens: b8d370282cdeae9df85dd5eab20c88eb5181243b
|
||||||
RNShare: 554a91f5cfbe4adac4cfe3654826ee8b299fe365
|
RNShare: 554a91f5cfbe4adac4cfe3654826ee8b299fe365
|
||||||
RNSVG: d00c8f91c3cbf6d476451313a18f04d220d4f396
|
RNSVG: af3907ac5d4fa26a862b75a16d8f15bc74f2ceda
|
||||||
RNVectorIcons: 32462e7c7e58fe457474fc79c4d7de3f0ef08d70
|
RNVectorIcons: 32462e7c7e58fe457474fc79c4d7de3f0ef08d70
|
||||||
RNWatch: fd30ca40a5b5ef58dcbc195638e68219bc455236
|
RNWatch: fd30ca40a5b5ef58dcbc195638e68219bc455236
|
||||||
SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17
|
SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17
|
||||||
|
|
|
@ -1,14 +0,0 @@
|
||||||
//
|
|
||||||
// SplashScreen.m
|
|
||||||
// BlueWallet
|
|
||||||
//
|
|
||||||
// Created by Marcos Rodriguez on 1/24/24.
|
|
||||||
// Copyright © 2024 BlueWallet. All rights reserved.
|
|
||||||
//
|
|
||||||
|
|
||||||
#import <React/RCTBridgeModule.h>
|
|
||||||
|
|
||||||
@interface RCT_EXTERN_MODULE(SplashScreen, NSObject)
|
|
||||||
RCT_EXTERN_METHOD(addObserver)
|
|
||||||
RCT_EXTERN_METHOD(dismissSplashScreen)
|
|
||||||
@end
|
|
|
@ -1,39 +0,0 @@
|
||||||
//
|
|
||||||
// SplashScreen.swift
|
|
||||||
// BlueWallet
|
|
||||||
//
|
|
||||||
// Created by Marcos Rodriguez on 1/24/24.
|
|
||||||
// Copyright © 2024 BlueWallet. All rights reserved.
|
|
||||||
//
|
|
||||||
|
|
||||||
import Foundation
|
|
||||||
import React
|
|
||||||
|
|
||||||
@objc(SplashScreen)
|
|
||||||
class SplashScreen: NSObject, RCTBridgeModule {
|
|
||||||
static func moduleName() -> String! {
|
|
||||||
return "SplashScreen"
|
|
||||||
}
|
|
||||||
|
|
||||||
static func requiresMainQueueSetup() -> Bool {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
@objc
|
|
||||||
func addObserver() {
|
|
||||||
NotificationCenter.default.addObserver(self, selector: #selector(dismissSplashScreen), name: NSNotification.Name("HideSplashScreen"), object: nil)
|
|
||||||
}
|
|
||||||
|
|
||||||
@objc
|
|
||||||
func dismissSplashScreen() {
|
|
||||||
DispatchQueue.main.async {
|
|
||||||
if let rootView = UIApplication.shared.delegate?.window??.rootViewController?.view as? RCTRootView {
|
|
||||||
rootView.loadingView?.removeFromSuperview()
|
|
||||||
rootView.loadingView = nil
|
|
||||||
}
|
|
||||||
NotificationCenter.default.removeObserver(self, name: NSNotification.Name("HideSplashScreen"), object: nil)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,10 +0,0 @@
|
||||||
import React, { lazy, Suspense } from 'react';
|
|
||||||
import { LazyLoadingIndicator } from './LazyLoadingIndicator';
|
|
||||||
|
|
||||||
const ReorderWallets = lazy(() => import('../screen/wallets/reorderWallets'));
|
|
||||||
|
|
||||||
export const ReorderWalletsComponent = () => (
|
|
||||||
<Suspense fallback={<LazyLoadingIndicator />}>
|
|
||||||
<ReorderWallets />
|
|
||||||
</Suspense>
|
|
||||||
);
|
|
|
@ -1,9 +1,9 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { createNativeStackNavigator } from '@react-navigation/native-stack';
|
import { createNativeStackNavigator } from '@react-navigation/native-stack';
|
||||||
import { ReorderWalletsComponent } from './LazyLoadReorderWalletsStack';
|
|
||||||
import { useTheme } from '../components/themes';
|
import { useTheme } from '../components/themes';
|
||||||
import navigationStyle from '../components/navigationStyle';
|
import navigationStyle from '../components/navigationStyle';
|
||||||
import loc from '../loc';
|
import loc from '../loc';
|
||||||
|
import ReorderWallets from '../screen/wallets/reorderWallets';
|
||||||
|
|
||||||
const Stack = createNativeStackNavigator();
|
const Stack = createNativeStackNavigator();
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ const ReorderWalletsStackRoot = () => {
|
||||||
<Stack.Navigator screenOptions={{ headerShadowVisible: false }}>
|
<Stack.Navigator screenOptions={{ headerShadowVisible: false }}>
|
||||||
<Stack.Screen
|
<Stack.Screen
|
||||||
name="ReorderWalletsScreen"
|
name="ReorderWalletsScreen"
|
||||||
component={ReorderWalletsComponent}
|
component={ReorderWallets}
|
||||||
options={navigationStyle({
|
options={navigationStyle({
|
||||||
headerBackVisible: false,
|
headerBackVisible: false,
|
||||||
headerLargeTitle: true,
|
headerLargeTitle: true,
|
||||||
|
|
77
package-lock.json
generated
77
package-lock.json
generated
|
@ -11,7 +11,7 @@
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/preset-env": "^7.20.0",
|
"@babel/preset-env": "^7.20.0",
|
||||||
"@bugsnag/react-native": "7.22.7",
|
"@bugsnag/react-native": "7.23.0",
|
||||||
"@bugsnag/source-maps": "2.3.3",
|
"@bugsnag/source-maps": "2.3.3",
|
||||||
"@keystonehq/bc-ur-registry": "0.6.4",
|
"@keystonehq/bc-ur-registry": "0.6.4",
|
||||||
"@ngraveio/bc-ur": "1.1.12",
|
"@ngraveio/bc-ur": "1.1.12",
|
||||||
|
@ -63,7 +63,7 @@
|
||||||
"react-native-camera-kit": "13.0.0",
|
"react-native-camera-kit": "13.0.0",
|
||||||
"react-native-crypto": "2.2.0",
|
"react-native-crypto": "2.2.0",
|
||||||
"react-native-default-preference": "1.4.4",
|
"react-native-default-preference": "1.4.4",
|
||||||
"react-native-device-info": "10.13.2",
|
"react-native-device-info": "10.14.0",
|
||||||
"react-native-document-picker": "https://github.com/BlueWallet/react-native-document-picker#6033c4e1b0dd0a6760b5f5a5a2c3b2e5d07f2ae4",
|
"react-native-document-picker": "https://github.com/BlueWallet/react-native-document-picker#6033c4e1b0dd0a6760b5f5a5a2c3b2e5d07f2ae4",
|
||||||
"react-native-draggable-flatlist": "github:BlueWallet/react-native-draggable-flatlist#ebfddc4",
|
"react-native-draggable-flatlist": "github:BlueWallet/react-native-draggable-flatlist#ebfddc4",
|
||||||
"react-native-elements": "3.4.3",
|
"react-native-elements": "3.4.3",
|
||||||
|
@ -93,13 +93,13 @@
|
||||||
"react-native-screens": "3.31.1",
|
"react-native-screens": "3.31.1",
|
||||||
"react-native-secure-key-store": "https://github.com/BlueWallet/react-native-secure-key-store#2076b48",
|
"react-native-secure-key-store": "https://github.com/BlueWallet/react-native-secure-key-store#2076b48",
|
||||||
"react-native-share": "10.2.0",
|
"react-native-share": "10.2.0",
|
||||||
"react-native-svg": "13.14.0",
|
"react-native-svg": "13.14.1",
|
||||||
"react-native-tcp-socket": "6.0.6",
|
"react-native-tcp-socket": "6.0.6",
|
||||||
"react-native-vector-icons": "10.1.0",
|
"react-native-vector-icons": "10.1.0",
|
||||||
"react-native-watch-connectivity": "1.1.0",
|
"react-native-watch-connectivity": "1.1.0",
|
||||||
"react-native-widget-center": "https://github.com/BlueWallet/react-native-widget-center#a128c38",
|
"react-native-widget-center": "https://github.com/BlueWallet/react-native-widget-center#a128c38",
|
||||||
"readable-stream": "3.6.2",
|
"readable-stream": "3.6.2",
|
||||||
"realm": "12.8.0",
|
"realm": "12.8.1",
|
||||||
"rn-ldk": "github:BlueWallet/rn-ldk#v0.8.4",
|
"rn-ldk": "github:BlueWallet/rn-ldk#v0.8.4",
|
||||||
"rn-nodeify": "10.3.0",
|
"rn-nodeify": "10.3.0",
|
||||||
"scryptsy": "2.1.0",
|
"scryptsy": "2.1.0",
|
||||||
|
@ -2250,17 +2250,19 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@bugsnag/plugin-react-native-unhandled-rejection": {
|
"node_modules/@bugsnag/plugin-react-native-unhandled-rejection": {
|
||||||
"version": "7.22.7",
|
"version": "7.23.0",
|
||||||
"resolved": "https://registry.npmjs.org/@bugsnag/plugin-react-native-unhandled-rejection/-/plugin-react-native-unhandled-rejection-7.22.7.tgz",
|
"resolved": "https://registry.npmjs.org/@bugsnag/plugin-react-native-unhandled-rejection/-/plugin-react-native-unhandled-rejection-7.23.0.tgz",
|
||||||
"integrity": "sha512-xmFpUPYrQxwsr9RJ1HTu9lfNUbAHM+hIyUEshg+/Wfj/1Zvnkr0AnkqRWbQFqkOBklzYI4s7maJvm4S2go/KOQ==",
|
"integrity": "sha512-z0Nlqir3nnBcXVffw8uau12SS7vVUu0yS65SS5uWUn9cNIwNSTqZ/40pHVGh1VQBbpXlYrw7RVbPtufWmS20EA==",
|
||||||
|
"license": "MIT",
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@bugsnag/core": "^7.0.0"
|
"@bugsnag/core": "^7.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@bugsnag/react-native": {
|
"node_modules/@bugsnag/react-native": {
|
||||||
"version": "7.22.7",
|
"version": "7.23.0",
|
||||||
"resolved": "https://registry.npmjs.org/@bugsnag/react-native/-/react-native-7.22.7.tgz",
|
"resolved": "https://registry.npmjs.org/@bugsnag/react-native/-/react-native-7.23.0.tgz",
|
||||||
"integrity": "sha512-vHmynQj7rzPW+1v8aK41G9T5HSaXipgFkkCmczOiFG9YYNzVKeaPcbwcS6Z6+tLZ55ZQeJdupfezcmj4rnAZVw==",
|
"integrity": "sha512-4xw0BDUBYPYxxBM0rbRr+uI+8IA/22p2JdzW+DMzLjue9e5PY+dTGZgREllGLuE27NtMBvnaA0rlWSYfxE04cQ==",
|
||||||
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@bugsnag/core": "^7.22.7",
|
"@bugsnag/core": "^7.22.7",
|
||||||
"@bugsnag/delivery-react-native": "^7.22.7",
|
"@bugsnag/delivery-react-native": "^7.22.7",
|
||||||
|
@ -2272,7 +2274,7 @@
|
||||||
"@bugsnag/plugin-react-native-global-error-handler": "^7.22.7",
|
"@bugsnag/plugin-react-native-global-error-handler": "^7.22.7",
|
||||||
"@bugsnag/plugin-react-native-hermes": "^7.22.7",
|
"@bugsnag/plugin-react-native-hermes": "^7.22.7",
|
||||||
"@bugsnag/plugin-react-native-session": "^7.22.7",
|
"@bugsnag/plugin-react-native-session": "^7.22.7",
|
||||||
"@bugsnag/plugin-react-native-unhandled-rejection": "^7.22.7",
|
"@bugsnag/plugin-react-native-unhandled-rejection": "^7.23.0",
|
||||||
"iserror": "^0.0.2"
|
"iserror": "^0.0.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -19386,9 +19388,10 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/react-native-device-info": {
|
"node_modules/react-native-device-info": {
|
||||||
"version": "10.13.2",
|
"version": "10.14.0",
|
||||||
"resolved": "https://registry.npmjs.org/react-native-device-info/-/react-native-device-info-10.13.2.tgz",
|
"resolved": "https://registry.npmjs.org/react-native-device-info/-/react-native-device-info-10.14.0.tgz",
|
||||||
"integrity": "sha512-5EAls7uvGdZkVfp1KWHsR5BfJJHp/ux64+ZPj1865IcaUyrNQIWYFmrTHwTH8L/NGJUTBrzv+y6WODnN17LSbw==",
|
"integrity": "sha512-9NnTGfhEU4UgQtz4p6COk2Gbqly0dpSWrJtp+dw5rNAi96KtYbaNnO5yoOHDlJ1SVIzh8+hFu3WxVbnWkFU9gA==",
|
||||||
|
"license": "MIT",
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"react-native": "*"
|
"react-native": "*"
|
||||||
}
|
}
|
||||||
|
@ -19755,9 +19758,10 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/react-native-svg": {
|
"node_modules/react-native-svg": {
|
||||||
"version": "13.14.0",
|
"version": "13.14.1",
|
||||||
"resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-13.14.0.tgz",
|
"resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-13.14.1.tgz",
|
||||||
"integrity": "sha512-27ZnxUkHgWICimhuj6MuqBkISN53lVvgWJB7pIypjXysAyM+nqgQBPh4vXg+7MbqLBoYvR4PiBgKfwwGAqVxHg==",
|
"integrity": "sha512-0DSa0EOySzV0J9utmRFVE5Vr4mKRXA7GtH1Ga1B6fzR967HGFW1ytH6hmnOf36316hjYpXMMB7s4oVe1FqghlQ==",
|
||||||
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"css-select": "^5.1.0",
|
"css-select": "^5.1.0",
|
||||||
"css-tree": "^1.1.3"
|
"css-tree": "^1.1.3"
|
||||||
|
@ -20110,10 +20114,11 @@
|
||||||
"integrity": "sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg=="
|
"integrity": "sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg=="
|
||||||
},
|
},
|
||||||
"node_modules/realm": {
|
"node_modules/realm": {
|
||||||
"version": "12.8.0",
|
"version": "12.8.1",
|
||||||
"resolved": "https://registry.npmjs.org/realm/-/realm-12.8.0.tgz",
|
"resolved": "https://registry.npmjs.org/realm/-/realm-12.8.1.tgz",
|
||||||
"integrity": "sha512-U1w5+ncyURQFQTrshoGn3KV+pzR1rQlPT7s3Sw6HPIPVBH80EWU3mirwvqp6RQ+Qi32ctRrBMTNeGd5mzAyiSw==",
|
"integrity": "sha512-+zj2bvU0EACXvPBdvRsp2TybHPqPtftciTXsAlhrTWMiaoqC8FO6lriPbUs/JwsXz1w9otJXl5kXRBghPQHgLQ==",
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
|
"license": "apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@realm/fetch": "^0.1.1",
|
"@realm/fetch": "^0.1.1",
|
||||||
"bson": "^4.7.2",
|
"bson": "^4.7.2",
|
||||||
|
@ -24003,14 +24008,14 @@
|
||||||
"integrity": "sha512-p3C7m6GXh9ICnGt+m1FwWpBCiGNGdQvoTzzN0LAxT6YQdB3t2nmhqE3QIpHmXpJK1PveTCIOO2DbeSerWtUEsg=="
|
"integrity": "sha512-p3C7m6GXh9ICnGt+m1FwWpBCiGNGdQvoTzzN0LAxT6YQdB3t2nmhqE3QIpHmXpJK1PveTCIOO2DbeSerWtUEsg=="
|
||||||
},
|
},
|
||||||
"@bugsnag/plugin-react-native-unhandled-rejection": {
|
"@bugsnag/plugin-react-native-unhandled-rejection": {
|
||||||
"version": "7.22.7",
|
"version": "7.23.0",
|
||||||
"resolved": "https://registry.npmjs.org/@bugsnag/plugin-react-native-unhandled-rejection/-/plugin-react-native-unhandled-rejection-7.22.7.tgz",
|
"resolved": "https://registry.npmjs.org/@bugsnag/plugin-react-native-unhandled-rejection/-/plugin-react-native-unhandled-rejection-7.23.0.tgz",
|
||||||
"integrity": "sha512-xmFpUPYrQxwsr9RJ1HTu9lfNUbAHM+hIyUEshg+/Wfj/1Zvnkr0AnkqRWbQFqkOBklzYI4s7maJvm4S2go/KOQ=="
|
"integrity": "sha512-z0Nlqir3nnBcXVffw8uau12SS7vVUu0yS65SS5uWUn9cNIwNSTqZ/40pHVGh1VQBbpXlYrw7RVbPtufWmS20EA=="
|
||||||
},
|
},
|
||||||
"@bugsnag/react-native": {
|
"@bugsnag/react-native": {
|
||||||
"version": "7.22.7",
|
"version": "7.23.0",
|
||||||
"resolved": "https://registry.npmjs.org/@bugsnag/react-native/-/react-native-7.22.7.tgz",
|
"resolved": "https://registry.npmjs.org/@bugsnag/react-native/-/react-native-7.23.0.tgz",
|
||||||
"integrity": "sha512-vHmynQj7rzPW+1v8aK41G9T5HSaXipgFkkCmczOiFG9YYNzVKeaPcbwcS6Z6+tLZ55ZQeJdupfezcmj4rnAZVw==",
|
"integrity": "sha512-4xw0BDUBYPYxxBM0rbRr+uI+8IA/22p2JdzW+DMzLjue9e5PY+dTGZgREllGLuE27NtMBvnaA0rlWSYfxE04cQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@bugsnag/core": "^7.22.7",
|
"@bugsnag/core": "^7.22.7",
|
||||||
"@bugsnag/delivery-react-native": "^7.22.7",
|
"@bugsnag/delivery-react-native": "^7.22.7",
|
||||||
|
@ -24022,7 +24027,7 @@
|
||||||
"@bugsnag/plugin-react-native-global-error-handler": "^7.22.7",
|
"@bugsnag/plugin-react-native-global-error-handler": "^7.22.7",
|
||||||
"@bugsnag/plugin-react-native-hermes": "^7.22.7",
|
"@bugsnag/plugin-react-native-hermes": "^7.22.7",
|
||||||
"@bugsnag/plugin-react-native-session": "^7.22.7",
|
"@bugsnag/plugin-react-native-session": "^7.22.7",
|
||||||
"@bugsnag/plugin-react-native-unhandled-rejection": "^7.22.7",
|
"@bugsnag/plugin-react-native-unhandled-rejection": "^7.23.0",
|
||||||
"iserror": "^0.0.2"
|
"iserror": "^0.0.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -37100,9 +37105,9 @@
|
||||||
"integrity": "sha512-h0vtgiSKws3UmMRJykXAVM4ne1SgfoocUcoBD19ewRpQd6wqurE0HJRQGrSxcHK5LdKE7QPSIB1VX3YGIVS8Jg=="
|
"integrity": "sha512-h0vtgiSKws3UmMRJykXAVM4ne1SgfoocUcoBD19ewRpQd6wqurE0HJRQGrSxcHK5LdKE7QPSIB1VX3YGIVS8Jg=="
|
||||||
},
|
},
|
||||||
"react-native-device-info": {
|
"react-native-device-info": {
|
||||||
"version": "10.13.2",
|
"version": "10.14.0",
|
||||||
"resolved": "https://registry.npmjs.org/react-native-device-info/-/react-native-device-info-10.13.2.tgz",
|
"resolved": "https://registry.npmjs.org/react-native-device-info/-/react-native-device-info-10.14.0.tgz",
|
||||||
"integrity": "sha512-5EAls7uvGdZkVfp1KWHsR5BfJJHp/ux64+ZPj1865IcaUyrNQIWYFmrTHwTH8L/NGJUTBrzv+y6WODnN17LSbw=="
|
"integrity": "sha512-9NnTGfhEU4UgQtz4p6COk2Gbqly0dpSWrJtp+dw5rNAi96KtYbaNnO5yoOHDlJ1SVIzh8+hFu3WxVbnWkFU9gA=="
|
||||||
},
|
},
|
||||||
"react-native-document-picker": {
|
"react-native-document-picker": {
|
||||||
"version": "git+ssh://git@github.com/BlueWallet/react-native-document-picker.git#6033c4e1b0dd0a6760b5f5a5a2c3b2e5d07f2ae4",
|
"version": "git+ssh://git@github.com/BlueWallet/react-native-document-picker.git#6033c4e1b0dd0a6760b5f5a5a2c3b2e5d07f2ae4",
|
||||||
|
@ -37344,9 +37349,9 @@
|
||||||
"integrity": "sha512-mKOfBLIBFBcs9br1rlZDvxD5+mAl8Gfr5CounwJtxI6Z82rGrMO+Kgl9EIg3RMVf3G855a85YVqHJL2f5EDRlw=="
|
"integrity": "sha512-mKOfBLIBFBcs9br1rlZDvxD5+mAl8Gfr5CounwJtxI6Z82rGrMO+Kgl9EIg3RMVf3G855a85YVqHJL2f5EDRlw=="
|
||||||
},
|
},
|
||||||
"react-native-svg": {
|
"react-native-svg": {
|
||||||
"version": "13.14.0",
|
"version": "13.14.1",
|
||||||
"resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-13.14.0.tgz",
|
"resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-13.14.1.tgz",
|
||||||
"integrity": "sha512-27ZnxUkHgWICimhuj6MuqBkISN53lVvgWJB7pIypjXysAyM+nqgQBPh4vXg+7MbqLBoYvR4PiBgKfwwGAqVxHg==",
|
"integrity": "sha512-0DSa0EOySzV0J9utmRFVE5Vr4mKRXA7GtH1Ga1B6fzR967HGFW1ytH6hmnOf36316hjYpXMMB7s4oVe1FqghlQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"css-select": "^5.1.0",
|
"css-select": "^5.1.0",
|
||||||
"css-tree": "^1.1.3"
|
"css-tree": "^1.1.3"
|
||||||
|
@ -37517,9 +37522,9 @@
|
||||||
"integrity": "sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg=="
|
"integrity": "sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg=="
|
||||||
},
|
},
|
||||||
"realm": {
|
"realm": {
|
||||||
"version": "12.8.0",
|
"version": "12.8.1",
|
||||||
"resolved": "https://registry.npmjs.org/realm/-/realm-12.8.0.tgz",
|
"resolved": "https://registry.npmjs.org/realm/-/realm-12.8.1.tgz",
|
||||||
"integrity": "sha512-U1w5+ncyURQFQTrshoGn3KV+pzR1rQlPT7s3Sw6HPIPVBH80EWU3mirwvqp6RQ+Qi32ctRrBMTNeGd5mzAyiSw==",
|
"integrity": "sha512-+zj2bvU0EACXvPBdvRsp2TybHPqPtftciTXsAlhrTWMiaoqC8FO6lriPbUs/JwsXz1w9otJXl5kXRBghPQHgLQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@realm/fetch": "^0.1.1",
|
"@realm/fetch": "^0.1.1",
|
||||||
"bson": "^4.7.2",
|
"bson": "^4.7.2",
|
||||||
|
|
|
@ -148,7 +148,7 @@
|
||||||
"react-native-camera-kit": "13.0.0",
|
"react-native-camera-kit": "13.0.0",
|
||||||
"react-native-crypto": "2.2.0",
|
"react-native-crypto": "2.2.0",
|
||||||
"react-native-default-preference": "1.4.4",
|
"react-native-default-preference": "1.4.4",
|
||||||
"react-native-device-info": "10.13.2",
|
"react-native-device-info": "10.14.0",
|
||||||
"react-native-document-picker": "https://github.com/BlueWallet/react-native-document-picker#6033c4e1b0dd0a6760b5f5a5a2c3b2e5d07f2ae4",
|
"react-native-document-picker": "https://github.com/BlueWallet/react-native-document-picker#6033c4e1b0dd0a6760b5f5a5a2c3b2e5d07f2ae4",
|
||||||
"react-native-draggable-flatlist": "github:BlueWallet/react-native-draggable-flatlist#ebfddc4",
|
"react-native-draggable-flatlist": "github:BlueWallet/react-native-draggable-flatlist#ebfddc4",
|
||||||
"react-native-elements": "3.4.3",
|
"react-native-elements": "3.4.3",
|
||||||
|
@ -178,13 +178,13 @@
|
||||||
"react-native-screens": "3.31.1",
|
"react-native-screens": "3.31.1",
|
||||||
"react-native-secure-key-store": "https://github.com/BlueWallet/react-native-secure-key-store#2076b48",
|
"react-native-secure-key-store": "https://github.com/BlueWallet/react-native-secure-key-store#2076b48",
|
||||||
"react-native-share": "10.2.0",
|
"react-native-share": "10.2.0",
|
||||||
"react-native-svg": "13.14.0",
|
"react-native-svg": "13.14.1",
|
||||||
"react-native-tcp-socket": "6.0.6",
|
"react-native-tcp-socket": "6.0.6",
|
||||||
"react-native-vector-icons": "10.1.0",
|
"react-native-vector-icons": "10.1.0",
|
||||||
"react-native-watch-connectivity": "1.1.0",
|
"react-native-watch-connectivity": "1.1.0",
|
||||||
"react-native-widget-center": "https://github.com/BlueWallet/react-native-widget-center#a128c38",
|
"react-native-widget-center": "https://github.com/BlueWallet/react-native-widget-center#a128c38",
|
||||||
"readable-stream": "3.6.2",
|
"readable-stream": "3.6.2",
|
||||||
"realm": "12.8.0",
|
"realm": "12.8.1",
|
||||||
"rn-ldk": "github:BlueWallet/rn-ldk#v0.8.4",
|
"rn-ldk": "github:BlueWallet/rn-ldk#v0.8.4",
|
||||||
"rn-nodeify": "10.3.0",
|
"rn-nodeify": "10.3.0",
|
||||||
"scryptsy": "2.1.0",
|
"scryptsy": "2.1.0",
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import React, { useCallback, useContext, useEffect, useReducer, useRef } from 'react';
|
import React, { useCallback, useContext, useEffect, useReducer, useRef } from 'react';
|
||||||
import { View, Image, ActivityIndicator, NativeModules, StyleSheet } from 'react-native';
|
import { View, Image, ActivityIndicator, StyleSheet } from 'react-native';
|
||||||
import Biometric, { BiometricType } from '../class/biometrics';
|
import Biometric, { BiometricType } from '../class/biometrics';
|
||||||
import { BlueStorageContext } from '../blue_modules/storage-context';
|
import { BlueStorageContext } from '../blue_modules/storage-context';
|
||||||
import triggerHapticFeedback, { HapticFeedbackTypes } from '../blue_modules/hapticFeedback';
|
import triggerHapticFeedback, { HapticFeedbackTypes } from '../blue_modules/hapticFeedback';
|
||||||
|
@ -49,8 +49,6 @@ function reducer(state: State, action: Action): State {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const { SplashScreen } = NativeModules;
|
|
||||||
|
|
||||||
const UnlockWith: React.FC = () => {
|
const UnlockWith: React.FC = () => {
|
||||||
const [state, dispatch] = useReducer(reducer, initialState);
|
const [state, dispatch] = useReducer(reducer, initialState);
|
||||||
const isUnlockingWallets = useRef(false);
|
const isUnlockingWallets = useRef(false);
|
||||||
|
@ -91,8 +89,6 @@ const UnlockWith: React.FC = () => {
|
||||||
}, [state.isAuthenticating, startAndDecrypt, successfullyAuthenticated]);
|
}, [state.isAuthenticating, startAndDecrypt, successfullyAuthenticated]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
SplashScreen?.dismissSplashScreen();
|
|
||||||
|
|
||||||
const startUnlock = async () => {
|
const startUnlock = async () => {
|
||||||
const storageIsEncrypted = await isStorageEncrypted();
|
const storageIsEncrypted = await isStorageEncrypted();
|
||||||
const isBiometricUseCapableAndEnabled = await Biometric.isBiometricUseCapableAndEnabled();
|
const isBiometricUseCapableAndEnabled = await Biometric.isBiometricUseCapableAndEnabled();
|
||||||
|
|
|
@ -21,7 +21,7 @@ import triggerHapticFeedback, { HapticFeedbackTypes } from '../../blue_modules/h
|
||||||
import SafeArea from '../../components/SafeArea';
|
import SafeArea from '../../components/SafeArea';
|
||||||
import presentAlert from '../../components/Alert';
|
import presentAlert from '../../components/Alert';
|
||||||
import { scanQrHelper } from '../../helpers/scan-qr';
|
import { scanQrHelper } from '../../helpers/scan-qr';
|
||||||
import { isTablet } from 'react-native-device-info';
|
import { isTablet } from '../../blue_modules/environment';
|
||||||
|
|
||||||
const BROADCAST_RESULT = Object.freeze({
|
const BROADCAST_RESULT = Object.freeze({
|
||||||
none: 'Input transaction hex',
|
none: 'Input transaction hex',
|
||||||
|
@ -117,7 +117,7 @@ const Broadcast: React.FC = () => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<SafeArea>
|
<SafeArea>
|
||||||
<KeyboardAvoidingView enabled={!isTablet()} behavior={Platform.OS === 'ios' ? 'position' : undefined}>
|
<KeyboardAvoidingView enabled={!isTablet} behavior={Platform.OS === 'ios' ? 'position' : undefined}>
|
||||||
<View style={styles.wrapper} testID="BroadcastView">
|
<View style={styles.wrapper} testID="BroadcastView">
|
||||||
{BROADCAST_RESULT.success !== broadcastResult && (
|
{BROADCAST_RESULT.success !== broadcastResult && (
|
||||||
<BlueCard style={styles.mainCard}>
|
<BlueCard style={styles.mainCard}>
|
||||||
|
|
|
@ -59,6 +59,7 @@ jest.mock('react-native-device-info', () => {
|
||||||
getDeviceType: jest.fn().mockReturnValue(false),
|
getDeviceType: jest.fn().mockReturnValue(false),
|
||||||
hasGmsSync: jest.fn().mockReturnValue(true),
|
hasGmsSync: jest.fn().mockReturnValue(true),
|
||||||
hasHmsSync: jest.fn().mockReturnValue(false),
|
hasHmsSync: jest.fn().mockReturnValue(false),
|
||||||
|
isTablet: jest.fn().mockReturnValue(false),
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue