diff --git a/src/logic/safe/store/actions/fetchSafe.ts b/src/logic/safe/store/actions/fetchSafe.ts index 6813ea5f0d..0fe5bf3c2e 100644 --- a/src/logic/safe/store/actions/fetchSafe.ts +++ b/src/logic/safe/store/actions/fetchSafe.ts @@ -84,7 +84,7 @@ export const buildSafe = async ( currentVersion: currentVersion ?? '', needsUpdate, featuresEnabled, - balances: Map(), + balances: localSafe?.balances || Map(), latestIncomingTxBlock: 0, activeAssets: Set(), activeTokens: Set(), diff --git a/src/logic/safe/store/models/safe.ts b/src/logic/safe/store/models/safe.ts index bd38c747fe..5ffeef67cc 100644 --- a/src/logic/safe/store/models/safe.ts +++ b/src/logic/safe/store/models/safe.ts @@ -39,7 +39,7 @@ const makeSafe = Record({ activeAssets: Set(), blacklistedTokens: Set(), blacklistedAssets: Set(), - balances: Map({}), + balances: Map(), nonce: 0, latestIncomingTxBlock: 0, recurringUser: undefined, diff --git a/src/logic/safe/store/reducer/safe.ts b/src/logic/safe/store/reducer/safe.ts index d5abf59cbc..5409c9e54d 100644 --- a/src/logic/safe/store/reducer/safe.ts +++ b/src/logic/safe/store/reducer/safe.ts @@ -53,8 +53,9 @@ const updateSafeProps = (prevSafe, safe) => { // We check each safe property sent in action.payload safeProperties.forEach((key) => { if (safe[key] && typeof safe[key] === 'object') { - if (safe[key].length >= 0) { - // If type is array we update the array + if (safe[key].length >= 0 || Map.isMap(safe[key])) { + // If type is array we replace it + // If type is Immutable Map we replace it record.update(key, () => safe[key]) } else if (safe[key].size >= 0) { // If type is Immutable List we replace current List @@ -108,7 +109,7 @@ export default handleActions( return state.updateIn( ['safes', safe.address], - makeSafe({ name: 'LOADED SAFE', address: safe.address }), + makeSafe({ name: safe?.name || 'LOADED SAFE', address: safe.address }), (prevSafe) => updateSafeProps(prevSafe, safe), ) },