Skip to content

Commit

Permalink
fix(extension): [lw-10782] fix fiat amount for pending tx, differenti…
Browse files Browse the repository at this point in the history
…ate between conway and non
  • Loading branch information
vetalcore committed Jun 24, 2024
1 parent bde8c50 commit ff8f22d
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ export const useWalletActivities = ({

const fetchWalletActivities = useCallback(async () => {
fiatCurrency &&
cardanoFiatPrice &&
getWalletActivities({
fiatCurrency,
cardanoFiatPrice,
Expand Down
18 changes: 12 additions & 6 deletions apps/browser-extension-wallet/src/utils/tx-inspection.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import {
sentInspector,
totalAddressOutputsValueInspector
} from '@cardano-sdk/core';
import { certificateInspectorFactory } from '@src/features/dapp/components/confirm-transaction/utils';
import { Wallet } from '@lace/cardano';
import {
ActivityType,
Expand Down Expand Up @@ -54,10 +55,6 @@ const governanceCertificateInspection = (
// Assumes single certificate only, should update

switch (true) {
case signedCertificateTypenames.includes(CertificateType.Registration):
return ConwayEraCertificatesTypes.Registration;
case signedCertificateTypenames.includes(CertificateType.Unregistration):
return ConwayEraCertificatesTypes.Unregistration;
case signedCertificateTypenames.includes(CertificateType.RegisterDelegateRepresentative):
return ConwayEraCertificatesTypes.RegisterDelegateRepresentative;
case signedCertificateTypenames.includes(CertificateType.UnregisterDelegateRepresentative):
Expand Down Expand Up @@ -112,7 +109,7 @@ const getWalletAccounts = (walletAddresses: Wallet.KeyManagement.GroupedAddress[
{ paymentAddresses: [], rewardAccounts: [] }
);

const txIncludesConwayCertificates = (certificates?: Wallet.Cardano.Certificate[]) =>
export const txIncludesConwayCertificates = (certificates?: Wallet.Cardano.Certificate[]): boolean =>
certificates?.length > 0
? certificates.some((certificate) =>
Object.values(ConwayEraCertificatesTypes).includes(
Expand Down Expand Up @@ -162,11 +159,16 @@ export const inspectTxType = async ({
delegation: delegationInspector,
stakeKeyRegistration: stakeKeyRegistrationInspector,
stakeKeyDeregistration: stakeKeyDeregistrationInspector,
conwayEraStakeKeyRegistration: certificateInspectorFactory(CertificateType.Registration),
conwayEraStakeKeyDeregistration: certificateInspectorFactory(CertificateType.Unregistration),
selfTransaction: selfTxInspector(paymentAddresses)
})(tx);

if (txIncludesConwayCertificates(tx.body.certificates)) {
return governanceCertificateInspection(tx.body.certificates);
const inspection = governanceCertificateInspection(tx.body.certificates);
if (inspection) {
return inspection;
}
}

const withRewardsWithdrawal = isTxWithRewardsWithdrawal(
Expand All @@ -183,6 +185,10 @@ export const inspectTxType = async ({
return DelegationActivityType.delegationRegistration;
case inspectionProperties.stakeKeyDeregistration.length > 0:
return DelegationActivityType.delegationDeregistration;
case !!inspectionProperties.conwayEraStakeKeyRegistration:
return ConwayEraCertificatesTypes.Registration;
case !!inspectionProperties.conwayEraStakeKeyDeregistration:
return ConwayEraCertificatesTypes.Unregistration;
// Voting procedures take priority over proposals
// TODO: use proper inspector when available on sdk side (LW-9569)
case tx.body.votingProcedures?.length > 0:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@
import BigNumber from 'bignumber.js';
import { Wallet } from '@lace/cardano';
import { CurrencyInfo, TxDirections } from '@types';
import { inspectTxValues, inspectTxType } from '@src/utils/tx-inspection';
import { inspectTxValues, inspectTxType, txIncludesConwayCertificates } from '@src/utils/tx-inspection';
import { formatDate, formatTime } from '@src/utils/format-date';
import { getTransactionTotalAmount } from '@src/utils/get-transaction-total-amount';
import type { TransformedActivity, TransformedTransactionActivity } from './types';
import { ActivityStatus, DelegationActivityType } from '@lace/core';
import { ActivityStatus, ConwayEraCertificatesTypes, DelegationActivityType } from '@lace/core';
import capitalize from 'lodash/capitalize';
import dayjs from 'dayjs';
import { hasPhase2ValidationFailed } from '@src/utils/phase2-validation';
Expand Down Expand Up @@ -43,7 +43,7 @@ export const getFormattedFiatAmount = ({
return fiatAmount ? `${fiatAmount} ${fiatCurrency.code}` : '-';
};

const splitDelegationTx = (tx: TransformedActivity): TransformedTransactionActivity[] => {
const splitDelegationTx = (tx: TransformedActivity, hasConwayEraCerts: boolean): TransformedTransactionActivity[] => {
if (tx.deposit) {
return [
{
Expand All @@ -54,7 +54,9 @@ const splitDelegationTx = (tx: TransformedActivity): TransformedTransactionActiv
},
{
...tx,
type: DelegationActivityType.delegationRegistration,
type: hasConwayEraCerts
? ConwayEraCertificatesTypes.Registration
: DelegationActivityType.delegationRegistration,
// Let registration show just the deposit,
// and the other transaction show fee to avoid duplicity
fee: '0'
Expand All @@ -70,7 +72,9 @@ const splitDelegationTx = (tx: TransformedActivity): TransformedTransactionActiv
},
{
...tx,
type: DelegationActivityType.delegationDeregistration,
type: hasConwayEraCerts
? ConwayEraCertificatesTypes.Unregistration
: DelegationActivityType.delegationDeregistration,
// Let de-registration show just the returned deposit,
// and the other transaction show fee to avoid duplicity
fee: '0'
Expand Down Expand Up @@ -239,7 +243,7 @@ export const txTransformer = async ({
});

if (type === DelegationActivityType.delegation) {
return splitDelegationTx(baseTransformedActivity);
return splitDelegationTx(baseTransformedActivity, txIncludesConwayCertificates(tx.body.certificates));
}

return [
Expand Down

0 comments on commit ff8f22d

Please sign in to comment.