bridge_ui: safely set target chain in recovery
Change-Id: I7d6e03b56b61129d72ef641059871ff362a3f0f4
This commit is contained in:
parent
a956e570fb
commit
4c85daa531
|
@ -519,14 +519,6 @@ export default function Recovery() {
|
||||||
fullWidth
|
fullWidth
|
||||||
margin="normal"
|
margin="normal"
|
||||||
/>
|
/>
|
||||||
<TextField
|
|
||||||
variant="outlined"
|
|
||||||
label="Target Chain"
|
|
||||||
disabled
|
|
||||||
value={parsedPayload?.targetChain.toString() || ""}
|
|
||||||
fullWidth
|
|
||||||
margin="normal"
|
|
||||||
/>
|
|
||||||
<TextField
|
<TextField
|
||||||
variant="outlined"
|
variant="outlined"
|
||||||
label="Target Address"
|
label="Target Address"
|
||||||
|
|
|
@ -217,8 +217,14 @@ export const nftSlice = createSlice({
|
||||||
};
|
};
|
||||||
}>
|
}>
|
||||||
) => {
|
) => {
|
||||||
|
const prevTargetChain = state.targetChain;
|
||||||
state.signedVAAHex = action.payload.vaa;
|
state.signedVAAHex = action.payload.vaa;
|
||||||
state.targetChain = action.payload.parsedPayload.targetChain;
|
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.targetAddressHex = action.payload.parsedPayload.targetAddress;
|
||||||
state.originChain = action.payload.parsedPayload.originChain;
|
state.originChain = action.payload.parsedPayload.originChain;
|
||||||
state.originAsset = action.payload.parsedPayload.originAddress;
|
state.originAsset = action.payload.parsedPayload.originAddress;
|
||||||
|
|
|
@ -121,6 +121,9 @@ export const selectNFTTargetError = (state: RootState) => {
|
||||||
if (!state.nft.targetChain) {
|
if (!state.nft.targetChain) {
|
||||||
return "Select a target chain";
|
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) {
|
if (state.nft.targetChain === CHAIN_ID_SOLANA && !state.nft.targetAsset) {
|
||||||
// target asset is only required for solana
|
// target asset is only required for solana
|
||||||
// in the cases of new transfers, target asset will not exist and be created on redeem
|
// 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) {
|
if (!state.transfer.targetChain) {
|
||||||
return "Select a target chain";
|
return "Select a target chain";
|
||||||
}
|
}
|
||||||
|
if (state.transfer.sourceChain === state.transfer.targetChain) {
|
||||||
|
return "Select a different target and source";
|
||||||
|
}
|
||||||
if (!state.transfer.targetAsset) {
|
if (!state.transfer.targetAsset) {
|
||||||
return UNREGISTERED_ERROR_MESSAGE;
|
return UNREGISTERED_ERROR_MESSAGE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -228,8 +228,14 @@ export const transferSlice = createSlice({
|
||||||
};
|
};
|
||||||
}>
|
}>
|
||||||
) => {
|
) => {
|
||||||
|
const prevTargetChain = state.targetChain;
|
||||||
state.signedVAAHex = action.payload.vaa;
|
state.signedVAAHex = action.payload.vaa;
|
||||||
state.targetChain = action.payload.parsedPayload.targetChain;
|
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.targetAddressHex = action.payload.parsedPayload.targetAddress;
|
||||||
state.originChain = action.payload.parsedPayload.originChain;
|
state.originChain = action.payload.parsedPayload.originChain;
|
||||||
state.originAsset = action.payload.parsedPayload.originAddress;
|
state.originAsset = action.payload.parsedPayload.originAddress;
|
||||||
|
|
Loading…
Reference in New Issue