diff --git a/app/actions/navigation/index.js b/app/actions/navigation/index.js index b09f4b8883..1ad522706b 100644 --- a/app/actions/navigation/index.js +++ b/app/actions/navigation/index.js @@ -13,8 +13,6 @@ import EphemeralStore from '@store/ephemeral_store'; import Store from '@store/store'; import {NavigationTypes} from '@constants'; -const CHANNEL_SCREEN = 'Channel'; - function getThemeFromState() { const state = Store.redux?.getState() || {}; @@ -29,8 +27,8 @@ export function resetToChannel(passProps = {}) { const stack = { children: [{ component: { - id: CHANNEL_SCREEN, - name: CHANNEL_SCREEN, + id: NavigationTypes.CHANNEL_SCREEN, + name: NavigationTypes.CHANNEL_SCREEN, passProps, options: { layout: { @@ -88,6 +86,8 @@ export function resetToChannel(passProps = {}) { export function resetToSelectServer(allowOtherServers) { const theme = Preferences.THEMES.default; + EphemeralStore.clearNavigationComponents(); + Navigation.setRoot({ root: { stack: { @@ -150,6 +150,8 @@ export function resetToTeams(name, title, passProps = {}, options = {}) { }, }; + EphemeralStore.clearNavigationComponents(); + Navigation.setRoot({ root: { stack: { @@ -427,7 +429,7 @@ export function closeMainSideMenu() { } Keyboard.dismiss(); - Navigation.mergeOptions(CHANNEL_SCREEN, { + Navigation.mergeOptions(NavigationTypes.CHANNEL_SCREEN, { sideMenu: { left: {visible: false}, }, @@ -439,7 +441,7 @@ export function enableMainSideMenu(enabled, visible = true) { return; } - Navigation.mergeOptions(CHANNEL_SCREEN, { + Navigation.mergeOptions(NavigationTypes.CHANNEL_SCREEN, { sideMenu: { left: {enabled, visible}, }, @@ -452,7 +454,7 @@ export function openSettingsSideMenu() { } Keyboard.dismiss(); - Navigation.mergeOptions(CHANNEL_SCREEN, { + Navigation.mergeOptions(NavigationTypes.CHANNEL_SCREEN, { sideMenu: { right: {visible: true}, }, @@ -465,7 +467,7 @@ export function closeSettingsSideMenu() { } Keyboard.dismiss(); - Navigation.mergeOptions(CHANNEL_SCREEN, { + Navigation.mergeOptions(NavigationTypes.CHANNEL_SCREEN, { sideMenu: { right: {visible: false}, }, diff --git a/app/constants/navigation.js b/app/constants/navigation.js index 7892bbd372..a11ac605b3 100644 --- a/app/constants/navigation.js +++ b/app/constants/navigation.js @@ -18,4 +18,6 @@ const NavigationTypes = keyMirror({ BLUR_POST_DRAFT: null, }); +NavigationTypes.CHANNEL_SCREEN = 'Channel'; + export default NavigationTypes; diff --git a/app/mattermost.js b/app/mattermost.js index 8d2799fae8..54ed3572b2 100644 --- a/app/mattermost.js +++ b/app/mattermost.js @@ -124,7 +124,9 @@ export function componentDidAppearListener({componentId}) { } export function componentDidDisappearListener({componentId}) { - EphemeralStore.removeNavigationComponentId(componentId); + if (componentId !== NavigationTypes.CHANNEL_SCREEN) { + EphemeralStore.removeNavigationComponentId(componentId); + } if (componentId === 'MainSidebar') { EventEmitter.emit(NavigationTypes.MAIN_SIDEBAR_DID_CLOSE); diff --git a/app/store/ephemeral_store.js b/app/store/ephemeral_store.js index c9b439069d..22d7fecb26 100644 --- a/app/store/ephemeral_store.js +++ b/app/store/ephemeral_store.js @@ -58,7 +58,7 @@ class EphemeralStore { removeNavigationComponentId = (componentId) => { const index = this.navigationComponentIdStack.indexOf(componentId); - if (index > 0) { + if (index >= 0) { this.navigationComponentIdStack.splice(index, 1); } }