|
|
|
@ -603,7 +603,7 @@ export const initializeSendState = createAsyncThunk( |
|
|
|
|
// For instance, in the actions.js file we dispatch this action anytime the
|
|
|
|
|
// chain changes.
|
|
|
|
|
if (!draftTransaction) { |
|
|
|
|
thunkApi.rejectWithValue( |
|
|
|
|
return thunkApi.rejectWithValue( |
|
|
|
|
'draftTransaction not found, possibly not on send flow', |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
@ -678,6 +678,20 @@ export const initializeSendState = createAsyncThunk( |
|
|
|
|
// We have to keep the gas slice in sync with the send slice state
|
|
|
|
|
// so that it'll be initialized correctly if the gas modal is opened.
|
|
|
|
|
await thunkApi.dispatch(setCustomGasLimit(gasLimit)); |
|
|
|
|
|
|
|
|
|
// There may be a case where the send has been canceled by the user while
|
|
|
|
|
// the gas estimate is being computed. So we check again to make sure that
|
|
|
|
|
// a currentTransactionUUID exists and matches the previous tx.
|
|
|
|
|
const newState = thunkApi.getState(); |
|
|
|
|
if ( |
|
|
|
|
newState.send.currentTransactionUUID !== sendState.currentTransactionUUID |
|
|
|
|
) { |
|
|
|
|
return thunkApi.rejectWithValue( |
|
|
|
|
`draftTransaction changed during initialization.
|
|
|
|
|
A new initializeSendState action must be dispatched.`,
|
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return { |
|
|
|
|
account, |
|
|
|
|
chainId: getCurrentChainId(state), |
|
|
|
@ -1396,6 +1410,7 @@ const slice = createSlice({ |
|
|
|
|
validateSendState: (state) => { |
|
|
|
|
const draftTransaction = |
|
|
|
|
state.draftTransactions[state.currentTransactionUUID]; |
|
|
|
|
if (draftTransaction) { |
|
|
|
|
switch (true) { |
|
|
|
|
case Boolean(draftTransaction.amount.error): |
|
|
|
|
case Boolean(draftTransaction.gas.error): |
|
|
|
@ -1419,6 +1434,7 @@ const slice = createSlice({ |
|
|
|
|
default: |
|
|
|
|
draftTransaction.status = SEND_STATUSES.VALID; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
extraReducers: (builder) => { |
|
|
|
@ -1512,15 +1528,9 @@ const slice = createSlice({ |
|
|
|
|
state.selectedAccount.balance = action.payload.account.balance; |
|
|
|
|
const draftTransaction = |
|
|
|
|
state.draftTransactions[state.currentTransactionUUID]; |
|
|
|
|
if (draftTransaction) { |
|
|
|
|
draftTransaction.gas.gasLimit = action.payload.gasLimit; |
|
|
|
|
slice.caseReducers.updateGasFeeEstimates(state, { |
|
|
|
|
payload: { |
|
|
|
|
gasFeeEstimates: action.payload.gasFeeEstimates, |
|
|
|
|
gasEstimateType: action.payload.gasEstimateType, |
|
|
|
|
}, |
|
|
|
|
}); |
|
|
|
|
draftTransaction.gas.gasTotal = action.payload.gasTotal; |
|
|
|
|
state.gasEstimatePollToken = action.payload.gasEstimatePollToken; |
|
|
|
|
if (action.payload.chainHasChanged) { |
|
|
|
|
// If the state was reinitialized as a result of the user changing
|
|
|
|
|
// the network from the network dropdown, then the selected asset is
|
|
|
|
@ -1532,6 +1542,14 @@ const slice = createSlice({ |
|
|
|
|
state.selectedAccount.balance; |
|
|
|
|
draftTransaction.asset.details = null; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
slice.caseReducers.updateGasFeeEstimates(state, { |
|
|
|
|
payload: { |
|
|
|
|
gasFeeEstimates: action.payload.gasFeeEstimates, |
|
|
|
|
gasEstimateType: action.payload.gasEstimateType, |
|
|
|
|
}, |
|
|
|
|
}); |
|
|
|
|
state.gasEstimatePollToken = action.payload.gasEstimatePollToken; |
|
|
|
|
if (action.payload.gasEstimatePollToken) { |
|
|
|
|
state.gasEstimateIsLoading = false; |
|
|
|
|
} |
|
|
|
@ -2641,7 +2659,11 @@ export function isSendStateInitialized(state) { |
|
|
|
|
* @type {Selector<boolean>} |
|
|
|
|
*/ |
|
|
|
|
export function isSendFormInvalid(state) { |
|
|
|
|
return getCurrentDraftTransaction(state).status === SEND_STATUSES.INVALID; |
|
|
|
|
const draftTransaction = getCurrentDraftTransaction(state); |
|
|
|
|
if (!draftTransaction) { |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
return draftTransaction.status === SEND_STATUSES.INVALID; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|