diff --git a/frontend/app/components/shared/ProjectDropdown/ProjectDropdown.tsx b/frontend/app/components/shared/ProjectDropdown/ProjectDropdown.tsx index e22cc496b..55b98549e 100644 --- a/frontend/app/components/shared/ProjectDropdown/ProjectDropdown.tsx +++ b/frontend/app/components/shared/ProjectDropdown/ProjectDropdown.tsx @@ -69,7 +69,7 @@ function ProjectDropdown(props: Props) { {sites.map((site) => ( } + icon={} key={site.id} onClick={() => handleSiteChange(site.id)} className={cn('!py-2', activeSite?.host === site.host ? 'bg-active-blue' : '')} diff --git a/frontend/app/components/shared/SharePopup/SharePopup.js b/frontend/app/components/shared/SharePopup/SharePopup.js index df29aa089..9cebad02a 100644 --- a/frontend/app/components/shared/SharePopup/SharePopup.js +++ b/frontend/app/components/shared/SharePopup/SharePopup.js @@ -14,7 +14,9 @@ import { fetchList as fetchTeams, sendMsTeamsMsg } from 'Duck/integrations/teams (state) => ({ sessionId: state.getIn(['sessions', 'current']).sessionId, channels: state.getIn(['slack', 'list']), + slackLoaded: state.getIn(['slack', 'loaded']), msTeamsChannels: state.getIn(['teams', 'list']), + msTeamsLoaded: state.getIn(['teams', 'loaded']), tenantId: state.getIn(['user', 'account', 'tenantId']), }), { fetchSlack, fetchTeams, sendSlackMsg, sendMsTeamsMsg } @@ -31,10 +33,10 @@ export default class SharePopup extends React.PureComponent { componentDidUpdate() { if (this.state.isOpen) { - if (this.props.channels.size === 0) { + if (this.props.channels.size === 0 && !this.props.slackLoaded) { this.props.fetchSlack(); } - if (this.props.msTeamsChannels.size === 0) { + if (this.props.msTeamsChannels.size === 0 && !this.props.msTeamsLoaded) { this.props.fetchTeams(); } } diff --git a/frontend/app/duck/integrations/slack.js b/frontend/app/duck/integrations/slack.js index 24f25be11..e17180df3 100644 --- a/frontend/app/duck/integrations/slack.js +++ b/frontend/app/duck/integrations/slack.js @@ -15,13 +15,16 @@ const itemInListUpdater = createItemInListUpdater(idKey); const initialState = Map({ instance: Config(), + loaded: false, list: List(), }); const reducer = (state = initialState, action = {}) => { switch (action.type) { + case FETCH_LIST.REQUEST: + return state.set('loaded', true); case FETCH_LIST.SUCCESS: - return state.set('list', List(action.data).map(Config)); + return state.set('list', List(action.data).map(Config)).set('loaded', true) case UPDATE.SUCCESS: case SAVE.SUCCESS: const config = Config(action.data); diff --git a/frontend/app/duck/integrations/teams.js b/frontend/app/duck/integrations/teams.js index f9e22412e..e77835a37 100644 --- a/frontend/app/duck/integrations/teams.js +++ b/frontend/app/duck/integrations/teams.js @@ -17,12 +17,15 @@ const itemInListUpdater = createItemInListUpdater(idKey); const initialState = Map({ instance: Config(), list: List(), + loaded: false, }); const reducer = (state = initialState, action = {}) => { switch (action.type) { + case FETCH_LIST.REQUEST: + return state.set('loaded', true); case FETCH_LIST.SUCCESS: - return state.set('list', List(action.data).map(Config)); + return state.set('list', List(action.data).map(Config)).set('loaded', true); case UPDATE.SUCCESS: case SAVE.SUCCESS: const config = Config(action.data);