Adds update owner's list to the polling function
This commit is contained in:
parent
54cb38b864
commit
1c8f6b42c5
|
@ -9,7 +9,8 @@ import { getOwners, getSafeName, SAFES_KEY } from '~/logic/safe/utils'
|
||||||
import { getGnosisSafeInstanceAt } from '~/logic/contracts/safeContracts'
|
import { getGnosisSafeInstanceAt } from '~/logic/contracts/safeContracts'
|
||||||
import { getBalanceInEtherOf } from '~/logic/wallets/getWeb3'
|
import { getBalanceInEtherOf } from '~/logic/wallets/getWeb3'
|
||||||
import { loadFromStorage } from '~/utils/storage'
|
import { loadFromStorage } from '~/utils/storage'
|
||||||
import updateSafe from '~/routes/safe/store/actions/updateSafe'
|
import removeSafeOwner from '~/routes/safe/store/actions/removeSafeOwner'
|
||||||
|
import addSafeOwner from '~/routes/safe/store/actions/addSafeOwner'
|
||||||
|
|
||||||
const buildOwnersFrom = (
|
const buildOwnersFrom = (
|
||||||
safeOwners: string[],
|
safeOwners: string[],
|
||||||
|
@ -48,21 +49,22 @@ export const checkAndUpdateSafeOwners = (safeAddress: string) => async (
|
||||||
// Check if the owner's safe did change and update them
|
// Check if the owner's safe did change and update them
|
||||||
const [gnosisSafe, localSafe] = await Promise.all([getGnosisSafeInstanceAt(safeAddress), getLocalSafe(safeAddress)])
|
const [gnosisSafe, localSafe] = await Promise.all([getGnosisSafeInstanceAt(safeAddress), getLocalSafe(safeAddress)])
|
||||||
const remoteOwners = await gnosisSafe.getOwners()
|
const remoteOwners = await gnosisSafe.getOwners()
|
||||||
|
// Converts from [ { address, ownerName} ] to address array
|
||||||
const localOwners = localSafe.owners.map((localOwner) => localOwner.address)
|
const localOwners = localSafe.owners.map((localOwner) => localOwner.address)
|
||||||
|
|
||||||
if (remoteOwners.length !== localOwners.length) {
|
// If the remote owners does not contain a local address, we remove that local owner
|
||||||
dispatch(updateSafe({ address: safeAddress, owners: remoteOwners }))
|
localOwners.forEach((localAddress) => {
|
||||||
return
|
if (!remoteOwners.includes(localAddress)) {
|
||||||
}
|
dispatch(removeSafeOwner({ safeAddress, ownerAddress: localAddress }))
|
||||||
|
|
||||||
// eslint-disable-next-line no-restricted-syntax
|
|
||||||
for (const remoteIterator of remoteOwners) {
|
|
||||||
if (!localOwners.includes(remoteIterator)) {
|
|
||||||
dispatch(updateSafe({ address: safeAddress, owners: remoteOwners }))
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
}
|
})
|
||||||
|
|
||||||
|
// If the remote has an owner that we don't have locally, we add it
|
||||||
|
remoteOwners.forEach((remoteAddress) => {
|
||||||
|
if (!localOwners.includes(remoteAddress)) {
|
||||||
|
dispatch(addSafeOwner({ safeAddress, ownerAddress: remoteAddress, ownerName: 'UNKNOWN' }))
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// eslint-disable-next-line consistent-return
|
// eslint-disable-next-line consistent-return
|
||||||
|
|
Loading…
Reference in New Issue