From 2498c6c31c1293c6143bbf3e2c60e22a36ddec04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20W=C5=82odek?= Date: Fri, 14 Feb 2025 13:21:51 +0100 Subject: [PATCH] feat(extension): remove auto-collateral management logic [LW-12322] (#1712) --- apps/browser-extension-wallet/package.json | 6 +- .../collateral/CollateralContainer.tsx | 191 ------------------ .../collateral/CreateCollateral.tsx | 189 ----------------- .../collateral/InsufficientFunds.tsx | 49 ----- .../components/collateral/SetCollateral.tsx | 60 ------ .../dapp/components/collateral/index.ts | 1 - .../components/collateral/styles.module.scss | 69 ------- .../dapp/components/collateral/types.ts | 26 --- .../src/features/dapp/components/index.ts | 1 - .../src/lib/scripts/background/cip30.ts | 41 +--- .../src/lib/scripts/types/dapp-service.ts | 5 - .../src/routes/DappConnectorView.tsx | 4 +- .../src/routes/wallet-paths.ts | 3 +- packages/cardano/package.json | 8 +- packages/core/package.json | 4 +- packages/nami/package.json | 2 +- packages/staking/package.json | 8 +- yarn.lock | 112 ++++------ 18 files changed, 62 insertions(+), 717 deletions(-) delete mode 100644 apps/browser-extension-wallet/src/features/dapp/components/collateral/CollateralContainer.tsx delete mode 100644 apps/browser-extension-wallet/src/features/dapp/components/collateral/CreateCollateral.tsx delete mode 100644 apps/browser-extension-wallet/src/features/dapp/components/collateral/InsufficientFunds.tsx delete mode 100644 apps/browser-extension-wallet/src/features/dapp/components/collateral/SetCollateral.tsx delete mode 100644 apps/browser-extension-wallet/src/features/dapp/components/collateral/index.ts delete mode 100644 apps/browser-extension-wallet/src/features/dapp/components/collateral/styles.module.scss delete mode 100644 apps/browser-extension-wallet/src/features/dapp/components/collateral/types.ts diff --git a/apps/browser-extension-wallet/package.json b/apps/browser-extension-wallet/package.json index 6bf894be68..d93f37473c 100644 --- a/apps/browser-extension-wallet/package.json +++ b/apps/browser-extension-wallet/package.json @@ -41,15 +41,15 @@ }, "dependencies": { "@ant-design/icons": "^4.7.0", - "@cardano-sdk/cardano-services-client": "0.26.3", + "@cardano-sdk/cardano-services-client": "0.26.4", "@cardano-sdk/core": "0.45.2", "@cardano-sdk/dapp-connector": "0.13.5", "@cardano-sdk/input-selection": "0.14.3", "@cardano-sdk/tx-construction": "0.26.2", "@cardano-sdk/util": "0.15.7", "@cardano-sdk/util-rxjs": "0.9.6", - "@cardano-sdk/wallet": "0.51.10", - "@cardano-sdk/web-extension": "0.38.14", + "@cardano-sdk/wallet": "0.51.12", + "@cardano-sdk/web-extension": "0.38.15", "@emurgo/cip14-js": "~3.0.1", "@input-output-hk/lace-ui-toolkit": "3.2.1", "@lace/cardano": "0.1.0", diff --git a/apps/browser-extension-wallet/src/features/dapp/components/collateral/CollateralContainer.tsx b/apps/browser-extension-wallet/src/features/dapp/components/collateral/CollateralContainer.tsx deleted file mode 100644 index 2be1e698f6..0000000000 --- a/apps/browser-extension-wallet/src/features/dapp/components/collateral/CollateralContainer.tsx +++ /dev/null @@ -1,191 +0,0 @@ -/* eslint-disable no-magic-numbers, promise/catch-or-return */ -import React, { useCallback, useState, useEffect } from 'react'; -import { useTranslation } from 'react-i18next'; -import { of } from 'rxjs'; -import { runtime } from 'webextension-polyfill'; -import { RemoteApiPropertyType, consumeRemoteApi, exposeApi } from '@cardano-sdk/web-extension'; - -import { Wallet } from '@lace/cardano'; -import { MainLoader } from '@src/components/MainLoader'; -import { InsufficientFunds } from './InsufficientFunds'; -import { DappDataService } from '@lib/scripts/types'; -import { DAPP_CHANNELS } from '@utils/constants'; -import type { UserPromptService } from '@lib/scripts/background/services'; -import { useWalletStore } from '@src/stores'; -import { DappSetCollateral } from './SetCollateral'; -import { CollateralAmount, CollateralAmountWithCollateralAmount } from './types'; -import { CreateCollateral } from './CreateCollateral'; -import { APIErrorCode, ApiError } from '@cardano-sdk/dapp-connector'; -import { useRedirection } from '@hooks'; -import { dAppRoutePaths } from '@routes'; -import { logger, useObservable } from '@lace/common'; - -enum ReturnResponse { - resolve = 'resolve', - reject = 'reject' -} - -interface RejectResponse { - response: ReturnResponse.reject; - reason: ApiError; -} - -interface ResolveResponse { - response: ReturnResponse.resolve; - utxos: Wallet.Cardano.Utxo[]; -} - -const collateralRequestResponse = (action: RejectResponse | ResolveResponse) => { - try { - exposeApi>( - { - api$: of({ - getCollateralRequest() { - if (action.response === ReturnResponse.reject) { - return Promise.reject(action.reason); - } - return Promise.resolve(action.utxos); - } - }), - baseChannel: DAPP_CHANNELS.userPrompt, - properties: { getCollateralRequest: RemoteApiPropertyType.MethodReturningPromise } - }, - { - logger, - runtime - } - ); - } catch (error) { - logger.error(error); - } -}; - -const isInstanceOfCollateralInfoWithCollateralAmount = ( - // eslint-disable-next-line @typescript-eslint/no-explicit-any - object: any -): object is CollateralAmountWithCollateralAmount => 'amount' in object; - -const reject = (reason: ApiError, close = true) => { - collateralRequestResponse({ - response: ReturnResponse.reject, - reason - }); - !!close && setTimeout(() => window.close(), 500); -}; - -window.addEventListener('beforeunload', () => - reject(new ApiError(APIErrorCode.Refused, 'user declined to set collateral')) -); - -export const DappCollateralContainer = (): React.ReactElement => { - const { t } = useTranslation(); - const { inMemoryWallet } = useWalletStore(); - const [isCalculatingCollateral, setIsCalculatingCollateral] = useState(true); - const [insufficientBalance, setInsufficientBalance] = useState(false); - const [dappInfo, setDappInfo] = useState(); - const [collateralInfo, setCollateralInfo] = useState(); - const [lockableUtxos, setLockableUtxos] = useState([]); - const redirectToCreateSuccess = useRedirection(dAppRoutePaths.dappTxSignSuccess); - const redirectToCreateFailure = useRedirection(dAppRoutePaths.dappTxSignFailure); - - const balance = useObservable(inMemoryWallet.balance.utxo.total$); - const availableRewards = useObservable(inMemoryWallet.balance.rewardAccounts.rewards$); - - const confirmCollateral = useCallback( - async (utxos: Wallet.Cardano.Utxo[]) => { - try { - await inMemoryWallet.utxo.setUnspendable(utxos); - collateralRequestResponse({ response: ReturnResponse.resolve, utxos }); - redirectToCreateSuccess(); - } catch (error) { - logger.error(error); - redirectToCreateFailure(); - } - }, - [inMemoryWallet, redirectToCreateFailure, redirectToCreateSuccess] - ); - - /* eslint-disable-next-line sonarjs/cognitive-complexity */ - useEffect(() => { - try { - consumeRemoteApi>( - { - baseChannel: DAPP_CHANNELS.dappData, - properties: { - getCollateralRequest: RemoteApiPropertyType.MethodReturningPromise - } - }, - { logger, runtime } - ) - .getCollateralRequest() - .then(({ dappInfo: requestDappInfo, collateralRequest }) => { - if (balance === undefined) return; // Balance not loaded yet. - - // Set the summary information needed to display - setDappInfo(requestDappInfo); - const coinBalance = balance.coins + availableRewards; - // Determine if collateral can be set without further fragmentation of wallet UTxOs - let totalCoins = BigInt(0); - const usableUtxos: Wallet.Cardano.Utxo[] = []; - for (const utxo of collateralRequest?.utxos) { - const { coins } = utxo[1].value; - totalCoins += coins; - usableUtxos.push(utxo); - if (totalCoins >= collateralRequest.amount) { - // If total is 100% higher than requested amount, require new tx to create collateral - if (totalCoins > collateralRequest.amount * BigInt(2)) { - setCollateralInfo(collateralRequest); - break; - } else { - setCollateralInfo({ amount: collateralRequest.amount, lockableAmount: totalCoins }); - setLockableUtxos(usableUtxos); - break; - } - } - } - - if (totalCoins < collateralRequest.amount) { - if (coinBalance > collateralRequest.amount) { - setCollateralInfo(collateralRequest); - } else { - // Not enough ADA available to set collateral - reject(new ApiError(APIErrorCode.Refused, 'wallet does not have enough ADA to set collateral'), false); - setInsufficientBalance(true); - } - } - - setIsCalculatingCollateral(false); - }); - } catch (error) { - logger.error(error); - redirectToCreateFailure(); - } - }, [redirectToCreateFailure, balance, availableRewards]); - - if (isCalculatingCollateral || !inMemoryWallet) { - return ; - } - - if (insufficientBalance) { - return ; - } else if (lockableUtxos.length > 0 && isInstanceOfCollateralInfoWithCollateralAmount(collateralInfo)) { - return ( - confirmCollateral(lockableUtxos)} - /> - ); - } - - // Allow user to create tx to set collateral - return ( - confirmCollateral(utxos)} - reject={reject} - /> - ); -}; diff --git a/apps/browser-extension-wallet/src/features/dapp/components/collateral/CreateCollateral.tsx b/apps/browser-extension-wallet/src/features/dapp/components/collateral/CreateCollateral.tsx deleted file mode 100644 index 7f88a09b1d..0000000000 --- a/apps/browser-extension-wallet/src/features/dapp/components/collateral/CreateCollateral.tsx +++ /dev/null @@ -1,189 +0,0 @@ -/* eslint-disable react/no-multi-comp */ -import React, { useCallback, useEffect, useMemo, useState } from 'react'; -import { v4 as uuidv4 } from 'uuid'; -import { DappCreateCollateralProps } from './types'; -import { - OnPasswordChange, - Password, - DappInfo, - RowContainer, - renderAmountInfo, - renderLabel, - useSecrets, - PasswordObj -} from '@lace/core'; -import { APIErrorCode, ApiError } from '@cardano-sdk/dapp-connector'; -import { Wallet } from '@lace/cardano'; -import { useTranslation } from 'react-i18next'; -import { useWalletStore } from '@src/stores'; -import { useFetchCoinPrice } from '@hooks'; -import { Layout } from '../Layout'; -import { Banner, Button, useAutoFocus, useObservable } from '@lace/common'; -import { firstValueFrom } from 'rxjs'; -import { map, take, filter } from 'rxjs/operators'; -import { isNotNil } from '@cardano-sdk/util'; -import { useCurrencyStore } from '@providers'; -import { cardanoCoin } from '@src/utils/constants'; -import { Spin, Typography } from 'antd'; -import styles from './styles.module.scss'; -import { withSignTxConfirmation } from '@lib/wallet-api-ui'; - -const { Text } = Typography; - -const inputId = `id-${uuidv4()}`; - -export const CreateCollateral = ({ - dappInfo, - collateralInfo, - confirm, - reject -}: DappCreateCollateralProps): React.ReactElement => { - const { t } = useTranslation(); - - const { inMemoryWallet, walletType, isInMemoryWallet } = useWalletStore(); - const addresses = useObservable(inMemoryWallet.addresses$); - const [isSubmitting, setIsSubmitting] = useState(false); - const { password, setPassword, clearSecrets } = useSecrets(); - const [isPasswordValid, setIsPasswordValid] = useState(true); - - const handleChange: OnPasswordChange = (target) => { - setIsPasswordValid(true); - setPassword(target); - }; - const { priceResult } = useFetchCoinPrice(); - const { fiatCurrency } = useCurrencyStore(); - const [collateralTx, setCollateralTx] = useState<{ fee: bigint; tx: Wallet.UnwitnessedTx }>(); - - useEffect(() => { - const getTx = async () => { - const output: Wallet.Cardano.TxOut = { - address: !!addresses && Wallet.Cardano.PaymentAddress(addresses[0].address), - value: { - coins: collateralInfo.amount - } - }; - - const builtTx = inMemoryWallet.createTxBuilder().addOutput(output).build(); - const inspectedTx = await builtTx.inspect(); - setCollateralTx({ fee: inspectedTx.body.fee, tx: builtTx }); - }; - - getTx(); - }, [collateralInfo.amount, inMemoryWallet, addresses]); - - const createCollateralTx = useCallback( - async (passphrase: Partial) => { - setIsSubmitting(true); - const submitTx = async () => { - const signedTx = await collateralTx.tx.sign(); - await inMemoryWallet.submitTx(signedTx); - const utxo = await firstValueFrom( - inMemoryWallet.utxo.available$.pipe( - map((utxos) => - utxos.find((o) => o[0].txId === signedTx.tx.id && o[1].value.coins === collateralInfo.amount) - ), - filter(isNotNil), - take(1) - ) - ); - await inMemoryWallet.utxo.setUnspendable([utxo]); - confirm([utxo]); - }; - - try { - await withSignTxConfirmation(submitTx, passphrase.value); - } catch (error) { - if (error instanceof Wallet.KeyManagement.errors.AuthenticationError) { - setIsPasswordValid(false); - } - } finally { - clearSecrets(); - } - setIsSubmitting(false); - }, - [collateralTx, collateralInfo.amount, inMemoryWallet, confirm, clearSecrets] - ); - - const confirmButtonLabel = useMemo(() => { - if (isInMemoryWallet) { - return t('browserView.settings.wallet.collateral.confirm'); - } - return t('browserView.settings.wallet.collateral.confirmWithDevice', { hardwareWallet: walletType }); - }, [isInMemoryWallet, walletType, t]); - - useAutoFocus(inputId, true); - - return ( - -
- -
- - {t('browserView.settings.wallet.collateral.amountDescription')} - - {isInMemoryWallet && ( -
- - - -
- )} - - {collateralTx?.fee && ( - - {renderLabel({ - label: t('staking.confirmation.transactionFee'), - dataTestId: 'sp-confirmation-staking-fee', - tooltipContent: t('send.theAmountYoullBeChargedToProcessYourTransaction') - })} -
- {renderAmountInfo( - Wallet.util.getFormattedAmount({ - amount: collateralTx.fee.toString(), - cardanoCoin - }), - `${Wallet.util.convertAdaToFiat({ - ada: Wallet.util.lovelacesToAdaString(collateralTx.fee.toString()), - fiat: priceResult?.cardano?.price || 0 - })} ${fiatCurrency?.code}` - )} -
-
- )} -
-
-
- - -
-
- ); -}; diff --git a/apps/browser-extension-wallet/src/features/dapp/components/collateral/InsufficientFunds.tsx b/apps/browser-extension-wallet/src/features/dapp/components/collateral/InsufficientFunds.tsx deleted file mode 100644 index f2a94e6535..0000000000 --- a/apps/browser-extension-wallet/src/features/dapp/components/collateral/InsufficientFunds.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import React, { useCallback } from 'react'; -import { Typography } from 'antd'; -import { useTranslation } from 'react-i18next'; - -import SadFaceIcon from '@lace/core/src/ui/assets/icons/sad-face.component.svg'; -import styles from './styles.module.scss'; -import { Button } from '@lace/common'; -import { useBackgroundServiceAPIContext } from '@providers'; -import { BrowserViewSections } from '@lib/scripts/types'; -import { Layout } from '../Layout'; -import connectStyles from '../Connect.module.scss'; - -const { Text } = Typography; - -export const InsufficientFunds = (): React.ReactElement => { - const { t } = useTranslation(); - const backgroundServices = useBackgroundServiceAPIContext(); - - const close = useCallback(() => { - window.close(); - }, []); - - const rejectAndOpenFunds = useCallback(() => { - backgroundServices?.handleOpenBrowser({ section: BrowserViewSections.HOME }).then(close); - }, [close, backgroundServices]); - - return ( - -
- - - {t('dapp.collateral.insufficientFunds.description')} - -
-
- - -
-
- ); -}; diff --git a/apps/browser-extension-wallet/src/features/dapp/components/collateral/SetCollateral.tsx b/apps/browser-extension-wallet/src/features/dapp/components/collateral/SetCollateral.tsx deleted file mode 100644 index 4012a3bd54..0000000000 --- a/apps/browser-extension-wallet/src/features/dapp/components/collateral/SetCollateral.tsx +++ /dev/null @@ -1,60 +0,0 @@ -import React from 'react'; -import { useTranslation } from 'react-i18next'; -import { APIErrorCode, ApiError } from '@cardano-sdk/dapp-connector'; -import { Banner, Button } from '@lace/common'; -import { DappInfo } from '@lace/core'; - -import { Layout } from '../Layout'; -import { DappSetCollateralProps } from './types'; -import { Wallet } from '@lace/cardano'; -import { useWalletStore } from '@src/stores'; -import styles from '../Connect.module.scss'; -import collateralStyles from './styles.module.scss'; - -export const DappSetCollateral = ({ - dappInfo, - collateralInfo, - confirm, - reject -}: DappSetCollateralProps): React.ReactElement => { - const { t } = useTranslation(); - const { - walletUI: { cardanoCoin } - } = useWalletStore(); - - return ( - -
- -
- {t('dapp.collateral.request', { - dapp: dappInfo.url, - requestedAmount: Wallet.util.lovelacesToAdaString(collateralInfo.amount.toString()), - lockableAmount: Wallet.util.lovelacesToAdaString(collateralInfo.lockableAmount.toString()), - symbol: cardanoCoin.symbol - })} -
-
- -
-
- - -
-
-
- ); -}; diff --git a/apps/browser-extension-wallet/src/features/dapp/components/collateral/index.ts b/apps/browser-extension-wallet/src/features/dapp/components/collateral/index.ts deleted file mode 100644 index 5284d94f13..0000000000 --- a/apps/browser-extension-wallet/src/features/dapp/components/collateral/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './CollateralContainer'; diff --git a/apps/browser-extension-wallet/src/features/dapp/components/collateral/styles.module.scss b/apps/browser-extension-wallet/src/features/dapp/components/collateral/styles.module.scss deleted file mode 100644 index 1fb1e726fc..0000000000 --- a/apps/browser-extension-wallet/src/features/dapp/components/collateral/styles.module.scss +++ /dev/null @@ -1,69 +0,0 @@ -@import '../../../../styles/rules/flex.scss'; -@import '../../../../../../../packages/common/src/ui/styles/theme.scss'; -@import '../../../../../../../packages/common/src/ui/styles/abstracts/typography'; - -.spaceBetween { - justify-content: space-between; - padding-top: size_unit(2); -} - -.container { - justify-content: space-between; - flex: 1; - display: flex; - flex-direction: column; - - .collateralSend { - display: flex; - flex-direction: column; - gap: size_unit(3); - padding: size_unit(2) 0; - } - - .collateralDescription { - @include text-body-medium; - color: var(--text-color-primary); - } - - .noTopMargin { - margin-top: 0; - } -} - -.footer { - background-color: var(--bg-color-body); - @extend %flex-column; - justify-content: center; - gap: size_unit(1); - padding: size_unit(2); - border-top: 2px solid var(--light-mode-light-grey-plus, var(--dark-mode-mid-grey)); - margin: 0 size_unit(-4); - position: sticky; - margin: 0 -24px; - padding: size_unit(2); - gap: size_unit(1); - bottom: 0; - .footerBtn { - width: 100%; - } -} - -.insufficientFunds { - flex: 1; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - padding: 0 size_unit(3); -} - -.sadFace { - width: size_unit(14); - height: size_unit(14); -} - -.sadFaceDescription { - @include text-body-medium; - color: var(--text-color-secondary) !important; - text-align: center; -} diff --git a/apps/browser-extension-wallet/src/features/dapp/components/collateral/types.ts b/apps/browser-extension-wallet/src/features/dapp/components/collateral/types.ts deleted file mode 100644 index 3f7b827c58..0000000000 --- a/apps/browser-extension-wallet/src/features/dapp/components/collateral/types.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { ApiError } from '@cardano-sdk/dapp-connector'; -import { Wallet } from '@lace/cardano'; -import { cip30 as walletCip30 } from '@cardano-sdk/wallet'; - -interface BaseCollateralProps { - dappInfo: Wallet.DappInfo; - collateralInfo: { amount: walletCip30.GetCollateralCallbackParams['data']['amount'] }; - reject: (reason: ApiError) => void; -} - -export interface DappSetCollateralProps extends BaseCollateralProps { - collateralInfo: BaseCollateralProps['collateralInfo'] & { lockableAmount: BigInt }; - confirm: () => void; -} - -export interface DappCreateCollateralProps extends BaseCollateralProps { - confirm: (utxos?: Wallet.Cardano.Utxo[]) => void; -} - -export interface CollateralAmount { - amount: walletCip30.GetCollateralCallbackParams['data']['amount']; -} - -export interface CollateralAmountWithCollateralAmount extends CollateralAmount { - lockableAmount: BigInt; -} diff --git a/apps/browser-extension-wallet/src/features/dapp/components/index.ts b/apps/browser-extension-wallet/src/features/dapp/components/index.ts index 3f9b0092a4..e2b848c509 100644 --- a/apps/browser-extension-wallet/src/features/dapp/components/index.ts +++ b/apps/browser-extension-wallet/src/features/dapp/components/index.ts @@ -4,4 +4,3 @@ export * from './DappTransactionSuccess'; export * from './DappTransactionFail'; export * from './ConfirmData'; export * from './SignDataFlowContainer'; -export * from './collateral'; diff --git a/apps/browser-extension-wallet/src/lib/scripts/background/cip30.ts b/apps/browser-extension-wallet/src/lib/scripts/background/cip30.ts index 0a4ba7ca2f..395b72624b 100644 --- a/apps/browser-extension-wallet/src/lib/scripts/background/cip30.ts +++ b/apps/browser-extension-wallet/src/lib/scripts/background/cip30.ts @@ -2,28 +2,20 @@ import { cip30 as walletCip30 } from '@cardano-sdk/wallet'; import { ensureUiIsOpenAndLoaded } from './util'; import { userPromptService } from './services/dappService'; import { authenticator } from './authenticator'; -import { wallet$, dAppConnectorActivity$ } from './wallet'; +import { dAppConnectorActivity$, wallet$ } from './wallet'; import { runtime, Tabs, tabs } from 'webextension-polyfill'; -import { exposeApi, RemoteApiPropertyType, cip30 } from '@cardano-sdk/web-extension'; +import { cip30, exposeApi, RemoteApiPropertyType } from '@cardano-sdk/web-extension'; import { DAPP_CHANNELS } from '../../../utils/constants'; import { DappDataService } from '../types'; -import { BehaviorSubject, map, Observable, of } from 'rxjs'; -import { APIErrorCode, ApiError } from '@cardano-sdk/dapp-connector'; -import { Wallet } from '@lace/cardano'; +import { map, Observable, of } from 'rxjs'; +import { ApiError, APIErrorCode } from '@cardano-sdk/dapp-connector'; import pDebounce from 'p-debounce'; import { dappInfo$ } from './requestAccess'; -import { senderToDappInfo } from '@src/utils/senderToDappInfo'; -import { getBackgroundStorage } from './storage'; import { notifyOnHaveAccessCall } from './session'; import { logger } from '@lace/common'; const DEBOUNCE_THROTTLE = 500; -const dappSetCollateral$ = new BehaviorSubject<{ - dappInfo: Wallet.DappInfo; - collateralRequest: walletCip30.GetCollateralCallbackParams['data']; -}>(undefined); - const cancelOnTabClose = (tab: Tabs.Tab) => ({ cancel$: new Observable((subscriber) => { const listener = (tabId: number) => { @@ -76,29 +68,6 @@ export const confirmationCallback: walletCip30.CallbackConfirmation = { }, DEBOUNCE_THROTTLE, { before: true } - ), - getCollateral: pDebounce( - async (args) => { - try { - const { namiMigration } = await getBackgroundStorage(); - if (namiMigration?.mode === 'nami') { - // User has to explicitly set collateral from the popup UI - return []; - } - - const dappInfo = await senderToDappInfo(args.sender); - dappSetCollateral$.next({ dappInfo, collateralRequest: args.data }); - await ensureUiIsOpenAndLoaded('#/dapp/set-collateral'); - - return userPromptService.getCollateralRequest(); - } catch (error) { - // eslint-disable-next-line unicorn/no-useless-undefined - dappSetCollateral$.next(undefined); - throw new Error(error); - } - }, - DEBOUNCE_THROTTLE, - { before: true } ) }; @@ -122,11 +91,9 @@ exposeApi( { baseChannel: DAPP_CHANNELS.dappData, properties: { - getCollateralRequest: RemoteApiPropertyType.MethodReturningPromise, getDappInfo: RemoteApiPropertyType.MethodReturningPromise }, api$: of({ - getCollateralRequest: () => Promise.resolve(dappSetCollateral$.value), getDappInfo: () => Promise.resolve(dappInfo$.value) }) }, diff --git a/apps/browser-extension-wallet/src/lib/scripts/types/dapp-service.ts b/apps/browser-extension-wallet/src/lib/scripts/types/dapp-service.ts index 899eb12ce5..8bb080c9b9 100644 --- a/apps/browser-extension-wallet/src/lib/scripts/types/dapp-service.ts +++ b/apps/browser-extension-wallet/src/lib/scripts/types/dapp-service.ts @@ -1,10 +1,5 @@ import { Wallet } from '@lace/cardano'; -import { cip30 as walletCip30 } from '@cardano-sdk/wallet'; export type DappDataService = { getDappInfo: () => Promise; - getCollateralRequest: () => Promise<{ - dappInfo: Wallet.DappInfo; - collateralRequest: walletCip30.GetCollateralCallbackParams['data']; - }>; }; diff --git a/apps/browser-extension-wallet/src/routes/DappConnectorView.tsx b/apps/browser-extension-wallet/src/routes/DappConnectorView.tsx index e9c3376f76..ef67b84f0d 100644 --- a/apps/browser-extension-wallet/src/routes/DappConnectorView.tsx +++ b/apps/browser-extension-wallet/src/routes/DappConnectorView.tsx @@ -11,8 +11,7 @@ import { SignTxFlowContainer, SignDataFlowContainer, DappTransactionSuccess, - DappTransactionFail, - DappCollateralContainer + DappTransactionFail } from '../features/dapp'; import { Loader } from '@lace/common'; import styles from './DappConnectorView.module.scss'; @@ -143,7 +142,6 @@ export const DappConnectorView = (): React.ReactElement => { - ); diff --git a/apps/browser-extension-wallet/src/routes/wallet-paths.ts b/apps/browser-extension-wallet/src/routes/wallet-paths.ts index 960c61f146..b957c0851d 100644 --- a/apps/browser-extension-wallet/src/routes/wallet-paths.ts +++ b/apps/browser-extension-wallet/src/routes/wallet-paths.ts @@ -54,6 +54,5 @@ export const dAppRoutePaths = { dappSignTx: '/dapp/sign-tx', dappSubmitTx: '/dapp/submit-tx', dappSignData: '/dapp/sign-data', - dappNoWallet: '/dapp/no-wallet', - dappSetCollateral: '/dapp/set-collateral' + dappNoWallet: '/dapp/no-wallet' }; diff --git a/packages/cardano/package.json b/packages/cardano/package.json index 44186dd5cc..9cc5343639 100644 --- a/packages/cardano/package.json +++ b/packages/cardano/package.json @@ -40,7 +40,7 @@ "watch": "yarn build --watch" }, "dependencies": { - "@cardano-sdk/cardano-services-client": "0.26.3", + "@cardano-sdk/cardano-services-client": "0.26.4", "@cardano-sdk/core": "0.45.2", "@cardano-sdk/crypto": "0.2.2", "@cardano-sdk/hardware-ledger": "0.15.3", @@ -48,8 +48,8 @@ "@cardano-sdk/key-management": "0.27.2", "@cardano-sdk/tx-construction": "0.26.2", "@cardano-sdk/util": "0.15.7", - "@cardano-sdk/wallet": "0.51.10", - "@cardano-sdk/web-extension": "0.38.14", + "@cardano-sdk/wallet": "0.51.12", + "@cardano-sdk/web-extension": "0.38.15", "@lace/common": "0.1.0", "@ledgerhq/devices": "^8.4.4", "@stablelib/chacha20poly1305": "1.0.1", @@ -73,7 +73,7 @@ }, "devDependencies": { "@blockfrost/blockfrost-js": "^5.5.0", - "@cardano-sdk/util-dev": "0.25.5", + "@cardano-sdk/util-dev": "0.25.6", "@emurgo/cardano-message-signing-browser": "1.0.1", "@types/webextension-polyfill": "0.10.0", "axios": "^1.7.4", diff --git a/packages/core/package.json b/packages/core/package.json index 074e73dcd3..86d133de64 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -43,8 +43,8 @@ }, "dependencies": { "@ant-design/icons": "^4.7.0", - "@cardano-sdk/wallet": "0.51.10", - "@cardano-sdk/web-extension": "0.38.14", + "@cardano-sdk/wallet": "0.51.12", + "@cardano-sdk/web-extension": "0.38.15", "@input-output-hk/lace-ui-toolkit": "1.19.0", "@lace/cardano": "0.1.0", "@lace/common": "0.1.0", diff --git a/packages/nami/package.json b/packages/nami/package.json index bd5f46d5fa..39ce04cf2d 100644 --- a/packages/nami/package.json +++ b/packages/nami/package.json @@ -61,7 +61,7 @@ "@cardano-sdk/crypto": "0.2.2", "@cardano-sdk/tx-construction": "0.26.2", "@cardano-sdk/util": "0.15.7", - "@cardano-sdk/web-extension": "0.38.14", + "@cardano-sdk/web-extension": "0.38.15", "@chakra-ui/css-reset": "1.0.0", "@chakra-ui/icons": "1.0.13", "@chakra-ui/react": "1.6.4", diff --git a/packages/staking/package.json b/packages/staking/package.json index 771232310e..768fcdb439 100644 --- a/packages/staking/package.json +++ b/packages/staking/package.json @@ -80,8 +80,8 @@ "@cardano-sdk/input-selection": "0.14.3", "@cardano-sdk/tx-construction": "0.26.2", "@cardano-sdk/util": "0.15.7", - "@cardano-sdk/wallet": "0.51.10", - "@cardano-sdk/web-extension": "0.38.14", + "@cardano-sdk/wallet": "0.51.12", + "@cardano-sdk/web-extension": "0.38.15", "@storybook/addon-actions": "^7.6.7", "@storybook/addon-essentials": "^7.6.7", "@storybook/addon-interactions": "^7.6.7", @@ -130,8 +130,8 @@ "@cardano-sdk/input-selection": "0.14.3", "@cardano-sdk/tx-construction": "0.26.2", "@cardano-sdk/util": "0.15.7", - "@cardano-sdk/wallet": "0.51.10", - "@cardano-sdk/web-extension": "0.38.14", + "@cardano-sdk/wallet": "0.51.12", + "@cardano-sdk/web-extension": "0.38.15", "@lace/cardano": "^0.1.0", "@lace/common": "^0.1.0", "@lace/core": "0.1.0", diff --git a/yarn.lock b/yarn.lock index 1c383aa21b..89738fee2b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9097,9 +9097,9 @@ __metadata: languageName: node linkType: hard -"@cardano-sdk/cardano-services-client@npm:0.26.3": - version: 0.26.3 - resolution: "@cardano-sdk/cardano-services-client@npm:0.26.3" +"@cardano-sdk/cardano-services-client@npm:0.26.4": + version: 0.26.4 + resolution: "@cardano-sdk/cardano-services-client@npm:0.26.4" dependencies: "@cardano-sdk/core": ~0.45.2 "@cardano-sdk/crypto": ~0.2.2 @@ -9113,7 +9113,7 @@ __metadata: ts-custom-error: ^3.2.0 ts-log: ^2.2.4 ws: ^8.17.1 - checksum: ed1b8b8cecf43f9c68262e544528ea35428baadc6287f312de96e7106b1cf926054e5832a41c397f9f2c393c9eb2985f6ef2317994f2acb298e29705052783cf + checksum: 2a1e189ad1f29d183a8c14b02ee4f1ceede6ed5656e8287c470b97e6fb7f0b3f2dfb7ac947015ba854bce64519cf08d227fcf7648d8972bf28b316dd5ca63601 languageName: node linkType: hard @@ -9261,15 +9261,15 @@ __metadata: languageName: node linkType: hard -"@cardano-sdk/ogmios@npm:~0.18.27": - version: 0.18.27 - resolution: "@cardano-sdk/ogmios@npm:0.18.27" +"@cardano-sdk/ogmios@npm:~0.18.28": + version: 0.18.28 + resolution: "@cardano-sdk/ogmios@npm:0.18.28" dependencies: "@cardano-ogmios/client": 6.9.0 "@cardano-ogmios/schema": 6.9.0 "@cardano-sdk/core": ~0.45.2 "@cardano-sdk/crypto": ~0.2.2 - "@cardano-sdk/projection": ~0.12.27 + "@cardano-sdk/projection": ~0.12.28 "@cardano-sdk/util": ~0.15.7 backoff-rxjs: ^7.0.0 buffer: 5.7.1 @@ -9278,17 +9278,17 @@ __metadata: nanoid: ^3.1.31 rxjs: ^7.4.0 ts-log: ^2.2.3 - checksum: 7549814c51d01e0a4cb74ee10c89cda95bfaf27ab12bb0781eb87f237bb9b5f913ecf457f9ac9adfff7e3546fbb8bfdee8332a542d23831289f781dca5da371c + checksum: 33adf394266b8a46f19e54210d4d4d05185b94b7df6accc8bf07a53c69c6aa2afbdf35648f83cc4dcc6253ea19acd1d4bb76c9366fe6dea50319e1047b1284d5 languageName: node linkType: hard -"@cardano-sdk/projection@npm:~0.12.27": - version: 0.12.27 - resolution: "@cardano-sdk/projection@npm:0.12.27" +"@cardano-sdk/projection@npm:~0.12.28": + version: 0.12.28 + resolution: "@cardano-sdk/projection@npm:0.12.28" dependencies: "@cardano-sdk/core": ~0.45.2 "@cardano-sdk/crypto": ~0.2.2 - "@cardano-sdk/ogmios": ~0.18.27 + "@cardano-sdk/ogmios": ~0.18.28 "@cardano-sdk/util": ~0.15.7 "@cardano-sdk/util-rxjs": ~0.9.6 lodash: ^4.17.21 @@ -9296,7 +9296,7 @@ __metadata: ts-custom-error: ^3.2.0 ts-log: ^2.2.4 tsc-alias: ^1.8.10 - checksum: cfe946a90a0209ea9e347eb171b21523839972362df2f6998b2f026fe7fafac71f0b85ca14e18697209017ac9ad95c4b84efb55387007c1ccc9731aaf5426494 + checksum: a93223aedc03a8bcffd46aa3b93a2a8628236554fa964d4701fcd5316ab7b175df40d633b58d2d893944e4f22e8f176248998e934165a67513ba8a975fe9232d languageName: node linkType: hard @@ -9319,14 +9319,14 @@ __metadata: languageName: node linkType: hard -"@cardano-sdk/util-dev@npm:0.25.5": - version: 0.25.5 - resolution: "@cardano-sdk/util-dev@npm:0.25.5" +"@cardano-sdk/util-dev@npm:0.25.6": + version: 0.25.6 + resolution: "@cardano-sdk/util-dev@npm:0.25.6" dependencies: "@cardano-sdk/core": ~0.45.2 "@cardano-sdk/crypto": ~0.2.2 "@cardano-sdk/key-management": ~0.27.2 - "@cardano-sdk/projection": ~0.12.27 + "@cardano-sdk/projection": ~0.12.28 "@cardano-sdk/util": ~0.15.7 "@types/dockerode": ^3.3.8 axios: ^1.7.4 @@ -9340,7 +9340,7 @@ __metadata: lodash: ^4.17.21 rxjs: ^7.4.0 ts-log: ^2.2.4 - checksum: 4d8177e4722a5daa4c151b5905eabbeb3f5c699c2511c84917ac3387b38d2054d754457ff2f4d67f92160d71eefe1bbf0a0497b2513c4e9dfaa479c3031ebf66 + checksum: c02a0e9366b3424a862f8f1ddfb2dac54061b549a0ae52b72ce494c4b12ce4d2d7ae7711cd36226feeff1630e89a44512f89731b2cd4df1e3e491d2845ee87f6 languageName: node linkType: hard @@ -9370,9 +9370,9 @@ __metadata: languageName: node linkType: hard -"@cardano-sdk/wallet@npm:0.51.10": - version: 0.51.10 - resolution: "@cardano-sdk/wallet@npm:0.51.10" +"@cardano-sdk/wallet@npm:0.51.12, @cardano-sdk/wallet@npm:~0.51.12": + version: 0.51.12 + resolution: "@cardano-sdk/wallet@npm:0.51.12" dependencies: "@cardano-sdk/core": ~0.45.2 "@cardano-sdk/crypto": ~0.2.2 @@ -9394,41 +9394,13 @@ __metadata: ts-custom-error: ^3.2.0 ts-log: ^2.2.3 uuid: ^8.3.2 - checksum: f0b33230161c744e6e612a1ed676da64e88c0ccb03ac04c30bd5231abfff07b991e7b50ae2cb7ef40a3b1caed017d5ab83086a2c0958d752d3ad993f3b1d345b + checksum: a5aef3cbbb7a4a82ab5a0ee2318e8d56118b8f62bcf9ec089cb306b45d1e4a1b5d38dfa248959ba36bbe711065fb781990a081d1d1b76f33e415f63a528216d3 languageName: node linkType: hard -"@cardano-sdk/wallet@npm:~0.51.11": - version: 0.51.11 - resolution: "@cardano-sdk/wallet@npm:0.51.11" - dependencies: - "@cardano-sdk/core": ~0.45.2 - "@cardano-sdk/crypto": ~0.2.2 - "@cardano-sdk/dapp-connector": ~0.13.5 - "@cardano-sdk/hardware-ledger": ~0.15.3 - "@cardano-sdk/hardware-trezor": ~0.7.2 - "@cardano-sdk/input-selection": ~0.14.3 - "@cardano-sdk/key-management": ~0.27.2 - "@cardano-sdk/tx-construction": ~0.26.2 - "@cardano-sdk/util": ~0.15.7 - "@cardano-sdk/util-rxjs": ~0.9.6 - backoff-rxjs: ^7.0.0 - bignumber.js: ^9.1.1 - delay: ^5.0.0 - emittery: ^0.10.0 - lodash: ^4.17.21 - pouchdb: ^7.3.0 - rxjs: ^7.4.0 - ts-custom-error: ^3.2.0 - ts-log: ^2.2.3 - uuid: ^8.3.2 - checksum: 0fbd314da178af9b531a3c34524c805e6c07a0bb2171de31733e247334911e35b3f566e874518925985fe2c855c29c1fd0ccced84062c1614783f4c63009d8b4 - languageName: node - linkType: hard - -"@cardano-sdk/web-extension@npm:0.38.14": - version: 0.38.14 - resolution: "@cardano-sdk/web-extension@npm:0.38.14" +"@cardano-sdk/web-extension@npm:0.38.15": + version: 0.38.15 + resolution: "@cardano-sdk/web-extension@npm:0.38.15" dependencies: "@cardano-sdk/core": ~0.45.2 "@cardano-sdk/crypto": ~0.2.2 @@ -9439,7 +9411,7 @@ __metadata: "@cardano-sdk/tx-construction": ~0.26.2 "@cardano-sdk/util": ~0.15.7 "@cardano-sdk/util-rxjs": ~0.9.6 - "@cardano-sdk/wallet": ~0.51.11 + "@cardano-sdk/wallet": ~0.51.12 backoff-rxjs: ^7.0.0 lodash: ^4.17.21 rxjs: ^7.4.0 @@ -9447,7 +9419,7 @@ __metadata: ts-log: ^2.2.3 uuid: ^8.3.2 webextension-polyfill: ^0.8.0 - checksum: c8a82ba528511af74333dc260ed45e4eb96ee10e49fbfb03628b740c3ae82de377203e4b649ffa1635b490993e96d3d93325945762e7980a6e61623ee7e4290f + checksum: c350233e25863da709223854f1ddb6d8501b435da944b8afe5710c12119aa5c3bc08c2fb3c197c1bb2398f940e6fb85dff9219b6e641c64538b7533db01400a1 languageName: node linkType: hard @@ -13513,7 +13485,7 @@ __metadata: resolution: "@lace/browser-extension-wallet@workspace:apps/browser-extension-wallet" dependencies: "@ant-design/icons": ^4.7.0 - "@cardano-sdk/cardano-services-client": 0.26.3 + "@cardano-sdk/cardano-services-client": 0.26.4 "@cardano-sdk/core": 0.45.2 "@cardano-sdk/dapp-connector": 0.13.5 "@cardano-sdk/hardware-ledger": 0.15.3 @@ -13521,8 +13493,8 @@ __metadata: "@cardano-sdk/tx-construction": 0.26.2 "@cardano-sdk/util": 0.15.7 "@cardano-sdk/util-rxjs": 0.9.6 - "@cardano-sdk/wallet": 0.51.10 - "@cardano-sdk/web-extension": 0.38.14 + "@cardano-sdk/wallet": 0.51.12 + "@cardano-sdk/web-extension": 0.38.15 "@emurgo/cardano-message-signing-asmjs": 1.0.1 "@emurgo/cip14-js": ~3.0.1 "@input-output-hk/lace-ui-toolkit": 3.2.1 @@ -13605,7 +13577,7 @@ __metadata: resolution: "@lace/cardano@workspace:packages/cardano" dependencies: "@blockfrost/blockfrost-js": ^5.5.0 - "@cardano-sdk/cardano-services-client": 0.26.3 + "@cardano-sdk/cardano-services-client": 0.26.4 "@cardano-sdk/core": 0.45.2 "@cardano-sdk/crypto": 0.2.2 "@cardano-sdk/hardware-ledger": 0.15.3 @@ -13613,9 +13585,9 @@ __metadata: "@cardano-sdk/key-management": 0.27.2 "@cardano-sdk/tx-construction": 0.26.2 "@cardano-sdk/util": 0.15.7 - "@cardano-sdk/util-dev": 0.25.5 - "@cardano-sdk/wallet": 0.51.10 - "@cardano-sdk/web-extension": 0.38.14 + "@cardano-sdk/util-dev": 0.25.6 + "@cardano-sdk/wallet": 0.51.12 + "@cardano-sdk/web-extension": 0.38.15 "@emurgo/cardano-message-signing-browser": 1.0.1 "@lace/common": 0.1.0 "@ledgerhq/devices": ^8.4.4 @@ -13681,8 +13653,8 @@ __metadata: "@babel/preset-env": ^7.22.20 "@babel/preset-react": ^7.22.15 "@babel/preset-typescript": ^7.22.15 - "@cardano-sdk/wallet": 0.51.10 - "@cardano-sdk/web-extension": 0.38.14 + "@cardano-sdk/wallet": 0.51.12 + "@cardano-sdk/web-extension": 0.38.15 "@input-output-hk/lace-ui-toolkit": 1.19.0 "@lace/cardano": 0.1.0 "@lace/common": 0.1.0 @@ -13780,7 +13752,7 @@ __metadata: "@cardano-sdk/crypto": 0.2.2 "@cardano-sdk/tx-construction": 0.26.2 "@cardano-sdk/util": 0.15.7 - "@cardano-sdk/web-extension": 0.38.14 + "@cardano-sdk/web-extension": 0.38.15 "@chakra-ui/css-reset": 1.0.0 "@chakra-ui/icons": 1.0.13 "@chakra-ui/react": 1.6.4 @@ -13863,8 +13835,8 @@ __metadata: "@cardano-sdk/input-selection": 0.14.3 "@cardano-sdk/tx-construction": 0.26.2 "@cardano-sdk/util": 0.15.7 - "@cardano-sdk/wallet": 0.51.10 - "@cardano-sdk/web-extension": 0.38.14 + "@cardano-sdk/wallet": 0.51.12 + "@cardano-sdk/web-extension": 0.38.15 "@input-output-hk/lace-ui-toolkit": 1.19.0 "@lace/cardano": ^0.1.0 "@lace/common": ^0.1.0 @@ -13933,8 +13905,8 @@ __metadata: "@cardano-sdk/input-selection": 0.14.3 "@cardano-sdk/tx-construction": 0.26.2 "@cardano-sdk/util": 0.15.7 - "@cardano-sdk/wallet": 0.51.10 - "@cardano-sdk/web-extension": 0.38.14 + "@cardano-sdk/wallet": 0.51.12 + "@cardano-sdk/web-extension": 0.38.15 "@lace/cardano": ^0.1.0 "@lace/common": ^0.1.0 "@lace/core": 0.1.0