From 12c29c06738461357c40c3df711a53bcae1efcf0 Mon Sep 17 00:00:00 2001 From: Miguel Alatzar Date: Thu, 25 Jun 2020 20:55:44 -0700 Subject: [PATCH] [MM-25794] Ensure state teams and members are up-to-date (#4454) * Ensure state teams and members are up-to-date * Remove trailing spaces --- share_extension/android/index.js | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/share_extension/android/index.js b/share_extension/android/index.js index 4263b334a..c55234256 100644 --- a/share_extension/android/index.js +++ b/share_extension/android/index.js @@ -5,6 +5,10 @@ import React, {PureComponent} from 'react'; import {Provider} from 'react-redux'; import {IntlProvider} from 'react-intl'; +import {getMyTeams, getMyTeamMembers, selectTeam} from '@mm-redux/actions/teams'; + +import {selectDefaultTeam} from '@actions/views/select_team'; +import {selectDefaultChannel, loadChannelsForTeam} from '@actions/views/channel'; import {getTranslations} from '@i18n'; import {getCurrentLocale} from '@selectors/i18n'; import configureStore from '@store'; @@ -44,14 +48,30 @@ export default class ShareApp extends PureComponent { if (MMKVStorage) { configureStore(MMKVStorage); } - waitForHydration(Store.redux, () => { - const {dispatch, getState} = Store.redux; - const {currentTeamId} = getState().entities.teams; - dispatch(extensionSelectTeamId(currentTeamId)); + waitForHydration(Store.redux, async () => { + await this.initTeamAndChannel(Store.redux); + this.setState({init: true}); }); } + initTeamAndChannel = async ({dispatch, getState}) => { + await dispatch(getMyTeams()); + await dispatch(getMyTeamMembers()); + + const {myMembers} = getState().entities.teams; + if (Object.keys(myMembers).length === 0) { + dispatch(selectTeam('')); + dispatch(extensionSelectTeamId('')); + } else { + await dispatch(selectDefaultTeam()); + const {currentTeamId} = getState().entities.teams; + await dispatch(loadChannelsForTeam(currentTeamId)); + await dispatch(selectDefaultChannel(currentTeamId)); + dispatch(extensionSelectTeamId(currentTeamId)); + } + } + render() { if (!this.state.init) { return null;