Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: Fix unwanted IncompleteAssetDisplayed events #27651

Open
wants to merge 11 commits into
base: develop
Choose a base branch
from
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,10 @@ const DISPLAY_NAME_SAVED_MOCK = {
contractDisplayName: SYMBOL_MOCK,
};

const EMPTY_SIMULATION_DATA_MOCK = {
tokenBalanceChanges: [],
} as SimulationData;

describe('useSimulationMetrics', () => {
const useTransactionEventFragmentMock = jest.mocked(
useTransactionEventFragment,
Expand Down Expand Up @@ -141,6 +145,23 @@ describe('useSimulationMetrics', () => {
});
});

it('does not proceed processing balanceChanges if simulationData is undefined', async () => {
const props = {
balanceChanges: [BALANCE_CHANGE_MOCK],
loading: false,
simulationData: undefined,
transactionId: 'test-transaction-id',
enableMetrics: true,
};

renderHook((p: UseSimulationMetricsProps) => useSimulationMetrics(p), {
initialProps: props,
});

expect(updateTransactionEventFragmentMock).not.toHaveBeenCalled();
jest.restoreAllMocks();
});

describe('updates transaction event fragment', () => {
it('with loading time', async () => {
const props = {
Expand Down Expand Up @@ -169,7 +190,6 @@ describe('useSimulationMetrics', () => {

// @ts-expect-error This is missing from the Mocha type definitions
it.each([
['in progress', undefined, 'simulation_in_progress'],
[
'reverted',
{ error: { code: SimulationErrorCode.Reverted } },
Expand Down Expand Up @@ -216,6 +236,7 @@ describe('useSimulationMetrics', () => {
expectUpdateTransactionEventFragmentCalled(
{
balanceChanges: [balanceChange, balanceChange, balanceChange],
simulationData: EMPTY_SIMULATION_DATA_MOCK,
},
expect.objectContaining({
properties: expect.objectContaining({
Expand Down Expand Up @@ -302,6 +323,7 @@ describe('useSimulationMetrics', () => {
amount: new BigNumber(isNegative ? -1 : 1),
} as BalanceChange,
],
simulationData: EMPTY_SIMULATION_DATA_MOCK,
},
expect.objectContaining({
properties: expect.objectContaining({
Expand Down Expand Up @@ -360,6 +382,7 @@ describe('useSimulationMetrics', () => {
expectUpdateTransactionEventFragmentCalled(
{
balanceChanges: [balanceChange],
simulationData: EMPTY_SIMULATION_DATA_MOCK,
},
expect.objectContaining({
properties: expect.objectContaining({
Expand Down Expand Up @@ -459,6 +482,7 @@ describe('useSimulationMetrics', () => {
expectUpdateTransactionEventFragmentCalled(
{
balanceChanges: [balanceChange as BalanceChange],
simulationData: EMPTY_SIMULATION_DATA_MOCK,
},
expect.objectContaining({
properties: expect.objectContaining({
Expand Down Expand Up @@ -490,6 +514,7 @@ describe('useSimulationMetrics', () => {
expectUpdateTransactionEventFragmentCalled(
{
balanceChanges: [balanceChange1, balanceChange2],
simulationData: EMPTY_SIMULATION_DATA_MOCK,
},
expect.objectContaining({
sensitiveProperties: expect.objectContaining({
Expand All @@ -506,7 +531,7 @@ describe('useSimulationMetrics', () => {
useSimulationMetrics({
enableMetrics: true,
balanceChanges: [BALANCE_CHANGE_MOCK],
simulationData: undefined,
simulationData: EMPTY_SIMULATION_DATA_MOCK,
loading: false,
transactionId: TRANSACTION_ID_MOCK,
});
Expand All @@ -533,7 +558,7 @@ describe('useSimulationMetrics', () => {
useSimulationMetrics({
enableMetrics: true,
balanceChanges: [{ ...BALANCE_CHANGE_MOCK, fiatAmount: null }],
simulationData: undefined,
simulationData: EMPTY_SIMULATION_DATA_MOCK,
loading: false,
transactionId: TRANSACTION_ID_MOCK,
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,10 @@ export function useSimulationMetrics({
setLoadingComplete();
}

if(!simulationData) {
Copy link
Member

@matthewwalsh0 matthewwalsh0 Oct 18, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We've other hooks below including a useEffect so would this condition best be added to the shouldSkipMetrics boolean that is checked inside the effect?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the way we trigger SimulationIncompleteAssetDisplayed is getting send regardless of that variable, it's not tied to transaction.

But now I noticed that useIncompleteAssetEvent not even cares if metrics are enabled or not 😄

return;
}

const displayNameRequests: UseDisplayNameRequest[] = balanceChanges
// Filter out changes with no address (e.g. ETH)
.filter(({ asset }) => Boolean(asset.address))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -542,14 +542,6 @@ export default class ConfirmTransactionBase extends Component {

const { simulationData } = txData;

const simulationDetails = (
<SimulationDetails
simulationData={simulationData}
transactionId={txData.id}
enableMetrics
/>
);

const showTotals = Boolean(simulationData?.error);

return (
Expand All @@ -567,7 +559,11 @@ export default class ConfirmTransactionBase extends Component {
tokenSymbol={tokenSymbol}
isUsingPaymaster={isUsingPaymaster}
/>
{simulationDetails}
<SimulationDetails
simulationData={simulationData}
transactionId={txData.id}
enableMetrics
/>
{!renderSimulationFailureWarning && (
<TransactionDetail
disableEditGasFeeButton
Expand Down