From ebcedb62c064d1a0ef4c5b411f6f42bbdf4b8d9f Mon Sep 17 00:00:00 2001 From: TaprootFreak <142087526+TaprootFreak@users.noreply.github.com> Date: Mon, 2 Mar 2026 12:00:47 +0100 Subject: [PATCH 1/2] fix: hide refund button for RealUnit wallet users (#973) RealUnit wallet users should contact support for refunds instead of using self-service. Hide the refund button in both the transaction detail view and the transaction list for RealUnit wallets. --- src/screens/transaction.screen.tsx | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/screens/transaction.screen.tsx b/src/screens/transaction.screen.tsx index d23cf255..83273632 100644 --- a/src/screens/transaction.screen.tsx +++ b/src/screens/transaction.screen.tsx @@ -210,6 +210,9 @@ function TransactionStatus({ setError }: TransactionStatusProps): JSX.Element { const { getTransactionByUid } = useTransaction(); const { isLoggedIn } = useSessionContext(); const { setRedirectPath } = useAppHandlingContext(); + const { user } = useUserContext(); + + const isRealUnit = user?.activeAddress?.wallet?.startsWith('RealUnit') ?? false; const [transaction, setTransaction] = useState(); @@ -261,7 +264,8 @@ function TransactionStatus({ setError }: TransactionStatusProps): JSX.Element { ![TransactionFailureReason.BANK_RELEASE_PENDING, TransactionFailureReason.INPUT_NOT_CONFIRMED].includes( transaction.reason, ) && - !transaction.chargebackAmount && ( + !transaction.chargebackAmount && + !isRealUnit && ( <> >({}); @@ -908,7 +915,8 @@ export function TransactionList({ isSupport, setError, onSelectTransaction }: Tr TransactionFailureReason.BANK_RELEASE_PENDING, TransactionFailureReason.INPUT_NOT_CONFIRMED, ].includes(tx.reason) || - !!tx.chargebackAmount + !!tx.chargebackAmount || + isRealUnit } /> Date: Mon, 2 Mar 2026 16:44:55 +0100 Subject: [PATCH 2/2] feat: add Internet Computer (ICP) CLI login support (#976) * feat: add Internet Computer (ICP) blockchain CLI login support Add CLI wallet infrastructure and blockchain mapping for ICP. Update @dfx.swiss/react and react-components to beta.240. * chore: update package-lock.json for beta.240 --- package-lock.json | 16 ++++++++-------- package.json | 4 ++-- src/components/home/connect-wrapper.tsx | 1 + src/components/home/install-hint.tsx | 1 + src/components/home/wallet/connect-cli.tsx | 2 ++ src/config/feature-tree.ts | 4 ++++ src/contexts/wallet.context.tsx | 3 +++ src/hooks/blockchain.hook.ts | 1 + 8 files changed, 22 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index bdee4823..a8ecfc9e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,8 +9,8 @@ "version": "1.0.4", "license": "MIT", "dependencies": { - "@dfx.swiss/react": "^1.3.0-beta.239", - "@dfx.swiss/react-components": "^1.3.0-beta.239", + "@dfx.swiss/react": "^1.3.0-beta.240", + "@dfx.swiss/react-components": "^1.3.0-beta.240", "@ledgerhq/hw-app-btc": "^6.24.1", "@ledgerhq/hw-app-eth": "^6.33.7", "@ledgerhq/hw-transport-webhid": "^6.27.19", @@ -2631,9 +2631,9 @@ } }, "node_modules/@dfx.swiss/react": { - "version": "1.3.0-beta.239", - "resolved": "https://registry.npmjs.org/@dfx.swiss/react/-/react-1.3.0-beta.239.tgz", - "integrity": "sha512-6JsyvCYiXbkHcr8Jl28m7LOS2F4RevAHIABLxhMS3q8qD+OLhMsTwVp4QCgdCxJHVFPpM/+sGfe5EycR91hrmg==", + "version": "1.3.0-beta.240", + "resolved": "https://registry.npmjs.org/@dfx.swiss/react/-/react-1.3.0-beta.240.tgz", + "integrity": "sha512-kS6daIyMDb8yu5XDY+ixVQDyxrAOBKVk+AchqUW4peLWSwRG8M9XkguZNsqXBWE/JE1oPhcl28iV8oxaINCM3w==", "license": "MIT", "dependencies": { "ibantools": "^4.2.1", @@ -2644,9 +2644,9 @@ } }, "node_modules/@dfx.swiss/react-components": { - "version": "1.3.0-beta.239", - "resolved": "https://registry.npmjs.org/@dfx.swiss/react-components/-/react-components-1.3.0-beta.239.tgz", - "integrity": "sha512-Ff7pc+pJlMtk5flhZrkhRkde9bmbC/quevUnzyIub9CWKe3858sNw7FZzT6y14DGtCrlDpixWRV24Whb7Vz+bA==", + "version": "1.3.0-beta.240", + "resolved": "https://registry.npmjs.org/@dfx.swiss/react-components/-/react-components-1.3.0-beta.240.tgz", + "integrity": "sha512-P8ACYD3vg0vU5SLoqPqyMnZgzcC1vhuLXJ6NTW83VHR91/Naf5IYusEcDmIHaXezWkEF7uXvYWltHVYtnWdeNw==", "license": "MIT", "dependencies": { "@floating-ui/react": "^0.18.1", diff --git a/package.json b/package.json index 81a3e826..5524dd19 100644 --- a/package.json +++ b/package.json @@ -12,8 +12,8 @@ "access": "public" }, "dependencies": { - "@dfx.swiss/react": "^1.3.0-beta.239", - "@dfx.swiss/react-components": "^1.3.0-beta.239", + "@dfx.swiss/react": "^1.3.0-beta.240", + "@dfx.swiss/react-components": "^1.3.0-beta.240", "@ledgerhq/hw-app-btc": "^6.24.1", "@ledgerhq/hw-app-eth": "^6.33.7", "@ledgerhq/hw-transport-webhid": "^6.27.19", diff --git a/src/components/home/connect-wrapper.tsx b/src/components/home/connect-wrapper.tsx index 0f099565..b85eed8c 100644 --- a/src/components/home/connect-wrapper.tsx +++ b/src/components/home/connect-wrapper.tsx @@ -44,6 +44,7 @@ export function ConnectWrapper(props: ConnectProps): JSX.Element { case WalletType.CLI_FIRO: case WalletType.CLI_XMR: case WalletType.CLI_ZANO: + case WalletType.CLI_ICP: case WalletType.CLI_ETH: case WalletType.CLI_ADA: case WalletType.CLI_AR: diff --git a/src/components/home/install-hint.tsx b/src/components/home/install-hint.tsx index dd0b7885..d13367d9 100644 --- a/src/components/home/install-hint.tsx +++ b/src/components/home/install-hint.tsx @@ -37,6 +37,7 @@ export function InstallHint({ type, onConfirm }: { type: WalletType; onConfirm: case WalletType.CLI_FIRO: case WalletType.CLI_XMR: case WalletType.CLI_ZANO: + case WalletType.CLI_ICP: case WalletType.CLI_ETH: case WalletType.CLI_ADA: case WalletType.CLI_AR: diff --git a/src/components/home/wallet/connect-cli.tsx b/src/components/home/wallet/connect-cli.tsx index fb6e3dc8..63f7a239 100644 --- a/src/components/home/wallet/connect-cli.tsx +++ b/src/components/home/wallet/connect-cli.tsx @@ -35,6 +35,7 @@ const Wallets = [ WalletType.CLI_FIRO, WalletType.CLI_XMR, WalletType.CLI_ZANO, + WalletType.CLI_ICP, WalletType.CLI_ADA, WalletType.CLI_AR, WalletType.CLI_SOL, @@ -100,6 +101,7 @@ function Content({ wallet, isConnecting, connect, error, form, onSwitch, rootRef [WalletType.CLI_FIRO]: /^a[a-zA-HJ-NP-Z0-9]{33}$/, [WalletType.CLI_XMR]: /^[48][0-9AB][1-9A-HJ-NP-Za-km-z]{93}$/, [WalletType.CLI_ZANO]: /^(Z[a-zA-Z0-9]{96}|iZ[a-zA-Z0-9]{106})$/, + [WalletType.CLI_ICP]: /^[a-z0-9]{5}(-[a-z0-9]{5}){1,10}(-[a-z0-9]{3})?$/, [WalletType.CLI_ETH]: /^0x\w{40}$/, [WalletType.CLI_ADA]: /^(stake[a-z0-9]+|addr1[a-z0-9]+)$/, [WalletType.CLI_AR]: /^[\w-]{43}$/, diff --git a/src/config/feature-tree.ts b/src/config/feature-tree.ts index c50f7da2..6931399d 100644 --- a/src/config/feature-tree.ts +++ b/src/config/feature-tree.ts @@ -1493,6 +1493,8 @@ export const FeatureTree: Page[] = [ return { type: WalletType.CLI_XMR }; case Blockchain.ZANO: return { type: WalletType.CLI_ZANO }; + case Blockchain.INTERNET_COMPUTER: + return { type: WalletType.CLI_ICP }; case Blockchain.SOLANA: return { type: WalletType.CLI_SOL }; case Blockchain.TRON: @@ -1633,6 +1635,8 @@ export const FeatureTree: Page[] = [ return { type: WalletType.CLI_XMR }; case Blockchain.ZANO: return { type: WalletType.CLI_ZANO }; + case Blockchain.INTERNET_COMPUTER: + return { type: WalletType.CLI_ICP }; case Blockchain.SOLANA: return { type: WalletType.CLI_SOL }; case Blockchain.TRON: diff --git a/src/contexts/wallet.context.tsx b/src/contexts/wallet.context.tsx index 407911ac..ab2fc350 100644 --- a/src/contexts/wallet.context.tsx +++ b/src/contexts/wallet.context.tsx @@ -21,6 +21,7 @@ export enum WalletType { CLI_FIRO = 'CliFiro', CLI_XMR = 'CliXmr', CLI_ZANO = 'CliZano', + CLI_ICP = 'CliIcp', CLI_ETH = 'CliEth', CLI_ADA = 'CliAda', CLI_AR = 'CliAr', @@ -66,6 +67,7 @@ export const WalletBlockchains: { [w in WalletType]?: Blockchain[] } = { [WalletType.CLI_LN]: [Blockchain.LIGHTNING], [WalletType.CLI_XMR]: [Blockchain.MONERO], [WalletType.CLI_ZANO]: [Blockchain.ZANO], + [WalletType.CLI_ICP]: [Blockchain.INTERNET_COMPUTER], [WalletType.CLI_ETH]: [ Blockchain.ETHEREUM, Blockchain.ARBITRUM, @@ -125,6 +127,7 @@ const WalletTypeMap: { [k in WalletType]: AuthWalletType | undefined } = { [WalletType.CLI_LN]: AuthWalletType.CLI, [WalletType.CLI_XMR]: AuthWalletType.CLI, [WalletType.CLI_ZANO]: AuthWalletType.CLI, + [WalletType.CLI_ICP]: AuthWalletType.CLI, [WalletType.CLI_ETH]: AuthWalletType.CLI, [WalletType.CLI_ADA]: AuthWalletType.CLI, [WalletType.CLI_AR]: AuthWalletType.CLI, diff --git a/src/hooks/blockchain.hook.ts b/src/hooks/blockchain.hook.ts index 3e4677bf..8bb4f220 100644 --- a/src/hooks/blockchain.hook.ts +++ b/src/hooks/blockchain.hook.ts @@ -79,6 +79,7 @@ export function useBlockchain(): BlockchainInterface { [Blockchain.FIRO]: 'Firo', [Blockchain.MONERO]: 'Monero', [Blockchain.ZANO]: 'Zano', + [Blockchain.INTERNET_COMPUTER]: 'Internet Computer', [Blockchain.SOLANA]: 'Solana', [Blockchain.TRON]: 'Tron', [Blockchain.SPARK]: 'Spark',