Bug/safe crash when accessing from link (#1209)

* use updateSafeAction for adding modules

* Fix address parameter naming issue

Add comment to ADD_SAFE_MODULE behaviour

* fetchSafe batch everything to updateSafe

* remove addSafeModules action

Co-authored-by: Mikhail Mikheev <mmvsha73@gmail.com>
This commit is contained in:
Daniel Sanchez 2020-08-07 16:49:29 +02:00 committed by GitHub
parent 64e4b6b45a
commit 91d3aa8592
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 7 additions and 28 deletions

View File

@ -1,7 +0,0 @@
import { createAction } from 'redux-actions'
export const ADD_SAFE_MODULES = 'ADD_SAFE_MODULES'
const addSafeModules = createAction(ADD_SAFE_MODULES)
export default addSafeModules

View File

@ -15,7 +15,6 @@ import { makeOwner } from 'src/routes/safe/store/models/owner'
import { checksumAddress } from 'src/utils/checksumAddress'
import { ModulePair, SafeOwner } from 'src/routes/safe/store/models/safe'
import { Dispatch } from 'redux'
import addSafeModules from './addSafeModules'
import { SENTINEL_ADDRESS } from 'src/logic/contracts/safeContracts'
const buildOwnersFrom = (
@ -49,7 +48,7 @@ const buildModulesLinkedList = (modules: string[] | undefined, nextModule: strin
return null
}
export const buildSafe = async (safeAdd, safeName, latestMasterContractVersion?: any) => {
export const buildSafe = async (safeAdd: string, safeName: string, latestMasterContractVersion?: any) => {
const safeAddress = checksumAddress(safeAdd)
const safeParams = ['getThreshold', 'nonce', 'VERSION', 'getOwners']
@ -105,24 +104,16 @@ export const checkAndUpdateSafe = (safeAdd: string) => async (dispatch: Dispatch
// Converts from [ { address, ownerName} ] to address array
const localOwners = localSafe ? localSafe.owners.map((localOwner) => localOwner.address) : undefined
const localThreshold = localSafe ? localSafe.threshold : undefined
const localNonce = localSafe ? localSafe.nonce : undefined
dispatch(
addSafeModules({
safeAddress,
modulesAddresses: buildModulesLinkedList(modules?.array, modules?.next),
updateSafe({
address: safeAddress,
modules: buildModulesLinkedList(modules?.array, modules?.next),
nonce: Number(remoteNonce),
threshold: Number(remoteThreshold),
}),
)
if (localNonce !== Number(remoteNonce)) {
dispatch(updateSafe({ address: safeAddress, nonce: Number(remoteNonce) }))
}
if (localThreshold !== Number(remoteThreshold)) {
dispatch(updateSafe({ address: safeAddress, threshold: Number(remoteThreshold) }))
}
// If the remote owners does not contain a local address, we remove that local owner
if (localOwners) {
localOwners.forEach((localAddress) => {
@ -149,7 +140,7 @@ export const checkAndUpdateSafe = (safeAdd: string) => async (dispatch: Dispatch
}
// eslint-disable-next-line consistent-return
export default (safeAdd) => async (dispatch, getState) => {
export default (safeAdd: string) => async (dispatch, getState) => {
try {
const safeAddress = checksumAddress(safeAdd)
const safeName = (await getSafeName(safeAddress)) || 'LOADED SAFE'

View File

@ -15,7 +15,6 @@ import { makeOwner } from 'src/routes/safe/store/models/owner'
import makeSafe from 'src/routes/safe/store/models/safe'
import { checksumAddress } from 'src/utils/checksumAddress'
import { SafeReducerMap } from './types/safe'
import { ADD_SAFE_MODULES } from 'src/routes/safe/store/actions/addSafeModules'
export const SAFE_REDUCER_ID = 'safes'
export const DEFAULT_SAFE_INITIAL_STATE = 'NOT_ASKED'
@ -128,10 +127,6 @@ export default handleActions(
return prevSafe.merge({ owners: updatedOwners })
})
},
[ADD_SAFE_MODULES]: (state: SafeReducerMap, action) => {
const { modulesAddresses, safeAddress } = action.payload
return state.setIn(['safes', safeAddress, 'modules'], modulesAddresses)
},
[SET_DEFAULT_SAFE]: (state: SafeReducerMap, action) => state.set('defaultSafe', action.payload),
[SET_LATEST_MASTER_CONTRACT_VERSION]: (state: SafeReducerMap, action) =>
state.set('latestMasterContractVersion', action.payload),