Skip to content

Commit be31319

Browse files
Feat/lw 11778 dapp collateral popup not open when no impure utxo (#1551)
* chore: bump cardano js sdk * feat: the wallet now creates a collateral UTxO if enough balance even when no pure UTxOs
1 parent 8286625 commit be31319

File tree

7 files changed

+132
-118
lines changed

7 files changed

+132
-118
lines changed

apps/browser-extension-wallet/package.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,15 +41,15 @@
4141
},
4242
"dependencies": {
4343
"@ant-design/icons": "^4.7.0",
44-
"@cardano-sdk/cardano-services-client": "0.22.1",
44+
"@cardano-sdk/cardano-services-client": "0.22.2",
4545
"@cardano-sdk/core": "0.41.3",
4646
"@cardano-sdk/dapp-connector": "0.12.43",
47-
"@cardano-sdk/input-selection": "0.13.26",
48-
"@cardano-sdk/tx-construction": "0.21.11",
47+
"@cardano-sdk/input-selection": "0.13.27",
48+
"@cardano-sdk/tx-construction": "0.21.12",
4949
"@cardano-sdk/util": "0.15.5",
50-
"@cardano-sdk/util-rxjs": "0.7.39",
51-
"@cardano-sdk/wallet": "0.44.19",
52-
"@cardano-sdk/web-extension": "0.34.18",
50+
"@cardano-sdk/util-rxjs": "0.7.40",
51+
"@cardano-sdk/wallet": "0.44.20",
52+
"@cardano-sdk/web-extension": "0.34.19",
5353
"@emurgo/cip14-js": "~3.0.1",
5454
"@input-output-hk/lace-ui-toolkit": "1.21.0",
5555
"@lace/cardano": "0.1.0",
@@ -99,7 +99,7 @@
9999
"zustand": "3.5.14"
100100
},
101101
"devDependencies": {
102-
"@cardano-sdk/hardware-ledger": "0.12.11",
102+
"@cardano-sdk/hardware-ledger": "0.12.12",
103103
"@emurgo/cardano-message-signing-asmjs": "1.0.1",
104104
"@openpgp/web-stream-tools": "0.0.11-patch-0",
105105
"@pdfme/common": "^4.0.2",

apps/browser-extension-wallet/src/features/dapp/components/collateral/CollateralContainer.tsx

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import { CreateCollateral } from './CreateCollateral';
1818
import { APIErrorCode, ApiError } from '@cardano-sdk/dapp-connector';
1919
import { useRedirection } from '@hooks';
2020
import { dAppRoutePaths } from '@routes';
21+
import { useObservable } from '@lace/common';
2122

2223
enum ReturnResponse {
2324
resolve = 'resolve',
@@ -87,6 +88,9 @@ export const DappCollateralContainer = (): React.ReactElement => {
8788
const redirectToCreateSuccess = useRedirection(dAppRoutePaths.dappTxSignSuccess);
8889
const redirectToCreateFailure = useRedirection(dAppRoutePaths.dappTxSignFailure);
8990

91+
const balance = useObservable(inMemoryWallet.balance.utxo.total$);
92+
const availableRewards = useObservable(inMemoryWallet.balance.rewardAccounts.rewards$);
93+
9094
const confirmCollateral = useCallback(
9195
async (utxos: Wallet.Cardano.Utxo[]) => {
9296
try {
@@ -101,6 +105,7 @@ export const DappCollateralContainer = (): React.ReactElement => {
101105
[inMemoryWallet, redirectToCreateFailure, redirectToCreateSuccess]
102106
);
103107

108+
/* eslint-disable-next-line sonarjs/cognitive-complexity */
104109
useEffect(() => {
105110
try {
106111
consumeRemoteApi<Pick<DappDataService, 'getCollateralRequest'>>(
@@ -114,8 +119,11 @@ export const DappCollateralContainer = (): React.ReactElement => {
114119
)
115120
.getCollateralRequest()
116121
.then(({ dappInfo: requestDappInfo, collateralRequest }) => {
122+
if (balance === undefined) return; // Balance not loaded yet.
123+
117124
// Set the summary information needed to display
118125
setDappInfo(requestDappInfo);
126+
const coinBalance = balance.coins + availableRewards;
119127
// Determine if collateral can be set without further fragmentation of wallet UTxOs
120128
let totalCoins = BigInt(0);
121129
const usableUtxos: Wallet.Cardano.Utxo[] = [];
@@ -135,18 +143,24 @@ export const DappCollateralContainer = (): React.ReactElement => {
135143
}
136144
}
137145
}
146+
138147
if (totalCoins < collateralRequest.amount) {
139-
// Not enough to ADA available to set collateral
140-
reject(new ApiError(APIErrorCode.Refused, 'wallet does not have enough ada to set collateral'), false);
141-
setInsufficientBalance(true);
148+
if (coinBalance > collateralRequest.amount) {
149+
setCollateralInfo(collateralRequest);
150+
} else {
151+
// Not enough ADA available to set collateral
152+
reject(new ApiError(APIErrorCode.Refused, 'wallet does not have enough ADA to set collateral'), false);
153+
setInsufficientBalance(true);
154+
}
142155
}
156+
143157
setIsCalculatingCollateral(false);
144158
});
145159
} catch (error) {
146160
console.error(error);
147161
redirectToCreateFailure();
148162
}
149-
}, [redirectToCreateFailure]);
163+
}, [redirectToCreateFailure, balance, availableRewards]);
150164

151165
if (isCalculatingCollateral || !inMemoryWallet) {
152166
return <MainLoader text={t('dapp.collateral.calculating')} />;

packages/cardano/package.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,16 +40,16 @@
4040
"watch": "yarn build --watch"
4141
},
4242
"dependencies": {
43-
"@cardano-sdk/cardano-services-client": "0.22.1",
43+
"@cardano-sdk/cardano-services-client": "0.22.2",
4444
"@cardano-sdk/core": "0.41.3",
4545
"@cardano-sdk/crypto": "0.1.31",
46-
"@cardano-sdk/hardware-ledger": "0.12.11",
47-
"@cardano-sdk/hardware-trezor": "0.6.10",
46+
"@cardano-sdk/hardware-ledger": "0.12.12",
47+
"@cardano-sdk/hardware-trezor": "0.6.11",
4848
"@cardano-sdk/key-management": "0.24.9",
49-
"@cardano-sdk/tx-construction": "0.21.11",
49+
"@cardano-sdk/tx-construction": "0.21.12",
5050
"@cardano-sdk/util": "0.15.5",
51-
"@cardano-sdk/wallet": "0.44.19",
52-
"@cardano-sdk/web-extension": "0.34.18",
51+
"@cardano-sdk/wallet": "0.44.20",
52+
"@cardano-sdk/web-extension": "0.34.19",
5353
"@lace/common": "0.1.0",
5454
"@ledgerhq/devices": "^8.2.1",
5555
"@stablelib/chacha20poly1305": "1.0.1",
@@ -73,7 +73,7 @@
7373
},
7474
"devDependencies": {
7575
"@blockfrost/blockfrost-js": "^5.5.0",
76-
"@cardano-sdk/util-dev": "0.23.11",
76+
"@cardano-sdk/util-dev": "0.23.12",
7777
"@emurgo/cardano-message-signing-browser": "1.0.1",
7878
"@types/webextension-polyfill": "0.10.0",
7979
"axios": "^1.7.4",

packages/core/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@
4343
},
4444
"dependencies": {
4545
"@ant-design/icons": "^4.7.0",
46-
"@cardano-sdk/wallet": "0.44.19",
47-
"@cardano-sdk/web-extension": "0.34.18",
46+
"@cardano-sdk/wallet": "0.44.20",
47+
"@cardano-sdk/web-extension": "0.34.19",
4848
"@input-output-hk/lace-ui-toolkit": "1.19.0",
4949
"@lace/cardano": "0.1.0",
5050
"@lace/common": "0.1.0",

packages/nami/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,9 @@
6060
"@cardano-foundation/ledgerjs-hw-app-cardano": "^6.0.0",
6161
"@cardano-sdk/core": "0.41.3",
6262
"@cardano-sdk/crypto": "0.1.31",
63-
"@cardano-sdk/tx-construction": "0.21.11",
63+
"@cardano-sdk/tx-construction": "0.21.12",
6464
"@cardano-sdk/util": "0.15.5",
65-
"@cardano-sdk/web-extension": "0.34.18",
65+
"@cardano-sdk/web-extension": "0.34.19",
6666
"@chakra-ui/css-reset": "1.0.0",
6767
"@chakra-ui/icons": "1.0.13",
6868
"@chakra-ui/react": "1.6.4",

packages/staking/package.json

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -77,11 +77,11 @@
7777
"devDependencies": {
7878
"@babel/core": "^7.21.0",
7979
"@cardano-sdk/core": "0.41.3",
80-
"@cardano-sdk/input-selection": "0.13.26",
81-
"@cardano-sdk/tx-construction": "0.21.11",
80+
"@cardano-sdk/input-selection": "0.13.27",
81+
"@cardano-sdk/tx-construction": "0.21.12",
8282
"@cardano-sdk/util": "0.15.5",
83-
"@cardano-sdk/wallet": "0.44.19",
84-
"@cardano-sdk/web-extension": "0.34.18",
83+
"@cardano-sdk/wallet": "0.44.20",
84+
"@cardano-sdk/web-extension": "0.34.19",
8585
"@storybook/addon-actions": "^7.6.7",
8686
"@storybook/addon-essentials": "^7.6.7",
8787
"@storybook/addon-interactions": "^7.6.7",
@@ -126,11 +126,11 @@
126126
"wait-on": "^7.0.1"
127127
},
128128
"peerDependencies": {
129-
"@cardano-sdk/input-selection": "0.13.26",
130-
"@cardano-sdk/tx-construction": "0.21.11",
129+
"@cardano-sdk/input-selection": "0.13.27",
130+
"@cardano-sdk/tx-construction": "0.21.12",
131131
"@cardano-sdk/util": "0.15.5",
132-
"@cardano-sdk/wallet": "0.44.19",
133-
"@cardano-sdk/web-extension": "0.34.18",
132+
"@cardano-sdk/wallet": "0.44.20",
133+
"@cardano-sdk/web-extension": "0.34.19",
134134
"@lace/cardano": "^0.1.0",
135135
"@lace/common": "^0.1.0",
136136
"@lace/core": "0.1.0",

0 commit comments

Comments
 (0)