Skip to content

Commit

Permalink
Simulations on signature pages should be displayed only if preference…
Browse files Browse the repository at this point in the history
… is enabled
  • Loading branch information
jpuri committed Jun 12, 2024
1 parent df189d4 commit 1c6b783
Show file tree
Hide file tree
Showing 6 changed files with 45 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ describe('PersonalSignInfo', () => {

it('does not render if required data is not present in the transaction', () => {
const state = {
...mockState,
confirm: {
currentConfirmation: {
id: '0050d5b0-c023-11ee-a0cb-3390a510a0ab',
Expand Down Expand Up @@ -74,9 +75,13 @@ describe('PersonalSignInfo', () => {
expect(getByText('Signing in with')).toBeDefined();
});

it('display simulation for SIWE request', () => {
it('display simulation for SIWE request if preference useTransactionSimulations is enabled', () => {
const state = {
...mockState,
metamask: {
...mockState.metamask,
useTransactionSimulations: true,
},
confirm: {
currentConfirmation: signatureRequestSIWE,
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import {
sanitizeString,
} from '../../../../../../helpers/utils/util';
import { SignatureRequestType } from '../../../../types/confirm';
import { getUseTransactionSimulations } from '../../../../selectors/preferences';
import { isSIWESignatureRequest } from '../../../../utils';
import { AlertRow } from '../../../../../../components/app/confirm/info/row/alert-row/alert-row';

Expand All @@ -27,6 +28,7 @@ const PersonalSignInfo: React.FC = () => {
const currentConfirmation = useSelector(
currentConfirmationSelector,
) as SignatureRequestType;
const useTransactionSimulations = useSelector(getUseTransactionSimulations);

if (!currentConfirmation?.msgParams) {
return null;
Expand All @@ -37,7 +39,7 @@ const PersonalSignInfo: React.FC = () => {

return (
<>
{isSiweSigReq && (
{isSiweSigReq && useTransactionSimulations && (
<Box
backgroundColor={BackgroundColor.backgroundDefault}
borderRadius={BorderRadius.MD}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,9 +64,13 @@ describe('TypedSignInfo', () => {
expect(container).toMatchSnapshot();
});

it('display simulation details for permit signature', () => {
it('display simulation details for permit signature if flag useTransactionSimulations is set', () => {
const state = {
...mockState,
metamask: {
...mockState.metamask,
useTransactionSimulations: true,
},
confirm: {
currentConfirmation: permitSignatureMsg,
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import {
import { EIP712_PRIMARY_TYPE_PERMIT } from '../../../../constants';
import { SignatureRequestType } from '../../../../types/confirm';
import { parseTypedDataMessage } from '../../../../utils';
import { getUseTransactionSimulations } from '../../../../selectors/preferences';
import { ConfirmInfoRowTypedSignData } from '../../row/typed-sign-data/typedSignData';
import { PermitSimulation } from './permit-simulation';

Expand All @@ -26,6 +27,7 @@ const TypedSignInfo: React.FC = () => {
const currentConfirmation = useSelector(
currentConfirmationSelector,
) as SignatureRequestType;
const useTransactionSimulations = useSelector(getUseTransactionSimulations);

if (!currentConfirmation?.msgParams) {
return null;
Expand All @@ -39,7 +41,8 @@ const TypedSignInfo: React.FC = () => {

return (
<>
{primaryType === EIP712_PRIMARY_TYPE_PERMIT && <PermitSimulation />}
{primaryType === EIP712_PRIMARY_TYPE_PERMIT &&
useTransactionSimulations && <PermitSimulation />}
<Box
backgroundColor={BackgroundColor.backgroundDefault}
borderRadius={BorderRadius.MD}
Expand Down
19 changes: 19 additions & 0 deletions ui/pages/confirmations/selectors/preferences.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import { getUseTransactionSimulations } from './preferences';

describe('pereference selectors', () => {
describe('getUseTransactionSimulations', () => {
it('returns value of useTransactionSimulations from state', () => {
const result = getUseTransactionSimulations({
metamask: {
useTransactionSimulations: true,
},
});
expect(result).toStrictEqual(true);
});

it('returns undefined if useTransactionSimulations is not set', () => {
const result = getUseTransactionSimulations({ metamask: {} });
expect(result).toStrictEqual(undefined);
});
});
});
8 changes: 8 additions & 0 deletions ui/pages/confirmations/selectors/preferences.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
export type RootState = {
metamask: {
useTransactionSimulations?: boolean;
};
};

export const getUseTransactionSimulations = (state: RootState) =>
state.metamask.useTransactionSimulations;

0 comments on commit 1c6b783

Please sign in to comment.