From df5c78033752d323bf35c464e80d80b4950e312c Mon Sep 17 00:00:00 2001 From: Elias Nahum Date: Tue, 15 Feb 2022 08:44:26 -0300 Subject: [PATCH] Use dismissBottomSheet helper function instead of emitting an event (#5965) --- app/components/markdown/at_mention/index.tsx | 10 +++++----- app/components/markdown/markdown_code_block/index.tsx | 9 ++++----- app/components/markdown/markdown_image/index.tsx | 9 ++++----- app/components/markdown/markdown_link/index.tsx | 9 ++++----- .../quick_actions/camera_quick_action/camera_type.tsx | 8 ++++---- app/components/post_list/post/body/failed/index.tsx | 9 ++++----- .../team_sidebar/add_team/add_team_slide_up.tsx | 5 ++--- .../add_team/team_list_item/team_list_item.tsx | 6 +++--- app/screens/browse_channels/dropdown_slideup.tsx | 9 ++++----- .../edit_profile/components/edit_profile_picture.tsx | 6 +++--- .../components/options/user_presence/index.tsx | 7 +++---- .../servers/servers_list/server_item/index.tsx | 2 +- app/screens/navigation.ts | 4 ++-- .../components/reaction_bar/reaction_bar.tsx | 10 ++++------ app/utils/file/file_picker/index.ts | 6 +++--- app/utils/server/index.ts | 11 ++++------- 16 files changed, 54 insertions(+), 66 deletions(-) diff --git a/app/components/markdown/at_mention/index.tsx b/app/components/markdown/at_mention/index.tsx index e0a705d604..2e955f06ec 100644 --- a/app/components/markdown/at_mention/index.tsx +++ b/app/components/markdown/at_mention/index.tsx @@ -8,18 +8,18 @@ import withObservables from '@nozbe/with-observables'; import Clipboard from '@react-native-community/clipboard'; import React, {useCallback, useMemo} from 'react'; import {useIntl} from 'react-intl'; -import {DeviceEventEmitter, GestureResponderEvent, StyleProp, StyleSheet, Text, TextStyle, View} from 'react-native'; +import {GestureResponderEvent, StyleProp, StyleSheet, Text, TextStyle, View} from 'react-native'; import {combineLatest, of as of$} from 'rxjs'; import {map, switchMap} from 'rxjs/operators'; import CompassIcon from '@components/compass_icon'; import SlideUpPanelItem, {ITEM_HEIGHT} from '@components/slide_up_panel_item'; -import {Events, Preferences} from '@constants'; +import {Preferences} from '@constants'; import {MM_TABLES, SYSTEM_IDENTIFIERS} from '@constants/database'; import {useTheme} from '@context/theme'; import UserModel from '@database/models/server/user'; import {getTeammateNameDisplaySetting} from '@helpers/api/preference'; -import {bottomSheet, showModal} from '@screens/navigation'; +import {bottomSheet, dismissBottomSheet, showModal} from '@screens/navigation'; import {displayUsername, getUserMentionKeys, getUsersByUsername} from '@utils/user'; import type {WithDatabaseArgs} from '@typings/database/database'; @@ -140,7 +140,7 @@ const AtMention = ({ { - DeviceEventEmitter.emit(Events.CLOSE_BOTTOM_SHEET); + dismissBottomSheet(); let username = mentionName; if (user.username) { username = user.username; @@ -155,7 +155,7 @@ const AtMention = ({ destructive={true} icon='cancel' onPress={() => { - DeviceEventEmitter.emit(Events.CLOSE_BOTTOM_SHEET); + dismissBottomSheet(); }} testID='at_mention.bottom_sheet.cancel' text={intl.formatMessage({id: 'mobile.post.cancel', defaultMessage: 'Cancel'})} diff --git a/app/components/markdown/markdown_code_block/index.tsx b/app/components/markdown/markdown_code_block/index.tsx index f9e8b7a5a4..43637444a8 100644 --- a/app/components/markdown/markdown_code_block/index.tsx +++ b/app/components/markdown/markdown_code_block/index.tsx @@ -5,14 +5,13 @@ import {useManagedConfig} from '@mattermost/react-native-emm'; import Clipboard from '@react-native-community/clipboard'; import React, {useCallback} from 'react'; import {useIntl} from 'react-intl'; -import {DeviceEventEmitter, Keyboard, StyleSheet, Text, TextStyle, View} from 'react-native'; +import {Keyboard, StyleSheet, Text, TextStyle, View} from 'react-native'; import FormattedText from '@components/formatted_text'; import SlideUpPanelItem, {ITEM_HEIGHT} from '@components/slide_up_panel_item'; import TouchableWithFeedback from '@components/touchable_with_feedback'; -import {Events} from '@constants'; import {useTheme} from '@context/theme'; -import {bottomSheet, goToScreen} from '@screens/navigation'; +import {bottomSheet, dismissBottomSheet, goToScreen} from '@screens/navigation'; import {getDisplayNameForLanguage} from '@utils/markdown'; import {preventDoubleTap} from '@utils/tap'; import {changeOpacity, makeStyleSheetFromTheme} from '@utils/theme'; @@ -136,7 +135,7 @@ const MarkdownCodeBlock = ({language = '', content, textStyle}: MarkdownCodeBloc { - DeviceEventEmitter.emit(Events.CLOSE_BOTTOM_SHEET); + dismissBottomSheet(); Clipboard.setString(content); }} testID='at_mention.bottom_sheet.copy_code' @@ -146,7 +145,7 @@ const MarkdownCodeBlock = ({language = '', content, textStyle}: MarkdownCodeBloc destructive={true} icon='cancel' onPress={() => { - DeviceEventEmitter.emit(Events.CLOSE_BOTTOM_SHEET); + dismissBottomSheet(); }} testID='at_mention.bottom_sheet.cancel' text={intl.formatMessage({id: 'mobile.post.cancel', defaultMessage: 'Cancel'})} diff --git a/app/components/markdown/markdown_image/index.tsx b/app/components/markdown/markdown_image/index.tsx index c0764c26a7..a169da5caf 100644 --- a/app/components/markdown/markdown_image/index.tsx +++ b/app/components/markdown/markdown_image/index.tsx @@ -5,7 +5,7 @@ import {useManagedConfig} from '@mattermost/react-native-emm'; import Clipboard from '@react-native-community/clipboard'; import React, {useCallback, useRef, useState} from 'react'; import {useIntl} from 'react-intl'; -import {Alert, DeviceEventEmitter, Platform, StyleProp, StyleSheet, Text, TextStyle, View} from 'react-native'; +import {Alert, Platform, StyleProp, StyleSheet, Text, TextStyle, View} from 'react-native'; import parseUrl from 'url-parse'; import CompassIcon from '@components/compass_icon'; @@ -13,11 +13,10 @@ import FormattedText from '@components/formatted_text'; import ProgressiveImage from '@components/progressive_image'; import SlideUpPanelItem, {ITEM_HEIGHT} from '@components/slide_up_panel_item'; import TouchableWithFeedback from '@components/touchable_with_feedback'; -import {Events} from '@constants'; import {useServerUrl} from '@context/server'; import {useTheme} from '@context/theme'; import {useIsTablet} from '@hooks/device'; -import {bottomSheet} from '@screens/navigation'; +import {bottomSheet, dismissBottomSheet} from '@screens/navigation'; import {openGallerWithMockFile} from '@utils/gallery'; import {generateId} from '@utils/general'; import {calculateDimensions, getViewPortWidth, isGifTooLarge} from '@utils/images'; @@ -122,7 +121,7 @@ const MarkdownImage = ({ { - DeviceEventEmitter.emit(Events.CLOSE_BOTTOM_SHEET); + dismissBottomSheet(); Clipboard.setString(linkDestination || source); }} testID='at_mention.bottom_sheet.copy_url' @@ -132,7 +131,7 @@ const MarkdownImage = ({ destructive={true} icon='cancel' onPress={() => { - DeviceEventEmitter.emit(Events.CLOSE_BOTTOM_SHEET); + dismissBottomSheet(); }} testID='at_mention.bottom_sheet.cancel' text={intl.formatMessage({id: 'mobile.post.cancel', defaultMessage: 'Cancel'})} diff --git a/app/components/markdown/markdown_link/index.tsx b/app/components/markdown/markdown_link/index.tsx index 1801f7db5c..002200d2dc 100644 --- a/app/components/markdown/markdown_link/index.tsx +++ b/app/components/markdown/markdown_link/index.tsx @@ -7,7 +7,7 @@ import withObservables from '@nozbe/with-observables'; import Clipboard from '@react-native-community/clipboard'; import React, {Children, ReactElement, useCallback} from 'react'; import {useIntl} from 'react-intl'; -import {Alert, DeviceEventEmitter, StyleSheet, Text, View} from 'react-native'; +import {Alert, StyleSheet, Text, View} from 'react-native'; import {of as of$} from 'rxjs'; import {switchMap} from 'rxjs/operators'; import urlParse from 'url-parse'; @@ -15,12 +15,11 @@ import urlParse from 'url-parse'; import {showPermalink} from '@actions/local/permalink'; import {switchToChannelByName} from '@actions/remote/channel'; import SlideUpPanelItem, {ITEM_HEIGHT} from '@components/slide_up_panel_item'; -import {Events} from '@constants'; import {MM_TABLES, SYSTEM_IDENTIFIERS} from '@constants/database'; import DeepLinkTypes from '@constants/deep_linking'; import {useServerUrl} from '@context/server'; import {useTheme} from '@context/theme'; -import {bottomSheet, dismissAllModals, popToRoot} from '@screens/navigation'; +import {bottomSheet, dismissAllModals, dismissBottomSheet, popToRoot} from '@screens/navigation'; import {errorBadChannel} from '@utils/draft'; import {preventDoubleTap} from '@utils/tap'; import {matchDeepLink, normalizeProtocol, tryOpenURL} from '@utils/url'; @@ -133,7 +132,7 @@ const MarkdownLink = ({children, experimentalNormalizeMarkdownLinks, href, siteU { - DeviceEventEmitter.emit(Events.CLOSE_BOTTOM_SHEET); + dismissBottomSheet(); Clipboard.setString(href); }} testID='at_mention.bottom_sheet.copy_url' @@ -143,7 +142,7 @@ const MarkdownLink = ({children, experimentalNormalizeMarkdownLinks, href, siteU destructive={true} icon='cancel' onPress={() => { - DeviceEventEmitter.emit(Events.CLOSE_BOTTOM_SHEET); + dismissBottomSheet(); }} testID='at_mention.bottom_sheet.cancel' text={intl.formatMessage({id: 'mobile.post.cancel', defaultMessage: 'Cancel'})} diff --git a/app/components/post_draft/quick_actions/camera_quick_action/camera_type.tsx b/app/components/post_draft/quick_actions/camera_quick_action/camera_type.tsx index dc7e6a5a29..aed7eca168 100644 --- a/app/components/post_draft/quick_actions/camera_quick_action/camera_type.tsx +++ b/app/components/post_draft/quick_actions/camera_quick_action/camera_type.tsx @@ -2,15 +2,15 @@ // See LICENSE.txt for license information. import React from 'react'; -import {View, DeviceEventEmitter} from 'react-native'; +import {View} from 'react-native'; import {CameraOptions} from 'react-native-image-picker'; import CompassIcon from '@components/compass_icon'; import FormattedText from '@components/formatted_text'; import TouchableWithFeedback from '@components/touchable_with_feedback'; -import {Events} from '@constants'; import {useTheme} from '@context/theme'; import {useIsTablet} from '@hooks/device'; +import {dismissBottomSheet} from '@screens/navigation'; import {makeStyleSheetFromTheme} from '@utils/theme'; type Props = { @@ -65,7 +65,7 @@ const CameraType = ({onPress}: Props) => { }; onPress(options); - DeviceEventEmitter.emit(Events.CLOSE_BOTTOM_SHEET); + dismissBottomSheet(); }; const onVideo = () => { @@ -76,7 +76,7 @@ const CameraType = ({onPress}: Props) => { }; onPress(options); - DeviceEventEmitter.emit(Events.CLOSE_BOTTOM_SHEET); + dismissBottomSheet(); }; return ( diff --git a/app/components/post_list/post/body/failed/index.tsx b/app/components/post_list/post/body/failed/index.tsx index 8bcd8f6260..d48f6ce31e 100644 --- a/app/components/post_list/post/body/failed/index.tsx +++ b/app/components/post_list/post/body/failed/index.tsx @@ -3,15 +3,14 @@ import React, {useCallback} from 'react'; import {useIntl} from 'react-intl'; -import {DeviceEventEmitter, StyleSheet, View} from 'react-native'; +import {StyleSheet, View} from 'react-native'; import {removePost} from '@actions/local/post'; import CompassIcon from '@components/compass_icon'; import SlideUpPanelItem, {ITEM_HEIGHT} from '@components/slide_up_panel_item'; import TouchableWithFeedback from '@components/touchable_with_feedback'; -import {Events} from '@constants'; import {useServerUrl} from '@context/server'; -import {bottomSheet} from '@screens/navigation'; +import {bottomSheet, dismissBottomSheet} from '@screens/navigation'; import type PostModel from '@typings/database/models/servers/post'; @@ -46,7 +45,7 @@ const Failed = ({post, theme}: FailedProps) => { { - DeviceEventEmitter.emit(Events.CLOSE_BOTTOM_SHEET); + dismissBottomSheet(); retryPost(serverUrl, post); }} testID='post.failed.retry' @@ -56,7 +55,7 @@ const Failed = ({post, theme}: FailedProps) => { destructive={true} icon='close-circle-outline' onPress={() => { - DeviceEventEmitter.emit(Events.CLOSE_BOTTOM_SHEET); + dismissBottomSheet(); removePost(serverUrl, post); }} testID='post.failed.delete' diff --git a/app/components/team_sidebar/add_team/add_team_slide_up.tsx b/app/components/team_sidebar/add_team/add_team_slide_up.tsx index 94ad8ee899..fb6f473a04 100644 --- a/app/components/team_sidebar/add_team/add_team_slide_up.tsx +++ b/app/components/team_sidebar/add_team/add_team_slide_up.tsx @@ -3,10 +3,9 @@ import React, {useCallback} from 'react'; import {useIntl} from 'react-intl'; -import {DeviceEventEmitter} from 'react-native'; -import {Events} from '@constants'; import BottomSheetContent from '@screens/bottom_sheet/content'; +import {dismissBottomSheet} from '@screens/navigation'; import TeamList from './team_list'; @@ -23,7 +22,7 @@ export default function AddTeamSlideUp({otherTeams, canCreateTeams, showTitle = const onPressCreate = useCallback(() => { //TODO Create team screen - DeviceEventEmitter.emit(Events.CLOSE_BOTTOM_SHEET); + dismissBottomSheet(); }, []); return ( diff --git a/app/components/team_sidebar/add_team/team_list_item/team_list_item.tsx b/app/components/team_sidebar/add_team/team_list_item/team_list_item.tsx index ec9c530c4e..b6fa972750 100644 --- a/app/components/team_sidebar/add_team/team_list_item/team_list_item.tsx +++ b/app/components/team_sidebar/add_team/team_list_item/team_list_item.tsx @@ -2,14 +2,14 @@ // See LICENSE.txt for license information. import React, {useCallback} from 'react'; -import {DeviceEventEmitter, Text, View} from 'react-native'; +import {Text, View} from 'react-native'; import {addUserToTeam} from '@actions/remote/team'; import TeamIcon from '@components/team_sidebar/team_list/team_item/team_icon'; import TouchableWithFeedback from '@components/touchable_with_feedback'; -import {Events} from '@constants'; import {useServerUrl} from '@context/server'; import {useTheme} from '@context/theme'; +import {dismissBottomSheet} from '@screens/navigation'; import {makeStyleSheetFromTheme} from '@utils/theme'; import type TeamModel from '@typings/database/models/servers/team'; @@ -25,7 +25,7 @@ export default function TeamListItem({team, currentUserId}: Props) { const serverUrl = useServerUrl(); const onPress = useCallback(async () => { await addUserToTeam(serverUrl, team.id, currentUserId); - DeviceEventEmitter.emit(Events.CLOSE_BOTTOM_SHEET); + dismissBottomSheet(); }, []); return ( diff --git a/app/screens/browse_channels/dropdown_slideup.tsx b/app/screens/browse_channels/dropdown_slideup.tsx index 34bbf6b231..b8eac1fcd0 100644 --- a/app/screens/browse_channels/dropdown_slideup.tsx +++ b/app/screens/browse_channels/dropdown_slideup.tsx @@ -3,13 +3,12 @@ import React, {useCallback} from 'react'; import {useIntl} from 'react-intl'; -import {DeviceEventEmitter} from 'react-native'; import SlideUpPanelItem from '@components/slide_up_panel_item'; -import {Events} from '@constants'; import {useTheme} from '@context/theme'; import {useIsTablet} from '@hooks/device'; import BottomSheetContent from '@screens/bottom_sheet/content'; +import {dismissBottomSheet} from '@screens/navigation'; import { makeStyleSheetFromTheme, @@ -49,17 +48,17 @@ export default function DropdownSlideup({ }; const handlePublicPress = useCallback(() => { - DeviceEventEmitter.emit(Events.CLOSE_BOTTOM_SHEET); + dismissBottomSheet(); onPress(PUBLIC); }, [onPress]); const handleArchivedPress = useCallback(() => { - DeviceEventEmitter.emit(Events.CLOSE_BOTTOM_SHEET); + dismissBottomSheet(); onPress(ARCHIVED); }, [onPress]); const handleSharedPress = useCallback(() => { - DeviceEventEmitter.emit(Events.CLOSE_BOTTOM_SHEET); + dismissBottomSheet(); onPress(SHARED); }, [onPress]); diff --git a/app/screens/edit_profile/components/edit_profile_picture.tsx b/app/screens/edit_profile/components/edit_profile_picture.tsx index 1b2707957f..2e028784f0 100644 --- a/app/screens/edit_profile/components/edit_profile_picture.tsx +++ b/app/screens/edit_profile/components/edit_profile_picture.tsx @@ -2,16 +2,16 @@ // See LICENSE.txt for license information. import React, {useCallback, useMemo, useState} from 'react'; -import {DeviceEventEmitter, Platform, View} from 'react-native'; +import {Platform, View} from 'react-native'; import {Client} from '@client/rest'; import ProfileImage from '@components/profile_picture'; -import {Events} from '@constants'; import {ACCOUNT_OUTLINE_IMAGE} from '@constants/profile'; import {useServerUrl} from '@context/server'; import {useTheme} from '@context/theme'; import useDidUpdate from '@hooks/did_update'; import NetworkManager from '@init/network_manager'; +import {dismissBottomSheet} from '@screens/navigation'; import {changeOpacity, makeStyleSheetFromTheme} from '@utils/theme'; import ProfileImagePicker from './profile_image_picker'; @@ -81,7 +81,7 @@ const EditProfilePicture = ({user, onUpdateProfilePicture}: ChangeProfilePicture setPictureUrl(pUrl); onUpdateProfilePicture({isRemoved, localPath}); - DeviceEventEmitter.emit(Events.CLOSE_BOTTOM_SHEET); + dismissBottomSheet(); }, [onUpdateProfilePicture]); const pictureSource = useMemo(() => { diff --git a/app/screens/home/account/components/options/user_presence/index.tsx b/app/screens/home/account/components/options/user_presence/index.tsx index 95920e2302..1c296ec192 100644 --- a/app/screens/home/account/components/options/user_presence/index.tsx +++ b/app/screens/home/account/components/options/user_presence/index.tsx @@ -3,17 +3,16 @@ import React, {useCallback} from 'react'; import {useIntl} from 'react-intl'; -import {DeviceEventEmitter, TextStyle} from 'react-native'; +import {TextStyle} from 'react-native'; import {setStatus} from '@actions/remote/user'; import MenuItem from '@components/menu_item'; import SlideUpPanelItem, {ITEM_HEIGHT} from '@components/slide_up_panel_item'; import StatusLabel from '@components/status_label'; import UserStatusIndicator from '@components/user_status'; -import {Events} from '@constants'; import General from '@constants/general'; import {useServerUrl} from '@context/server'; -import {bottomSheet, dismissModal} from '@screens/navigation'; +import {bottomSheet, dismissBottomSheet, dismissModal} from '@screens/navigation'; import {preventDoubleTap} from '@utils/tap'; import {changeOpacity} from '@utils/theme'; import {confirmOutOfOfficeDisabled} from '@utils/user'; @@ -111,7 +110,7 @@ const UserStatus = ({currentUser, style, theme}: Props) => { } updateStatus(status); - DeviceEventEmitter.emit(Events.CLOSE_BOTTOM_SHEET); + dismissBottomSheet(); return null; }, []); diff --git a/app/screens/home/channel_list/servers/servers_list/server_item/index.tsx b/app/screens/home/channel_list/servers/servers_list/server_item/index.tsx index e974f197fa..c4d78f2858 100644 --- a/app/screens/home/channel_list/servers/servers_list/server_item/index.tsx +++ b/app/screens/home/channel_list/servers/servers_list/server_item/index.tsx @@ -192,7 +192,7 @@ const ServerItem = ({isActive, server}: Props) => { const onServerPressed = useCallback(async () => { if (isActive) { - DeviceEventEmitter.emit(Events.CLOSE_BOTTOM_SHEET); + dismissBottomSheet(); return; } diff --git a/app/screens/navigation.ts b/app/screens/navigation.ts index 46491f7d71..c979a29847 100644 --- a/app/screens/navigation.ts +++ b/app/screens/navigation.ts @@ -632,7 +632,7 @@ export async function bottomSheet({title, renderContent, snapPoints, initialSnap } } -export async function dismissBottomSheet() { +export async function dismissBottomSheet(alternativeScreen = Screens.BOTTOM_SHEET) { DeviceEventEmitter.emit(Events.CLOSE_BOTTOM_SHEET); - await EphemeralStore.waitUntilScreensIsRemoved(Screens.BOTTOM_SHEET); + await EphemeralStore.waitUntilScreensIsRemoved(alternativeScreen); } diff --git a/app/screens/post_options/components/reaction_bar/reaction_bar.tsx b/app/screens/post_options/components/reaction_bar/reaction_bar.tsx index a1914bec0a..57864c8240 100644 --- a/app/screens/post_options/components/reaction_bar/reaction_bar.tsx +++ b/app/screens/post_options/components/reaction_bar/reaction_bar.tsx @@ -3,10 +3,10 @@ import React, {useCallback} from 'react'; import {useIntl} from 'react-intl'; -import {DeviceEventEmitter, useWindowDimensions, View} from 'react-native'; +import {useWindowDimensions, View} from 'react-native'; import CompassIcon from '@components/compass_icon'; -import {Events, Screens} from '@constants'; +import {Screens} from '@constants'; import { LARGE_CONTAINER_SIZE, LARGE_ICON_SIZE, @@ -16,8 +16,7 @@ import { SMALL_ICON_SIZE, } from '@constants/reaction_picker'; import {useTheme} from '@context/theme'; -import {showModal} from '@screens/navigation'; -import EphemeralStore from '@store/ephemeral_store'; +import {dismissBottomSheet, showModal} from '@screens/navigation'; import {makeStyleSheetFromTheme} from '@utils/theme'; import PickReaction from './components/pick_reaction'; @@ -52,8 +51,7 @@ const ReactionBar = ({recentEmojis = []}: QuickReactionProps) => { }, []); const openEmojiPicker = useCallback(async () => { - DeviceEventEmitter.emit(Events.CLOSE_BOTTOM_SHEET); - await EphemeralStore.waitUntilScreensIsRemoved(Screens.POST_OPTIONS); + await dismissBottomSheet(Screens.POST_OPTIONS); const closeButton = CompassIcon.getImageSourceSync('close', 24, theme.sidebarHeaderTextColor); const screen = Screens.EMOJI_PICKER; diff --git a/app/utils/file/file_picker/index.ts b/app/utils/file/file_picker/index.ts index b427a586fe..a35adf2b0e 100644 --- a/app/utils/file/file_picker/index.ts +++ b/app/utils/file/file_picker/index.ts @@ -2,14 +2,14 @@ // See LICENSE.txt for license information. import {IntlShape} from 'react-intl'; -import {Alert, DeviceEventEmitter, NativeModules, Platform, StatusBar} from 'react-native'; +import {Alert, NativeModules, Platform, StatusBar} from 'react-native'; import AndroidOpenSettings from 'react-native-android-open-settings'; import DeviceInfo from 'react-native-device-info'; import DocumentPicker, {DocumentPickerResponse} from 'react-native-document-picker'; import {Asset, CameraOptions, ImageLibraryOptions, ImagePickerResponse, launchCamera, launchImageLibrary} from 'react-native-image-picker'; import Permissions, {AndroidPermission, IOSPermission} from 'react-native-permissions'; -import {Events} from '@constants'; +import {dismissBottomSheet} from '@screens/navigation'; import {extractFileInfo, lookupMimeType} from '@utils/file'; const ShareExtension = NativeModules.MattermostShare; @@ -101,7 +101,7 @@ export default class FilePickerUtil { const out = await extractFileInfo(files); if (out.length > 0) { - DeviceEventEmitter.emit(Events.CLOSE_BOTTOM_SHEET); + dismissBottomSheet(); this.uploadFiles(out); } }; diff --git a/app/utils/server/index.ts b/app/utils/server/index.ts index 82ad4b4d7b..64a9e5f46e 100644 --- a/app/utils/server/index.ts +++ b/app/utils/server/index.ts @@ -2,12 +2,11 @@ // See LICENSE.txt for license information. import {IntlShape} from 'react-intl'; -import {Alert, AlertButton, DeviceEventEmitter} from 'react-native'; +import {Alert, AlertButton} from 'react-native'; import CompassIcon from '@components/compass_icon'; -import {Events, Screens, SupportedServer} from '@constants'; -import {showModal} from '@screens/navigation'; -import EphemeralStore from '@store/ephemeral_store'; +import {Screens, SupportedServer} from '@constants'; +import {dismissBottomSheet, showModal} from '@screens/navigation'; import {LaunchType} from '@typings/launch'; import {changeOpacity} from '@utils/theme'; import {tryOpenURL} from '@utils/url'; @@ -34,9 +33,7 @@ export function semverFromServerVersion(value: string) { } export async function addNewServer(theme: Theme, serverUrl?: string, displayName?: string) { - DeviceEventEmitter.emit(Events.CLOSE_BOTTOM_SHEET); - - await EphemeralStore.waitUntilScreensIsRemoved(Screens.BOTTOM_SHEET); + await dismissBottomSheet(); const closeButton = CompassIcon.getImageSourceSync('close', 24, changeOpacity(theme.centerChannelColor, 0.56)); const closeButtonId = 'close-server'; const props = {