diff --git a/web/app.react.js b/web/app.react.js --- a/web/app.react.js +++ b/web/app.react.js @@ -47,6 +47,7 @@ import Chat from './chat/chat.react.js'; import { EditModalProvider } from './chat/edit-message-provider.js'; import { MemberListSidebarProvider } from './chat/member-list-sidebar/member-list-sidebar-provider.react.js'; +import CommunitiesRefresher from './components/communities-refresher.react.js'; import { DBOpsHandler } from './components/db-ops-handler.react.js'; import LogOutIfMissingCSATHandler from './components/log-out-if-missing-csat-handler.react.js'; import NavigationArrows from './components/navigation-arrows.react.js'; @@ -233,6 +234,7 @@ + {content} diff --git a/web/components/communities-refresher.react.js b/web/components/communities-refresher.react.js new file mode 100644 --- /dev/null +++ b/web/components/communities-refresher.react.js @@ -0,0 +1,33 @@ +// @flow + +import * as React from 'react'; + +import { + fetchCommunityInfosActionTypes, + useFetchCommunityInfos, +} from 'lib/actions/community-actions.js'; +import { isLoggedIn } from 'lib/selectors/user-selectors.js'; +import { useDispatchActionPromise } from 'lib/utils/redux-promise-utils.js'; + +import { useSelector } from '../redux/redux-utils.js'; + +function CommunitiesRefresher(): React.Node { + const isActive = useSelector(state => state.windowActive); + const loggedIn = useSelector(isLoggedIn); + const callFetchCommunityInfos = useFetchCommunityInfos(); + const dispatchActionPromise = useDispatchActionPromise(); + + React.useEffect(() => { + if (!isActive || !loggedIn) { + return; + } + void dispatchActionPromise( + fetchCommunityInfosActionTypes, + callFetchCommunityInfos(), + ); + }, [callFetchCommunityInfos, dispatchActionPromise, isActive, loggedIn]); + + return null; +} + +export default CommunitiesRefresher;