Skip to content

Commit aaa6cd2

Browse files
committed
Merge branch 'staging'
2 parents 03caaeb + 0f4bb77 commit aaa6cd2

40 files changed

Lines changed: 1055 additions & 959 deletions

CHANGELOG.md

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,14 @@
22

33
## Unreleased (develop)
44

5-
## 4.46.0 (staging)
5+
## 4.47.0 (staging)
6+
7+
- added: Include Zano sweep private key support for ZANO and tokens.
8+
- changed: Move `importKeyOptions` into `CreateWalletImportScene`
9+
- fixed: Swap KYC terms modal stacking on auto-refresh and accidental dismissal disabling providers
10+
- removed: Remove `CreateWalletImportOptionsScene`
11+
12+
## 4.46.0 (2026-03-20)
613

714
- added: Xgram swap exchange plugin support
815
- added: New Banxa payment methods
@@ -11,15 +18,15 @@
1118
- fixed: Disable "Migrate Wallets" button when no assets are available to migrate
1219
- fixed: Contacts permission prompt no longer appears on first receive and only shows from transaction-list or payee edit flows
1320

14-
## 4.45.0 (2025-03-10)
21+
## 4.45.0 (2026-03-10)
1522

1623
- fixed: Fixed Zano token minting transaction detection issues.
1724
- fixed: Fixed Zano resync data clearing bug.
1825
- fixed: Improved Nym Mixnet Network Privacy performance.
1926
- fixed: Promo card carousel touch interception opening wrong card's CTA link.
2027
- removed: Temporarily disabled Nym mixnet until feature is stable.
2128

22-
## 4.44.0 (2025-02-24)
29+
## 4.44.0 (2026-02-24)
2330

2431
- added: MAYAChain (CACAO) wallet support
2532
- added: Monad (MON) wallet support
@@ -45,7 +52,7 @@
4552
- fixed: Fix incorrect Moonpay buy tracking values caused by deeplink handler overwrite
4653
- fixed: Search bars automatically accepting autocorrect suggestions
4754

48-
## 4.43.2 (2025-02-15)
55+
## 4.43.2 (2026-02-15)
4956

5057
- fixed: (Zano) Reject wrapped ETH addresses in address validation.
5158

eslint.config.mjs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -239,9 +239,6 @@ export default [
239239
'src/components/scenes/CreateWalletAccountSelectScene.tsx',
240240
'src/components/scenes/CreateWalletAccountSetupScene.tsx',
241241

242-
'src/components/scenes/CreateWalletImportOptionsScene.tsx',
243-
'src/components/scenes/CreateWalletImportScene.tsx',
244-
245242
'src/components/scenes/CurrencyNotificationScene.tsx',
246243
'src/components/scenes/DefaultFiatSettingScene.tsx',
247244
'src/components/scenes/DuressModeHowToScene.tsx',
@@ -290,8 +287,6 @@ export default [
290287

291288
'src/components/scenes/SwapSettingsScene.tsx',
292289
'src/components/scenes/SwapSuccessScene.tsx',
293-
'src/components/scenes/SweepPrivateKeyCalculateFeeScene.tsx',
294-
'src/components/scenes/SweepPrivateKeyCompletionScene.tsx',
295290

296291
'src/components/scenes/TransactionDetailsScene.tsx',
297292

@@ -461,8 +456,7 @@ export default [
461456
'src/plugins/stake-plugins/thorchainSavers/tcSaversPlugin.tsx',
462457
'src/plugins/stake-plugins/thorchainSavers/tcSaversPluginSegwit.tsx',
463458
'src/plugins/stake-plugins/uniswapV2/Ecosystem.ts',
464-
'src/plugins/stake-plugins/uniswapV2/policies/cemeteryPolicy.ts',
465-
'src/plugins/stake-plugins/uniswapV2/policies/masonryPolicy.ts',
459+
466460
'src/plugins/stake-plugins/uniswapV2/policies/VelodromeV2StakePolicy.ts',
467461
'src/plugins/stake-plugins/util/accumulator.ts',
468462
'src/plugins/stake-plugins/util/biggystringplus.ts',

ios/Podfile.lock

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,15 @@ PODS:
1515
- disklet (0.5.2):
1616
- React
1717
- DoubleConversion (1.1.6)
18-
- edge-core-js (2.43.4):
18+
- edge-core-js (2.44.0):
1919
- React-Core
20-
- edge-currency-accountbased (4.77.0):
20+
- edge-currency-accountbased (4.78.1):
2121
- React-Core
2222
- edge-currency-plugins (3.9.0):
2323
- React-Core
24-
- edge-exchange-plugins (2.43.0):
24+
- edge-exchange-plugins (2.44.0):
2525
- React-Core
26-
- edge-login-ui-rn (3.35.3):
26+
- edge-login-ui-rn (3.35.4):
2727
- React-Core
2828
- EXConstants (17.1.7):
2929
- ExpoModulesCore
@@ -1663,7 +1663,7 @@ PODS:
16631663
- ReactCommon/turbomodule/bridging
16641664
- ReactCommon/turbomodule/core
16651665
- Yoga
1666-
- react-native-piratechain (0.5.22):
1666+
- react-native-piratechain (0.5.23):
16671667
- gRPC-Swift (~> 1.8)
16681668
- MnemonicSwift (~> 2.2)
16691669
- React-Core
@@ -1774,7 +1774,7 @@ PODS:
17741774
- react-native-zano (0.2.8):
17751775
- OpenSSL-Universal
17761776
- React-Core
1777-
- react-native-zcash (0.10.4):
1777+
- react-native-zcash (0.10.5):
17781778
- gRPC-Swift (~> 1.8)
17791779
- MnemonicSwift (~> 2.2)
17801780
- React-Core
@@ -3335,11 +3335,11 @@ SPEC CHECKSUMS:
33353335
CNIOWindows: 3047f2d8165848a3936a0a755fee27c6b5ee479b
33363336
disklet: 8a20bf8a568635b6e6bb8f93297dac13ee5cef98
33373337
DoubleConversion: cb417026b2400c8f53ae97020b2be961b59470cb
3338-
edge-core-js: 4a682c282f0e539e8ce24d5050fc9d8c19379c3d
3339-
edge-currency-accountbased: da708080381fe41112e120ec1ecd125bc757f773
3338+
edge-core-js: bf3986a6bb63077e0e25552d741633432eedb67d
3339+
edge-currency-accountbased: 9b582e3deefc58316eeeb3c4edc5a18f780a3bf4
33403340
edge-currency-plugins: fe38711931eb630b3d33c1624224446690c00d8b
3341-
edge-exchange-plugins: d0aa0bac5ede747ee276facbd616a29ba1d762e4
3342-
edge-login-ui-rn: 7e777d276fa6e6f73f5f1fb9c60abd272f85728d
3341+
edge-exchange-plugins: f22c999ffcef0e448480ae0ee8ff4cca267dc3ce
3342+
edge-login-ui-rn: 9ff3deacb0045ae32f4b5f7500ddd0e4e7101437
33433343
EXConstants: 98bcf0f22b820f9b28f9fee55ff2daededadd2f8
33443344
Expo: 43d9e0c3108cc3a1c2739743e9b51086144ee4b0
33453345
ExpoAsset: ef06e880126c375f580d4923fdd1cdf4ee6ee7d6
@@ -3410,13 +3410,13 @@ SPEC CHECKSUMS:
34103410
react-native-mymonero-core: 89717c706af7024c9100ccb6c3f22a587ccc8f09
34113411
react-native-netinfo: cec9c4e86083cb5b6aba0e0711f563e2fbbff187
34123412
react-native-performance: f0471c84eda0f6625bd42a1f515b1b216f284b12
3413-
react-native-piratechain: 7a589e5935cce38db012200c2d1e454502af7f10
3413+
react-native-piratechain: 43daeb4279a59c0231d604fb4ab6b0291d910c19
34143414
react-native-render-html: 5afc4751f1a98621b3009432ef84c47019dcb2bd
34153415
react-native-safari-view: 07dc856a2663fef31eaca6beb79b111b8f6cf1f2
34163416
react-native-safe-area-context: 83e0ac3d023997de1c2e035af907cc4dc05f718c
34173417
react-native-webview: 69c118d283fccfbc4fca0cd680e036ff3bf188fa
34183418
react-native-zano: 55542cc969fbe349608b3f877575b9f3ce62c303
3419-
react-native-zcash: 3d108b151ae84a2425d05353715025ddd0715d9d
3419+
react-native-zcash: 22c1c518f6c3a141e5a323bc078004dbfc97c883
34203420
React-NativeModulesApple: df8e5bc59e78ca3040ffbf41336889f3bd0fad68
34213421
React-oscompat: ef5df1c734f19b8003e149317d041b8ce1f7d29c
34223422
React-perflogger: 9a151e0b4c933c9205fd648c246506a83f31395d

ios/edge/Info.plist

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,5 +179,7 @@
179179
<array>
180180
<string>applinks:edge.app</string>
181181
</array>
182+
<key>UIDesignRequiresCompatibility</key>
183+
<true/>
182184
</dict>
183185
</plist>

package.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "edge-react-gui",
3-
"version": "4.46.0",
3+
"version": "4.47.0",
44
"private": true,
55
"description": "Edge Wallet React GUI",
66
"homepage": "https://edge.app",
@@ -106,13 +106,13 @@
106106
"deprecated-react-native-prop-types": "^5.0.0",
107107
"detect-bundler": "^1.1.0",
108108
"disklet": "^0.5.2",
109-
"edge-core-js": "^2.43.4",
110-
"edge-currency-accountbased": "^4.77.0",
109+
"edge-core-js": "^2.44.0",
110+
"edge-currency-accountbased": "^4.78.1",
111111
"edge-currency-monero": "^2.2.0",
112112
"edge-currency-plugins": "^3.9.0",
113-
"edge-exchange-plugins": "^2.43.0",
113+
"edge-exchange-plugins": "^2.44.0",
114114
"edge-info-server": "^3.10.0",
115-
"edge-login-ui-rn": "^3.35.3",
115+
"edge-login-ui-rn": "^3.35.4",
116116
"ethers": "^5.7.2",
117117
"expo": "^53.0.0",
118118
"jsrsasign": "^11.1.0",
@@ -154,7 +154,7 @@
154154
"react-native-patina": "^0.1.6",
155155
"react-native-performance": "^5.1.4",
156156
"react-native-permissions": "^4.1.5",
157-
"react-native-piratechain": "^0.5.22",
157+
"react-native-piratechain": "^0.5.23",
158158
"react-native-reanimated": "^4.1.3",
159159
"react-native-render-html": "^6.3.4",
160160
"react-native-reorderable-list": "^0.5.0",
@@ -172,7 +172,7 @@
172172
"react-native-wheel-picker-android": "^2.0.6",
173173
"react-native-worklets": "^0.6.1",
174174
"react-native-zano": "^0.2.8",
175-
"react-native-zcash": "^0.10.4",
175+
"react-native-zcash": "^0.10.5",
176176
"react-redux": "^8.1.1",
177177
"redux": "^4.2.1",
178178
"redux-thunk": "^2.3.0",

src/__tests__/scenes/__snapshots__/CreateWalletImportScene.test.tsx.snap

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,9 @@ exports[`CreateWalletImportScene should render with loading props 1`] = `
318318
}
319319
/>
320320
</View>
321-
<RCTScrollView>
321+
<RCTScrollView
322+
keyboardShouldPersistTaps="handled"
323+
>
322324
<View>
323325
<View
324326
style={
@@ -892,7 +894,7 @@ exports[`CreateWalletImportScene should render with loading props 1`] = `
892894
{
893895
"busy": undefined,
894896
"checked": undefined,
895-
"disabled": false,
897+
"disabled": true,
896898
"expanded": undefined,
897899
"selected": undefined,
898900
}
@@ -907,7 +909,7 @@ exports[`CreateWalletImportScene should render with loading props 1`] = `
907909
}
908910
accessible={true}
909911
collapsable={false}
910-
focusable={true}
912+
focusable={false}
911913
hitSlop={
912914
{
913915
"bottom": 11,
@@ -929,7 +931,7 @@ exports[`CreateWalletImportScene should render with loading props 1`] = `
929931
"borderRadius": 34,
930932
"height": 67,
931933
"justifyContent": "center",
932-
"opacity": 1,
934+
"opacity": 0.3,
933935
"overflow": "visible",
934936
"paddingHorizontal": 34,
935937
"paddingVertical": 0,

src/components/Main.tsx

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ import { CreateWalletAccountSelectScene as CreateWalletAccountSelectSceneCompone
6666
import { CreateWalletAccountSetupScene as CreateWalletAccountSetupSceneComponent } from './scenes/CreateWalletAccountSetupScene'
6767
import { CreateWalletCompletionScene as CreateWalletCompletionSceneComponent } from './scenes/CreateWalletCompletionScene'
6868
import { CreateWalletEditNameScene as CreateWalletSelectFiatSceneComponent } from './scenes/CreateWalletEditNameScene'
69-
import { CreateWalletImportOptionsScene as CreateWalletImportOptionsSceneComponent } from './scenes/CreateWalletImportOptionsScene'
7069
import { CreateWalletImportScene as CreateWalletImportSceneComponent } from './scenes/CreateWalletImportScene'
7170
import { CreateWalletSelectCryptoScene as CreateWalletSelectCryptoSceneComponent } from './scenes/CreateWalletSelectCryptoScene'
7271
import { CurrencyNotificationScene as CurrencyNotificationSceneComponent } from './scenes/CurrencyNotificationScene'
@@ -198,9 +197,6 @@ const CreateWalletAccountSetupScene = ifLoggedIn(
198197
const CreateWalletCompletionScene = ifLoggedIn(
199198
CreateWalletCompletionSceneComponent
200199
)
201-
const CreateWalletImportOptionsScene = ifLoggedIn(
202-
CreateWalletImportOptionsSceneComponent
203-
)
204200
const CreateWalletImportScene = ifLoggedIn(CreateWalletImportSceneComponent)
205201
const CreateWalletSelectCryptoScene = ifLoggedIn(
206202
CreateWalletSelectCryptoSceneComponent
@@ -764,13 +760,6 @@ const EdgeAppStack: React.FC = () => {
764760
headerRight: () => null
765761
}}
766762
/>
767-
<AppStack.Screen
768-
name="createWalletImportOptions"
769-
component={CreateWalletImportOptionsScene}
770-
options={{
771-
headerRight: () => null
772-
}}
773-
/>
774763
<AppStack.Screen
775764
name="createWalletSelectCrypto"
776765
component={CreateWalletSelectCryptoScene}

src/components/modals/SwapVerifyTermsModal.tsx

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -111,9 +111,6 @@ const SwapVerifyTermsModal: React.FC<Props> = props => {
111111
<ModalTitle>{displayName}</ModalTitle>
112112
</View>
113113
}
114-
onCancel={() => {
115-
bridge.resolve(false)
116-
}}
117114
>
118115
<Paragraph>{lstrings.swap_terms_statement}</Paragraph>
119116
<ModalButtons

src/components/scenes/CreateWalletCompletionScene.tsx

Lines changed: 35 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -252,23 +252,44 @@ const CreateWalletCompletionComponent: React.FC<Props> = props => {
252252
})
253253

254254
const handleMigrate = useHandler(() => {
255-
// Transform filtered items into the structure expected by the migration component
256-
const migrateWalletList: MigrateWalletItem[] = newWalletItems.map(
257-
createWallet => {
258-
const { key, pluginId } = createWallet
259-
const wallet = wallets.find(
260-
wallet => wallet.currencyInfo.pluginId === pluginId
261-
)
255+
// Build migrate items from successfully created parent wallets, then attach
256+
// selected tokens for the same plugin to that same wallet id.
257+
const successfulNewWalletItems = newWalletItems.filter(
258+
item => itemStatus[item.key] === 'complete'
259+
)
260+
const addedTokenKeys = new Set<string>()
261+
const migrateWalletList: MigrateWalletItem[] = []
262+
263+
for (const createWallet of successfulNewWalletItems) {
264+
const { key, pluginId, walletType } = createWallet
265+
const wallet = wallets.find(
266+
wallet => wallet.currencyInfo.pluginId === pluginId
267+
)
268+
const createWalletId = wallet?.id ?? ''
269+
const displayName = walletNames[key]
270+
271+
migrateWalletList.push({
272+
...createWallet,
273+
createWalletId,
274+
displayName,
275+
key,
276+
type: 'create'
277+
})
278+
279+
for (const tokenItem of newTokenItems) {
280+
if (tokenItem.pluginId !== pluginId) continue
281+
if (addedTokenKeys.has(tokenItem.key)) continue
282+
addedTokenKeys.add(tokenItem.key)
262283

263-
return {
264-
...createWallet,
265-
createWalletId: wallet == null ? '' : wallet.id,
266-
displayName: walletNames[key],
267-
key,
284+
migrateWalletList.push({
285+
...tokenItem,
286+
createWalletId,
287+
displayName,
288+
walletType,
268289
type: 'create'
269-
}
290+
})
270291
}
271-
)
292+
}
272293

273294
// Navigate to the migration screen with the prepared list
274295
if (migrateWalletList.length > 0) {

0 commit comments

Comments
 (0)