diff --git a/apps/mobile/package.json b/apps/mobile/package.json
index 48e3d8278..7ed12fe23 100644
--- a/apps/mobile/package.json
+++ b/apps/mobile/package.json
@@ -67,7 +67,7 @@
"@rabby-wallet/gnosis-sdk": "1.3.8",
"@rabby-wallet/object-multiplex": "workspace:^",
"@rabby-wallet/persist-store": "workspace:^",
- "@rabby-wallet/rabby-action": "0.1.3",
+ "@rabby-wallet/rabby-action": "0.1.4",
"@rabby-wallet/rabby-api": "0.8.3",
"@rabby-wallet/rabby-security-engine": "2.0.7",
"@rabby-wallet/rabby-sign-bvm": "0.1.0",
diff --git a/apps/mobile/src/components/Approval/components/Actions/ApproveNFT.tsx b/apps/mobile/src/components/Approval/components/Actions/ApproveNFT.tsx
index f212213d2..07b006557 100644
--- a/apps/mobile/src/components/Approval/components/Actions/ApproveNFT.tsx
+++ b/apps/mobile/src/components/Approval/components/Actions/ApproveNFT.tsx
@@ -103,6 +103,17 @@ const ApproveNFT = ({
+
+
+
+ {t('page.signTx.interacted')}
+
+
+
+
+
+
+
+
+
+
+ {t('page.signTx.interacted')}
+
+
+
+
+
+
+
@@ -102,7 +103,16 @@ const ContractCall = ({
/>
-
+
+
+
+ {t('page.signTx.interacted')}
+
+
+
+
+
+
{isInWhitelist && (
diff --git a/apps/mobile/src/components/Approval/components/Actions/CrossSwapToken.tsx b/apps/mobile/src/components/Approval/components/Actions/CrossSwapToken.tsx
index 786e0d699..355cd1157 100644
--- a/apps/mobile/src/components/Approval/components/Actions/CrossSwapToken.tsx
+++ b/apps/mobile/src/components/Approval/components/Actions/CrossSwapToken.tsx
@@ -251,13 +251,21 @@ const CrossSwapToken = ({
{!engineResultMap['1096'] && (
<>
- {t('page.signTx.address')}
+
+
+ {t('page.signTx.address')}
+
+
- {t('page.addressDetail.source')}
+
+
+ {t('page.addressDetail.source')}
+
+
@@ -282,6 +290,7 @@ const CrossSwapToken = ({
rank: requireData.rank,
address: requireData.id,
chain,
+ hasInteraction: requireData.hasInteraction,
}}>
@@ -303,6 +312,16 @@ const CrossSwapToken = ({
/>
+
+
+
+ {t('page.signTx.interacted')}
+
+
+
+
+
+
{isInWhitelist && (
diff --git a/apps/mobile/src/components/Approval/components/Actions/CrossToken.tsx b/apps/mobile/src/components/Approval/components/Actions/CrossToken.tsx
index a25af8f27..d2dd52721 100644
--- a/apps/mobile/src/components/Approval/components/Actions/CrossToken.tsx
+++ b/apps/mobile/src/components/Approval/components/Actions/CrossToken.tsx
@@ -242,13 +242,21 @@ const Swap = ({
{!engineResultMap['1103'] && (
<>
- {t('page.signTx.address')}
+
+
+ {t('page.signTx.address')}
+
+
- {t('page.addressDetail.source')}
+
+
+ {t('page.addressDetail.source')}
+
+
@@ -272,6 +280,7 @@ const Swap = ({
protocol: requireData.protocol,
rank: requireData.rank,
address: requireData.id,
+ hasInteraction: requireData.hasInteraction,
chain,
}}>
diff --git a/apps/mobile/src/components/Approval/components/Actions/MultiSwap.tsx b/apps/mobile/src/components/Approval/components/Actions/MultiSwap.tsx
index 0fa1a00a0..1a50847dd 100644
--- a/apps/mobile/src/components/Approval/components/Actions/MultiSwap.tsx
+++ b/apps/mobile/src/components/Approval/components/Actions/MultiSwap.tsx
@@ -196,7 +196,16 @@ const MultiSwap = ({
-
+
+
+
+ {t('page.signTx.interacted')}
+
+
+
+
+
+
{isInWhitelist && (
diff --git a/apps/mobile/src/components/Approval/components/Actions/Send.tsx b/apps/mobile/src/components/Approval/components/Actions/Send.tsx
index 5707a6e44..d624c8303 100644
--- a/apps/mobile/src/components/Approval/components/Actions/Send.tsx
+++ b/apps/mobile/src/components/Approval/components/Actions/Send.tsx
@@ -128,6 +128,18 @@ const Send = ({
/>
+ {requireData.protocol && (
+
+
+
+ {t('page.signTx.protocol')}
+
+
+
+
+
+
+ )}
{!!requireData.contract && (
diff --git a/apps/mobile/src/components/Approval/components/Actions/SendNFT.tsx b/apps/mobile/src/components/Approval/components/Actions/SendNFT.tsx
index f6b337a87..023dacaa2 100644
--- a/apps/mobile/src/components/Approval/components/Actions/SendNFT.tsx
+++ b/apps/mobile/src/components/Approval/components/Actions/SendNFT.tsx
@@ -154,7 +154,9 @@ const SendNFT = ({
)}
{!!requireData.name && (
- {isLabelAddress ? t('page.signTx.label') : ' '}
+
+ {isLabelAddress ? t('page.signTx.label') : ' '}
+
{isLabelAddress ? (
- {t('page.signTx.address')}
+
+
+ {t('page.signTx.address')}
+
+
- {t('page.addressDetail.source')}
+
+
+ {t('page.addressDetail.source')}
+
+
@@ -360,6 +368,7 @@ const Swap = ({
protocol: requireData.protocol,
rank: requireData.rank,
address: requireData.id,
+ hasInteraction: requireData.hasInteraction,
chain,
}}>
@@ -382,6 +391,16 @@ const Swap = ({
/>
+
+
+
+ {t('page.signTx.hasInteraction')}
+
+
+
+
+
+
{isInWhitelist && (
diff --git a/apps/mobile/src/components/Approval/components/Actions/SwapLimitPay.tsx b/apps/mobile/src/components/Approval/components/Actions/SwapLimitPay.tsx
index 9e2484f35..00335e7ed 100644
--- a/apps/mobile/src/components/Approval/components/Actions/SwapLimitPay.tsx
+++ b/apps/mobile/src/components/Approval/components/Actions/SwapLimitPay.tsx
@@ -178,6 +178,16 @@ const SwapLimitPay = ({
+
+
+
+ {t('page.signTx.hasInteraction')}
+
+
+
+
+
+
{isInWhitelist && (
diff --git a/apps/mobile/src/components/Approval/components/Actions/TokenApprove.tsx b/apps/mobile/src/components/Approval/components/Actions/TokenApprove.tsx
index c5ff90a3c..80e3be35f 100644
--- a/apps/mobile/src/components/Approval/components/Actions/TokenApprove.tsx
+++ b/apps/mobile/src/components/Approval/components/Actions/TokenApprove.tsx
@@ -363,6 +363,16 @@ const TokenApprove = ({
/>
+
+
+
+ {t('page.signTx.hasInteraction')}
+
+
+
+
+
+
- {t('page.signTx.address')}
+
+
+ {t('page.signTx.address')}
+
+
- {t('page.addressDetail.source')}
+
+
+ {t('page.addressDetail.source')}
+
+
@@ -191,6 +199,7 @@ const UnWrapToken = ({
protocol: requireData.protocol,
rank: requireData.rank,
address: requireData.id,
+ hasInteraction: requireData.hasInteraction,
chain,
}}>
@@ -213,6 +222,16 @@ const UnWrapToken = ({
/>
+
+
+
+ {t('page.signTx.hasInteraction')}
+
+
+
+
+
+
{isInWhitelist && (
diff --git a/apps/mobile/src/components/Approval/components/Actions/WrapToken.tsx b/apps/mobile/src/components/Approval/components/Actions/WrapToken.tsx
index bc60cb9bc..b3004e8c9 100644
--- a/apps/mobile/src/components/Approval/components/Actions/WrapToken.tsx
+++ b/apps/mobile/src/components/Approval/components/Actions/WrapToken.tsx
@@ -169,13 +169,21 @@ const WrapToken = ({
{!engineResultMap['1093'] && (
<>
- {t('page.signTx.address')}
+
+
+ {t('page.signTx.address')}
+
+
- {t('page.addressDetail.source')}
+
+
+ {t('page.addressDetail.source')}
+
+
@@ -199,6 +207,7 @@ const WrapToken = ({
protocol: requireData.protocol,
rank: requireData.rank,
address: requireData.id,
+ hasInteraction: requireData.hasInteraction,
chain,
}}>
@@ -221,6 +230,16 @@ const WrapToken = ({
/>
+
+
+
+ {t('page.signTx.hasInteraction')}
+
+
+
+
+
+
{isInWhitelist && (
diff --git a/apps/mobile/src/components/Approval/components/Actions/components/UserListDrawer.tsx b/apps/mobile/src/components/Approval/components/Actions/components/UserListDrawer.tsx
index d61ca7adf..463f189c9 100644
--- a/apps/mobile/src/components/Approval/components/Actions/components/UserListDrawer.tsx
+++ b/apps/mobile/src/components/Approval/components/Actions/components/UserListDrawer.tsx
@@ -70,7 +70,7 @@ const getStyles = (colors: AppColorsVariants) =>
interface Props {
address: string;
- chain: Chain;
+ chain?: Chain;
onWhitelist: boolean;
onBlacklist: boolean;
visible: boolean;
@@ -113,7 +113,7 @@ const UserListDrawer = ({
diff --git a/apps/mobile/src/components/Approval/components/Actions/components/Values.tsx b/apps/mobile/src/components/Approval/components/Actions/components/Values.tsx
index 769947915..92a481b75 100644
--- a/apps/mobile/src/components/Approval/components/Actions/components/Values.tsx
+++ b/apps/mobile/src/components/Approval/components/Actions/components/Values.tsx
@@ -174,12 +174,12 @@ const AddressMark = ({
onWhitelist: boolean;
onBlacklist: boolean;
address: string;
- chain: Chain;
+ chain?: Chain;
isContract?: boolean;
textStyle?: TextStyle;
onChange(): void;
}) => {
- const chainId = chain.serverId;
+ const chainId = chain?.serverId;
const { t } = useTranslation();
const { init } = useApprovalSecurityEngine();
const [visible, setVisible] = React.useState(false);
diff --git a/apps/mobile/src/components/Approval/components/Actions/components/ViewMorePopup/ContractPopup.tsx b/apps/mobile/src/components/Approval/components/Actions/components/ViewMorePopup/ContractPopup.tsx
index 5cf984f43..1e463147d 100644
--- a/apps/mobile/src/components/Approval/components/Actions/components/ViewMorePopup/ContractPopup.tsx
+++ b/apps/mobile/src/components/Approval/components/Actions/components/ViewMorePopup/ContractPopup.tsx
@@ -22,6 +22,7 @@ interface ContractData {
bornAt: number | null;
rank: number | null;
title?: string;
+ hasInteraction: boolean;
}
export interface Props {
@@ -81,6 +82,16 @@ export const ContractPopup: React.FC = ({ data }) => {
/>
+
+
+
+ {t('page.signTx.interacted')}
+
+
+
+
+
+
diff --git a/apps/mobile/src/components/Approval/components/Actions/components/ViewMorePopup/NFTSpenderPopup.tsx b/apps/mobile/src/components/Approval/components/Actions/components/ViewMorePopup/NFTSpenderPopup.tsx
index 8a3d4a895..c44f8171a 100644
--- a/apps/mobile/src/components/Approval/components/Actions/components/ViewMorePopup/NFTSpenderPopup.tsx
+++ b/apps/mobile/src/components/Approval/components/Actions/components/ViewMorePopup/NFTSpenderPopup.tsx
@@ -151,6 +151,16 @@ export const NFTSpenderPopup: React.FC = ({ data }) => {
+
+
+
+ {t('page.signTx.interacted')}
+
+
+
+
+
+
diff --git a/apps/mobile/src/components/Approval/components/Actions/components/ViewMorePopup/SpenderPopup.tsx b/apps/mobile/src/components/Approval/components/Actions/components/ViewMorePopup/SpenderPopup.tsx
index 42f6b9a1c..5b88544d0 100644
--- a/apps/mobile/src/components/Approval/components/Actions/components/ViewMorePopup/SpenderPopup.tsx
+++ b/apps/mobile/src/components/Approval/components/Actions/components/ViewMorePopup/SpenderPopup.tsx
@@ -14,7 +14,7 @@ const { isSameAddress } = addressUtils;
interface SpenderData {
spender: string;
- chain: Chain;
+ chain?: Chain;
protocol: {
name: string;
logo_url: string;
@@ -49,12 +49,12 @@ export const SpenderPopup: React.FC = ({ data }) => {
isInBlackList: contractBlacklist.some(
({ address, chainId }) =>
isSameAddress(address, data.spender) &&
- chainId === data.chain.serverId,
+ chainId === data.chain?.serverId,
),
isInWhiteList: contractWhitelist.some(
({ address, chainId }) =>
isSameAddress(address, data.spender) &&
- chainId === data.chain.serverId,
+ chainId === data.chain?.serverId,
),
};
}, [data.spender, data.chain, contractBlacklist, contractWhitelist]);
@@ -146,12 +146,22 @@ export const SpenderPopup: React.FC = ({ data }) => {
? // @ts-ignore
t('page.signTx.contractPopularity', [
data.rank,
- data.chain.name,
+ data.chain?.name,
])
: '-'}
+
+
+
+ {t('page.signTx.interacted')}
+
+
+
+
+
+
diff --git a/apps/mobile/src/components/Approval/components/Actions/index.tsx b/apps/mobile/src/components/Approval/components/Actions/index.tsx
index e7ab2eb9f..7c55bcbed 100644
--- a/apps/mobile/src/components/Approval/components/Actions/index.tsx
+++ b/apps/mobile/src/components/Approval/components/Actions/index.tsx
@@ -197,7 +197,7 @@ const Actions = ({
balanceChange.receive_nft_list.length +
balanceChange.receive_token_list.length +
balanceChange.send_nft_list.length +
- balanceChange.send_nft_list.length <=
+ balanceChange.send_token_list.length <=
0
) {
return true;
diff --git a/apps/mobile/src/components/Approval/components/CommonAction.tsx b/apps/mobile/src/components/Approval/components/CommonAction.tsx
index 6addc0f79..2b7132a1b 100644
--- a/apps/mobile/src/components/Approval/components/CommonAction.tsx
+++ b/apps/mobile/src/components/Approval/components/CommonAction.tsx
@@ -103,6 +103,7 @@ export const CommonAction = ({
protocol: requireData.protocol,
rank: requireData.rank,
address: requireData.id,
+ hasInteraction: requireData.hasInteraction,
chain,
}}>
diff --git a/apps/mobile/src/components/Approval/components/TypedDataActions/BatchPermit2.tsx b/apps/mobile/src/components/Approval/components/TypedDataActions/BatchPermit2.tsx
index bfa54f5f4..2329ac065 100644
--- a/apps/mobile/src/components/Approval/components/TypedDataActions/BatchPermit2.tsx
+++ b/apps/mobile/src/components/Approval/components/TypedDataActions/BatchPermit2.tsx
@@ -174,6 +174,16 @@ const Permit2 = ({
/>
+
+
+
+ {t('page.signTx.hasInteraction')}
+
+
+
+
+
+
@@ -107,6 +108,16 @@ const ContractCall = ({
/>
+
+
+
+ {t('page.signTx.hasInteraction')}
+
+
+
+
+
+
{isInWhitelist && (
diff --git a/apps/mobile/src/components/Approval/components/TypedDataActions/Permit.tsx b/apps/mobile/src/components/Approval/components/TypedDataActions/Permit.tsx
index 0459cd2d2..a079658d7 100644
--- a/apps/mobile/src/components/Approval/components/TypedDataActions/Permit.tsx
+++ b/apps/mobile/src/components/Approval/components/TypedDataActions/Permit.tsx
@@ -149,6 +149,17 @@ const Permit = ({
+
+
+
+ {t('page.signTx.hasInteraction')}
+
+
+
+
+
+
+
+
+
+
+ {t('page.signTx.hasInteraction')}
+
+
+
+
+
+
+