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;