Skip to content

Commit

Permalink
Merge branch 'main' into approve_transaction_review_cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
seaona authored Apr 28, 2023
2 parents dc1de47 + 7606ded commit 99fa02b
Show file tree
Hide file tree
Showing 53 changed files with 7,875 additions and 346 deletions.
5 changes: 5 additions & 0 deletions app/components/Nav/App/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ import WalletRestored from '../../Views/RestoreWallet/WalletRestored';
import WalletResetNeeded from '../../Views/RestoreWallet/WalletResetNeeded';
import SDKLoadingModal from '../../Views/SDKLoadingModal/SDKLoadingModal';
import SDKFeedbackModal from '../../Views/SDKFeedbackModal/SDKFeedbackModal';
import AccountActions from '../../../components/Views/AccountActions';
import WalletActions from '../../Views/WalletActions';

const clearStackNavigatorOptions = {
Expand Down Expand Up @@ -511,6 +512,10 @@ const App = ({ userLoggedIn }) => {
component={EnableAutomaticSecurityChecksModal}
/>
<Stack.Screen name={Routes.MODAL.SRP_REVEAL_QUIZ} component={SRPQuiz} />
<Stack.Screen
name={Routes.SHEET.ACCOUNT_ACTIONS}
component={AccountActions}
/>
</Stack.Navigator>
);

Expand Down
95 changes: 2 additions & 93 deletions app/components/Nav/Main/RootRPCMethodsUI.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@ import {
setEtherTransaction,
setTransactionObject,
} from '../../../actions/transaction';
import PersonalSign from '../../UI/PersonalSign';
import TypedSign from '../../UI/TypedSign';
import Modal from 'react-native-modal';
import WalletConnect from '../../../core/WalletConnect';
import {
Expand All @@ -32,7 +30,6 @@ import {
} from '../../../util/transactions';
import { BN } from 'ethereumjs-util';
import Logger from '../../../util/Logger';
import MessageSign from '../../UI/MessageSign';
import Approve from '../../Views/ApproveView/Approve';
import WatchAssetRequest from '../../UI/WatchAssetRequest';
import AccountApproval from '../../UI/AccountApproval';
Expand All @@ -57,6 +54,7 @@ import AnalyticsV2 from '../../../util/analyticsV2';
import { useTheme } from '../../../util/theme';
import withQRHardwareAwareness from '../../UI/QRHardware/withQRHardwareAwareness';
import QRSigningModal from '../../UI/QRHardware/QRSigningModal';
import SignatureRequestRoot from '../../UI/SignatureRequest/Root';
import { networkSwitched } from '../../../actions/onboardNetwork';
import {
selectChainId,
Expand All @@ -75,11 +73,8 @@ const styles = StyleSheet.create({
const RootRPCMethodsUI = (props) => {
const { colors } = useTheme();
const [showPendingApproval, setShowPendingApproval] = useState(false);
const [signMessageParams, setSignMessageParams] = useState({ data: '' });
const [signType, setSignType] = useState(false);
const [walletConnectRequestInfo, setWalletConnectRequestInfo] =
useState(undefined);
const [showExpandedMessage, setShowExpandedMessage] = useState(false);
const [currentPageMeta, setCurrentPageMeta] = useState({});

const tokenList = useSelector(getTokenList);
Expand Down Expand Up @@ -123,18 +118,6 @@ const RootRPCMethodsUI = (props) => {
});
};

const onUnapprovedMessage = (messageParams, type, origin) => {
setCurrentPageMeta(messageParams.meta);
const signMessageParams = { ...messageParams };
delete signMessageParams.meta;
setSignMessageParams(signMessageParams);
setSignType(type);
showPendingApprovalModal({
type: ApprovalTypes.SIGN_MESSAGE,
origin: signMessageParams.origin,
});
};

const initializeWalletConnect = () => {
WalletConnect.init();
};
Expand Down Expand Up @@ -394,64 +377,6 @@ const RootRPCMethodsUI = (props) => {
],
);

const onSignAction = () => setShowPendingApproval(false);

const toggleExpandedMessage = () =>
setShowExpandedMessage(!showExpandedMessage);

const renderSigningModal = () => (
<Modal
isVisible={showPendingApproval?.type === ApprovalTypes.SIGN_MESSAGE}
animationIn="slideInUp"
animationOut="slideOutDown"
style={styles.bottomModal}
backdropColor={colors.overlay.default}
backdropOpacity={1}
animationInTiming={600}
animationOutTiming={600}
onBackdropPress={onSignAction}
onBackButtonPress={
showExpandedMessage ? toggleExpandedMessage : onSignAction
}
onSwipeComplete={onSignAction}
swipeDirection={'down'}
propagateSwipe
>
{signType === 'personal' && (
<PersonalSign
messageParams={signMessageParams}
onCancel={onSignAction}
onConfirm={onSignAction}
currentPageInformation={currentPageMeta}
toggleExpandedMessage={toggleExpandedMessage}
showExpandedMessage={showExpandedMessage}
/>
)}
{signType === 'typed' && (
<TypedSign
navigation={props.navigation}
messageParams={signMessageParams}
onCancel={onSignAction}
onConfirm={onSignAction}
currentPageInformation={currentPageMeta}
toggleExpandedMessage={toggleExpandedMessage}
showExpandedMessage={showExpandedMessage}
/>
)}
{signType === 'eth' && (
<MessageSign
navigation={props.navigation}
messageParams={signMessageParams}
onCancel={onSignAction}
onConfirm={onSignAction}
currentPageInformation={currentPageMeta}
toggleExpandedMessage={toggleExpandedMessage}
showExpandedMessage={showExpandedMessage}
/>
)}
</Modal>
);

const renderQRSigningModal = () => {
const {
isSigningQRObject,
Expand Down Expand Up @@ -781,20 +706,6 @@ const RootRPCMethodsUI = (props) => {
useEffect(() => {
initializeWalletConnect();

Engine.context.MessageManager.hub.on('unapprovedMessage', (messageParams) =>
onUnapprovedMessage(messageParams, 'eth'),
);

Engine.context.PersonalMessageManager.hub.on(
'unapprovedMessage',
(messageParams) => onUnapprovedMessage(messageParams, 'personal'),
);

Engine.context.TypedMessageManager.hub.on(
'unapprovedMessage',
(messageParams) => onUnapprovedMessage(messageParams, 'typed'),
);

Engine.controllerMessenger.subscribe(
'ApprovalController:stateChange',
handlePendingApprovals,
Expand All @@ -809,8 +720,6 @@ const RootRPCMethodsUI = (props) => {
);

return function cleanup() {
Engine.context.PersonalMessageManager.hub.removeAllListeners();
Engine.context.TypedMessageManager.hub.removeAllListeners();
Engine.context.TokensController.hub.removeAllListeners();
Engine.controllerMessenger.unsubscribe(
'ApprovalController:stateChange',
Expand All @@ -823,7 +732,7 @@ const RootRPCMethodsUI = (props) => {

return (
<React.Fragment>
{renderSigningModal()}
<SignatureRequestRoot />
{renderWalletConnectSessionRequestModal()}
{renderDappTransactionModal()}
{renderApproveModal()}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,21 @@ const initialState = {
provider: {
ticker: 'eth',
},
network: '1',
},
AddressBookController: {
addressBook: {},
addressBook: {
'1': {
'0x0': {
address: '0x0',
name: 'Account 1',
},
'0x1': {
address: '0x1',
name: 'Account 2',
},
},
},
},
},
},
Expand Down Expand Up @@ -109,4 +121,30 @@ describe('AccountFromToInfoCard', () => {
);
expect(await findByText('0x1...0x1')).toBeDefined();
});

it('should render correct to address for NFT send', async () => {
const NFTTransaction = {
assetType: 'ERC721',
selectedAsset: {
address: '0x26D6C3e7aEFCE970fe3BE5d589DbAbFD30026924',
standard: 'ERC721',
tokenId: '13764',
},
transaction: {
data: '0x23b872dd00000000000000000000000007be9763a718c0539017e2ab6fc42853b4aeeb6b000000000000000000000000f4e8263979a89dc357d7f9f79533febc7f3e287b00000000000000000000000000000000000000000000000000000000000035c4',
from: '0x07Be9763a718C0539017E2Ab6fC42853b4aEeb6B',
gas: '00',
to: '0x26D6C3e7aEFCE970fe3BE5d589DbAbFD30026924',
value: '0x0',
},
transactionFromName: 'Account 3',
transactionTo: '0xF4e8263979A89Dc357d7f9F79533Febc7f3e287B',
transactionToName: '0xF4e8263979A89Dc357d7f9F79533Febc7f3e287B',
};
const { findByText } = renderWithProvider(
<AccountFromToInfoCard transactionState={NFTTransaction as any} />,
{ state: initialState },
);
expect(await findByText('0xF4e8...287B')).toBeDefined();
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { Text, TouchableOpacity, View } from 'react-native';

import { strings } from '../../../../locales/i18n';
import Engine from '../../../core/Engine';
import TransactionTypes from '../../../core/TransactionTypes';
import {
selectNetwork,
selectTicker,
Expand Down Expand Up @@ -75,8 +76,8 @@ const AccountFromToInfoCard = (props: AccountFromToInfoCardProps) => {
const existingContact =
toAddress && addressBook[network] && addressBook[network][toAddress];
setIsExistingContact(existingContact !== undefined);
if (transactionToName && transactionToName !== toAddress) {
setToAccountName(transactionToName);
if (existingContact) {
setToAccountName(existingContact.name);
return;
}
(async () => {
Expand Down Expand Up @@ -124,7 +125,12 @@ const AccountFromToInfoCard = (props: AccountFromToInfoCardProps) => {
let fromAccBalance;
let toAddr;
if (selectedAsset.isETH || selectedAsset.tokenId) {
toAddr = to;
if (
selectedAsset.standard !== TransactionTypes.ASSET.ERC721 &&
selectedAsset.standard !== TransactionTypes.ASSET.ERC1155
) {
toAddr = to;
}
if (!fromAddress) {
return;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ interface SelectedAsset {
decimals: number;
image?: string;
name?: string;
standard?: string;
}

export interface Transaction {
Expand All @@ -32,7 +33,7 @@ export interface Transaction {

export interface AccountFromToInfoCardProps {
accounts: Accounts;
addressBook: Record<string, Record<string, string>>;
addressBook: Record<string, Record<string, Identity>>;
contractBalances: Record<string, number>;
identities: Identities;
network: string;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -846,7 +846,20 @@ exports[`AccountFromToInfoCard should render correctly 1`] = `
},
}
}
addressBook={Object {}}
addressBook={
Object {
"1": Object {
"0x0": Object {
"address": "0x0",
"name": "Account 1",
},
"0x1": Object {
"address": "0x1",
"name": "Account 2",
},
},
}
}
dispatch={[Function]}
identities={
Object {
Expand All @@ -860,6 +873,7 @@ exports[`AccountFromToInfoCard should render correctly 1`] = `
},
}
}
network="1"
transactionState={
Object {
"selectedAsset": Object {
Expand Down
Loading

0 comments on commit 99fa02b

Please sign in to comment.