diff --git a/android/.settings/org.eclipse.buildship.core.prefs b/android/.settings/org.eclipse.buildship.core.prefs
index 12ee26f01..9d2efc8e7 100644
--- a/android/.settings/org.eclipse.buildship.core.prefs
+++ b/android/.settings/org.eclipse.buildship.core.prefs
@@ -1,13 +1,2 @@
-arguments=--init-script /var/folders/wp/mctylz615p727_90j3yv0vnc0000gn/T/db3b08fc4a9ef609cb16b96b200fa13e563f396e9bb1ed0905fdab7bc3bc513b.gradle --init-script /var/folders/wp/mctylz615p727_90j3yv0vnc0000gn/T/52cde0cfcf3e28b8b7510e992210d9614505e0911af0c190bd590d7158574963.gradle
-auto.sync=false
-build.scans.enabled=false
-connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER)
connection.project.dir=
-eclipse.preferences.version=1
-gradle.user.home=
-java.home=/Library/Java/JavaVirtualMachines/temurin-21.jdk/Contents/Home
-jvm.arguments=
-offline.mode=false
-override.workspace.settings=true
-show.console.view=true
-show.executions.view=true
+eclipse.preferences.version=1
\ No newline at end of file
diff --git a/android/app/.classpath b/android/app/.classpath
index bbe97e501..eb19361b5 100644
--- a/android/app/.classpath
+++ b/android/app/.classpath
@@ -1,6 +1,6 @@
-
+
diff --git a/android/app/.settings/org.eclipse.jdt.core.prefs b/android/app/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 626e0e1d5..000000000
--- a/android/app/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,4 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=17
-org.eclipse.jdt.core.compiler.compliance=17
-org.eclipse.jdt.core.compiler.source=17
diff --git a/class/wallets/types.ts b/class/wallets/types.ts
index a27f80f53..932eddff6 100644
--- a/class/wallets/types.ts
+++ b/class/wallets/types.ts
@@ -117,16 +117,8 @@ export type Transaction = {
* if known, who is on the other end of the transaction (BIP47 payment code)
*/
counterparty?: string;
- memo: string;
};
-export interface Transaction {
- hash: string;
- memo: string;
- value: number;
- // ...other transaction fields...
-}
-
/**
* in some cases we add additional data to each tx object so the code that works with that transaction can find the
* wallet that owns it etc
@@ -154,10 +146,4 @@ export type TWallet =
| SegwitP2SHWallet
| WatchOnlyWallet;
-export interface TWallet {
- getID: () => string;
- getTransactions: () => Transaction[];
- // ...other wallet methods...
-}
-
export type THDWalletForWatchOnly = HDSegwitBech32Wallet | HDSegwitP2SHWallet | HDLegacyP2PKHWallet;
diff --git a/hooks/context/useStorage.ts b/hooks/context/useStorage.ts
index 6d9701ba8..4394e3d15 100644
--- a/hooks/context/useStorage.ts
+++ b/hooks/context/useStorage.ts
@@ -1,21 +1,4 @@
import { useContext } from 'react';
import { StorageContext } from '../../components/Context/StorageProvider';
-export const useStorage = () => {
- const context = useContext(StorageContext);
-
- const fetchAndSaveWalletTransactions = async (walletID: string) => {
- // ...existing implementation to fetch and save transactions...
- };
-
- const getTransactions = (walletID: string): Transaction[] => {
- const wallet = wallets.find(w => w.getID() === walletID);
- return wallet ? wallet.getTransactions() : [];
- };
-
- return {
- ...context,
- fetchAndSaveWalletTransactions,
- getTransactions,
- };
-};
+export const useStorage = () => useContext(StorageContext);
diff --git a/ios/Podfile.lock b/ios/Podfile.lock
index 000801c0a..608db44a2 100644
--- a/ios/Podfile.lock
+++ b/ios/Podfile.lock
@@ -13,7 +13,7 @@ PODS:
- hermes-engine/Pre-built (= 0.75.4)
- hermes-engine/Pre-built (0.75.4)
- lottie-ios (4.5.0)
- - lottie-react-native (7.2.1):
+ - lottie-react-native (7.1.0):
- DoubleConversion
- glog
- hermes-engine
@@ -1613,7 +1613,7 @@ PODS:
- React
- RNCAsyncStorage (2.1.0):
- React-Core
- - RNCClipboard (1.16.0):
+ - RNCClipboard (1.15.0):
- React-Core
- RNCPushNotificationIOS (1.11.0):
- React-Core
@@ -1623,7 +1623,7 @@ PODS:
- React-Core
- RNFS (2.20.0):
- React-Core
- - RNGestureHandler (2.22.0):
+ - RNGestureHandler (2.21.2):
- DoubleConversion
- glog
- hermes-engine
@@ -1667,7 +1667,7 @@ PODS:
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- Yoga
- - RNLocalize (3.4.1):
+ - RNLocalize (3.3.0):
- React-Core
- RNPermissions (5.2.2):
- React-Core
@@ -1829,7 +1829,7 @@ PODS:
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- Yoga
- - RNSVG (15.11.1):
+ - RNSVG (15.10.1):
- React-Core
- RNVectorIcons (10.2.0):
- DoubleConversion
@@ -2209,7 +2209,7 @@ SPEC CHECKSUMS:
glog: 69ef571f3de08433d766d614c73a9838a06bf7eb
hermes-engine: ea92f60f37dba025e293cbe4b4a548fd26b610a0
lottie-ios: a881093fab623c467d3bce374367755c272bdd59
- lottie-react-native: 816fb00189b309b3eee7c152ddfc8d37f56d1865
+ lottie-react-native: 015e84640c4b8dd47049a8c981996fd203001ddf
RCT-Folly: 34124ae2e667a0e5f0ea378db071d27548124321
RCTDeprecation: 726d24248aeab6d7180dac71a936bbca6a994ed1
RCTRequired: a94e7febda6db0345d207e854323c37e3a31d93b
@@ -2280,15 +2280,15 @@ SPEC CHECKSUMS:
ReactNativeCameraKit: e72b838dac4ea2da19b7eb5d00b23125072790fd
RealmJS: 9fd51c849eb552ade9f7b11db42a319b4f6cab4c
RNCAsyncStorage: c91d753ede6dc21862c4922cd13f98f7cfde578e
- RNCClipboard: d05e3f409b80d63c6507fd5753846e5992057799
+ RNCClipboard: dbcf25b8f666b4685c02eeb65be981d30198e505
RNCPushNotificationIOS: 6c4ca3388c7434e4a662b92e4dfeeee858e6f440
RNDefaultPreference: 8a089ee8ce829a66c5453e3c5434f0785499d1c3
RNDeviceInfo: ae26ae45db3f9937f038a284bcd0a1db8d70db96
RNFS: 89de7d7f4c0f6bafa05343c578f61118c8282ed8
- RNGestureHandler: 43970f04f34f186b4a5b2057cbf99c3039753c36
+ RNGestureHandler: 5b24d10761754ad271b714e536c457fd89b17c54
RNHandoff: bc8af5a86853ff13b033e7ba1114c3c5b38e6385
RNKeychain: 4df48b5186ca2b6a99f5ead69ad587154e084a32
- RNLocalize: 15463c4d79c7da45230064b4adcf5e9bb984667e
+ RNLocalize: d024afa9204c13885e61dc88b8190651bcaabac9
RNPermissions: 6f08c623b0c8ca7d95faa71c3956b159b34f25c3
RNQrGenerator: 7c604c0eb608af64ff586ab0c040796a04eff247
RNQuickAction: c2c8f379e614428be0babe4d53a575739667744d
@@ -2297,7 +2297,7 @@ SPEC CHECKSUMS:
RNReanimated: 000b758cfbcd9c20c15b7ef305f98f036b288feb
RNScreens: 35bb8e81aeccf111baa0ea01a54231390dbbcfd9
RNShare: 6204e6a1987ba3e7c47071ef703e5449a0e3548a
- RNSVG: 46769c92d1609e617dbf9326ad8a0cff912d0982
+ RNSVG: 3421710ac15f4f2dc47e5c122f2c2e4282116830
RNVectorIcons: 182892e7d1a2f27b52d3c627eca5d2665a22ee28
RNWatch: 28fe1f5e0c6410d45fd20925f4796fce05522e3f
SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d
diff --git a/package-lock.json b/package-lock.json
index 4499f03e8..71ef050c8 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -81,7 +81,6 @@
"react-native-permissions": "5.2.2",
"react-native-prompt-android": "github:BlueWallet/react-native-prompt-android#ed168d66fed556bc2ed07cf498770f058b78a376",
"react-native-push-notification": "8.1.1",
- "react-native-qrcode-scanner": "^1.5.5",
"react-native-qrcode-svg": "6.3.2",
"react-native-quick-actions": "0.3.13",
"react-native-randombytes": "3.6.1",
@@ -22149,46 +22148,6 @@
"react-native": ">=0.33"
}
},
- "node_modules/react-native-qrcode-scanner": {
- "version": "1.5.5",
- "resolved": "https://registry.npmjs.org/react-native-qrcode-scanner/-/react-native-qrcode-scanner-1.5.5.tgz",
- "integrity": "sha512-il79uStkFqUvofqXJQfOL30qgQyU17MUKxj7IGHv6oT2OxIY/vutTwuPPDbsivtv0yTMHP4dGx/79oys4eAuNw==",
- "license": "MIT",
- "dependencies": {
- "@react-native-async-storage/async-storage": "^1.13.4",
- "prop-types": "^15.5.10",
- "react-native-permissions": "^2.0.2"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/react-native-qrcode-scanner"
- },
- "peerDependencies": {
- "react-native-camera": ">=1.0.2"
- }
- },
- "node_modules/react-native-qrcode-scanner/node_modules/@react-native-async-storage/async-storage": {
- "version": "1.24.0",
- "resolved": "https://registry.npmjs.org/@react-native-async-storage/async-storage/-/async-storage-1.24.0.tgz",
- "integrity": "sha512-W4/vbwUOYOjco0x3toB8QCr7EjIP6nE9G7o8PMguvvjYT5Awg09lyV4enACRx4s++PPulBiBSjL0KTFx2u0Z/g==",
- "license": "MIT",
- "dependencies": {
- "merge-options": "^3.0.4"
- },
- "peerDependencies": {
- "react-native": "^0.0.0-0 || >=0.60 <1.0"
- }
- },
- "node_modules/react-native-qrcode-scanner/node_modules/react-native-permissions": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/react-native-permissions/-/react-native-permissions-2.2.2.tgz",
- "integrity": "sha512-ihf4shQDSX5Oo9ChQXb9kr13mmyyNem5MaEvOpr3dCjhBOBWyEMztXm9/uPK1Qg5PsNpaYLa1KpcPZDCw87LXg==",
- "license": "MIT",
- "peerDependencies": {
- "react": ">=16.8.6",
- "react-native": ">=0.60.0"
- }
- },
"node_modules/react-native-qrcode-svg": {
"version": "6.3.2",
"resolved": "https://registry.npmjs.org/react-native-qrcode-svg/-/react-native-qrcode-svg-6.3.2.tgz",
diff --git a/package.json b/package.json
index 634168db4..073fb218f 100644
--- a/package.json
+++ b/package.json
@@ -145,7 +145,6 @@
"react-native-permissions": "5.2.2",
"react-native-prompt-android": "github:BlueWallet/react-native-prompt-android#ed168d66fed556bc2ed07cf498770f058b78a376",
"react-native-push-notification": "8.1.1",
- "react-native-qrcode-scanner": "^1.5.5",
"react-native-qrcode-svg": "6.3.2",
"react-native-quick-actions": "0.3.13",
"react-native-randombytes": "3.6.1",
diff --git a/screen/send/ScanQRCode.js b/screen/send/ScanQRCode.js
index f4fe59bb2..ca773cb5a 100644
--- a/screen/send/ScanQRCode.js
+++ b/screen/send/ScanQRCode.js
@@ -2,7 +2,7 @@ import { useFocusEffect, useIsFocused, useNavigation, useRoute } from '@react-na
import * as bitcoin from 'bitcoinjs-lib';
import createHash from 'create-hash';
import React, { useCallback, useEffect, useState } from 'react';
-import { Platform, StyleSheet, TextInput, TouchableOpacity, View } from 'react-native';
+import { Alert, Platform, StyleSheet, TextInput, TouchableOpacity, View } from 'react-native';
import Base43 from '../../blue_modules/base43';
import * as fs from '../../blue_modules/fs';
import { BlueURDecoder, decodeUR, extractSingleWorkload } from '../../blue_modules/ur';
@@ -14,8 +14,6 @@ import { isCameraAuthorizationStatusGranted } from '../../helpers/scan-qr';
import loc from '../../loc';
import { useSettings } from '../../hooks/context/useSettings';
import CameraScreen from '../../components/CameraScreen';
-import SafeArea from '../../components/SafeArea';
-import presentAlert from '../../components/Alert';
let decoder = false;
@@ -122,13 +120,20 @@ const ScanQRCode = () => {
} catch (error) {
console.warn(error);
setIsLoading(true);
- presentAlert({
- title: loc.send.scan_error,
- message: loc._.invalid_animated_qr_code_fragment,
- onPress: () => {
- setIsLoading(false);
- },
- });
+ Alert.alert(
+ loc.send.scan_error,
+ loc._.invalid_animated_qr_code_fragment,
+ [
+ {
+ text: loc._.ok,
+ onPress: () => {
+ setIsLoading(false);
+ },
+ style: 'default',
+ },
+ ],
+ { cancelabe: false },
+ );
}
};
@@ -165,14 +170,20 @@ const ScanQRCode = () => {
} catch (error) {
console.warn(error);
setIsLoading(true);
-
- presentAlert({
- title: loc.send.scan_error,
- message: loc._.invalid_animated_qr_code_fragment,
- onPress: () => {
- setIsLoading(false);
- },
- });
+ Alert.alert(
+ loc.send.scan_error,
+ loc._.invalid_animated_qr_code_fragment,
+ [
+ {
+ text: loc._.ok,
+ onPress: () => {
+ setIsLoading(false);
+ },
+ style: 'default',
+ },
+ ],
+ { cancelabe: false },
+ );
}
};
@@ -261,45 +272,22 @@ const ScanQRCode = () => {
navigation.goBack();
};
- const handleReadCode = event => {
- onBarCodeRead({ data: event?.nativeEvent?.codeStringValue });
- };
-
- const handleBackdoorOkPress = () => {
- setBackdoorVisible(false);
- setBackdoorText('');
- if (backdoorText) onBarCodeRead({ data: backdoorText });
- };
-
- // this is an invisible backdoor button on bottom left screen corner
- // tapping it 10 times fires prompt dialog asking for a string thats gona be passed to onBarCodeRead.
- // this allows to mock and test QR scanning in e2e tests
- const handleInvisibleBackdoorPress = async () => {
- setBackdoorPressed(backdoorPressed + 1);
- if (backdoorPressed < 5) return;
- setBackdoorPressed(0);
- setBackdoorVisible(true);
- };
-
const render = isLoading ? (
) : (
-
+ <>
{!cameraStatusGranted ? (
{loc.send.permission_camera_message}
- {showFileImportButton && }
-
-
-
) : isFocused ? (
onBarCodeRead({ data: event?.nativeEvent?.codeStringValue })}
showFrame={false}
showFilePickerButton={showFileImportButton}
showImagePickerButton={true}
@@ -332,7 +320,16 @@ const ScanQRCode = () => {
value={backdoorText}
onChangeText={setBackdoorText}
/>
-
+
+ >
);
return {render};
diff --git a/screen/wallets/WalletTransactions.tsx b/screen/wallets/WalletTransactions.tsx
index 32dbb44fb..f76aaff8f 100644
--- a/screen/wallets/WalletTransactions.tsx
+++ b/screen/wallets/WalletTransactions.tsx
@@ -55,9 +55,7 @@ type WalletTransactionsProps = NativeStackScreenProps;
const WalletTransactions: React.FC = ({ route }) => {
- const { selectedWalletID, wallets, fetchAndSaveWalletTransactions } = useStorage();
- const [transactions, setTransactions] = useState([]);
- const { saveToDisk, setSelectedWalletID } = useStorage();
+ const { wallets, saveToDisk, setSelectedWalletID } = useStorage();
const { setReloadTransactionsMenuActionFunction } = useMenuElements();
const { isBiometricUseCapableAndEnabled } = useBiometrics();
const [isLoading, setIsLoading] = useState(false);