diff --git a/bridge_ui/src/components/Recovery.tsx b/bridge_ui/src/components/Recovery.tsx index fab7f9e8a..6449dd08b 100644 --- a/bridge_ui/src/components/Recovery.tsx +++ b/bridge_ui/src/components/Recovery.tsx @@ -519,14 +519,6 @@ export default function Recovery() { fullWidth margin="normal" /> - ) => { + const prevTargetChain = state.targetChain; state.signedVAAHex = action.payload.vaa; state.targetChain = action.payload.parsedPayload.targetChain; + if (state.sourceChain === action.payload.parsedPayload.targetChain) { + state.sourceChain = prevTargetChain; + state.sourceParsedTokenAccount = undefined; + state.sourceParsedTokenAccounts = getEmptyDataWrapper(); + } state.targetAddressHex = action.payload.parsedPayload.targetAddress; state.originChain = action.payload.parsedPayload.originChain; state.originAsset = action.payload.parsedPayload.originAddress; diff --git a/bridge_ui/src/store/selectors.ts b/bridge_ui/src/store/selectors.ts index 987d44d2b..a42617bfb 100644 --- a/bridge_ui/src/store/selectors.ts +++ b/bridge_ui/src/store/selectors.ts @@ -121,6 +121,9 @@ export const selectNFTTargetError = (state: RootState) => { if (!state.nft.targetChain) { return "Select a target chain"; } + if (state.nft.sourceChain === state.nft.targetChain) { + return "Select a different target and source"; + } if (state.nft.targetChain === CHAIN_ID_SOLANA && !state.nft.targetAsset) { // target asset is only required for solana // in the cases of new transfers, target asset will not exist and be created on redeem @@ -256,6 +259,9 @@ export const selectTransferTargetError = (state: RootState) => { if (!state.transfer.targetChain) { return "Select a target chain"; } + if (state.transfer.sourceChain === state.transfer.targetChain) { + return "Select a different target and source"; + } if (!state.transfer.targetAsset) { return UNREGISTERED_ERROR_MESSAGE; } diff --git a/bridge_ui/src/store/transferSlice.ts b/bridge_ui/src/store/transferSlice.ts index bbc459792..585093d84 100644 --- a/bridge_ui/src/store/transferSlice.ts +++ b/bridge_ui/src/store/transferSlice.ts @@ -228,8 +228,14 @@ export const transferSlice = createSlice({ }; }> ) => { + const prevTargetChain = state.targetChain; state.signedVAAHex = action.payload.vaa; state.targetChain = action.payload.parsedPayload.targetChain; + if (state.sourceChain === action.payload.parsedPayload.targetChain) { + state.sourceChain = prevTargetChain; + state.sourceParsedTokenAccount = undefined; + state.sourceParsedTokenAccounts = getEmptyDataWrapper(); + } state.targetAddressHex = action.payload.parsedPayload.targetAddress; state.originChain = action.payload.parsedPayload.originChain; state.originAsset = action.payload.parsedPayload.originAddress;