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);