Skip to content

Commit 02f7c10

Browse files
authored
fix: only one /accounts call on app load (#6337)
* fix: remove unnecessary accounts api calls * chore: ensure no mutation of account state
1 parent c2b1744 commit 02f7c10

File tree

2 files changed

+22
-5
lines changed

2 files changed

+22
-5
lines changed

src/accounts/context/userAccount.tsx

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// Libraries
22
import React, {FC, useCallback, useEffect, useState} from 'react'
33
import {useDispatch} from 'react-redux'
4+
import {cloneDeep} from 'lodash'
45

56
// Types
67
import {UserAccount} from 'src/client/unityRoutes'
@@ -91,7 +92,6 @@ export const UserAccountProvider: FC<Props> = React.memo(({children}) => {
9192
setDefaultAccountId(defaultId)
9293
}
9394

94-
// isActive: true is for the currently logged in/active account
9595
const activeAcct = accounts.find(acct => acct.isActive === true)
9696
if (typeof activeAcct === 'object' && activeAcct.hasOwnProperty('id')) {
9797
const activeId = activeAcct.id
@@ -111,8 +111,22 @@ export const UserAccountProvider: FC<Props> = React.memo(({children}) => {
111111
const accountName = getAccountNameById(newDefaultAcctId)
112112

113113
try {
114+
const oldDefaultAcctId = defaultAccountId
115+
114116
await updateDefaultQuartzAccount(newDefaultAcctId)
117+
118+
const accountsClone = cloneDeep(userAccounts)
119+
120+
accountsClone.forEach(account => {
121+
if (account.id === oldDefaultAcctId) {
122+
account.isDefault = false
123+
}
124+
if (account.id === newDefaultAcctId) {
125+
account.isDefault = true
126+
}
127+
})
115128
setDefaultAccountId(newDefaultAcctId)
129+
setUserAccounts(accountsClone)
116130

117131
if (!setDefaultAccountOptions?.disablePopUps) {
118132
dispatch(notify(accountDefaultSettingSuccess(accountName)))
@@ -159,7 +173,7 @@ export const UserAccountProvider: FC<Props> = React.memo(({children}) => {
159173

160174
useEffect(() => {
161175
handleGetAccounts()
162-
}, [handleGetAccounts, defaultAccountId, activeAccountId])
176+
}, [handleGetAccounts])
163177

164178
return (
165179
<UserAccountContext.Provider

src/identity/components/userprofile/UserDefaults.tsx

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ import 'src/identity/components/userprofile/UserProfile.scss'
4444
export const UserDefaults: FC = () => {
4545
const dispatch = useDispatch()
4646

47-
const {userAccounts, handleSetDefaultAccount} = useContext(UserAccountContext)
47+
const {defaultAccountId, handleSetDefaultAccount, userAccounts} =
48+
useContext(UserAccountContext)
4849
const quartzOrganizations = useSelector(selectQuartzOrgs)
4950

5051
const identity = useSelector(selectQuartzIdentity)
@@ -58,8 +59,10 @@ export const UserDefaults: FC = () => {
5859

5960
const defaultAccount = useMemo(
6061
() =>
61-
accounts ? accounts.find(el => el.isDefault === true) : emptyAccount,
62-
[accounts]
62+
accounts
63+
? accounts.find(acct => acct.id === defaultAccountId)
64+
: emptyAccount,
65+
[accounts, defaultAccountId]
6366
)
6467
const defaultOrg = useMemo(
6568
() => (orgs ? orgs.find(el => el.isDefault === true) : emptyOrg),

0 commit comments

Comments
 (0)