From 3e700f841d8a6fd66df97474374fa7e1f415cf27 Mon Sep 17 00:00:00 2001 From: Eduardo Sellanes Date: Mon, 17 Jul 2023 09:01:33 -0400 Subject: [PATCH] use useAndroidHardwareBackHnd on Files and Members (#7455) * use useAndroidHardwareBackHnd on Files and Members * use callbacks --------- Co-authored-by: Eduardo Sellanes --- app/screens/channel_files/channel_files.tsx | 11 +++++++++++ .../manage_channel_members/manage_channel_members.tsx | 9 ++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/app/screens/channel_files/channel_files.tsx b/app/screens/channel_files/channel_files.tsx index 0da4ba66af..d31da9cd55 100644 --- a/app/screens/channel_files/channel_files.tsx +++ b/app/screens/channel_files/channel_files.tsx @@ -13,17 +13,21 @@ import Search from '@components/search'; import {General} from '@constants'; import {useServerUrl} from '@context/server'; import {useTheme} from '@context/theme'; +import useAndroidHardwareBackHandler from '@hooks/android_back_handler'; +import {popTopScreen} from '@screens/navigation'; import {type FileFilter, FileFilters, filterFileExtensions} from '@utils/file'; import {changeOpacity, getKeyboardAppearanceFromTheme} from '@utils/theme'; import Header from './header'; import type ChannelModel from '@typings/database/models/servers/channel'; +import type {AvailableScreens} from '@typings/screens/navigation'; const TEST_ID = 'channel_files'; type Props = { channel: ChannelModel; + componentId: AvailableScreens; canDownloadFiles: boolean; publicLinkEnabled: boolean; } @@ -69,6 +73,7 @@ const emptyFileResults: FileInfo[] = []; function ChannelFiles({ channel, + componentId, canDownloadFiles, publicLinkEnabled, }: Props) { @@ -83,6 +88,12 @@ function ChannelFiles({ const [fileInfos, setFileInfos] = useState(emptyFileResults); + const close = useCallback(() => { + popTopScreen(componentId); + }, [componentId]); + + useAndroidHardwareBackHandler(componentId, close); + const handleSearch = useCallback(async (searchTerm: string, ftr: FileFilter) => { const t = Date.now(); lastSearchRequest.current = t; diff --git a/app/screens/manage_channel_members/manage_channel_members.tsx b/app/screens/manage_channel_members/manage_channel_members.tsx index 8ecb395c86..f188ec1c70 100644 --- a/app/screens/manage_channel_members/manage_channel_members.tsx +++ b/app/screens/manage_channel_members/manage_channel_members.tsx @@ -14,8 +14,9 @@ import UserList from '@components/user_list'; import {Events, General, Screens} from '@constants'; import {useServerUrl} from '@context/server'; import {useTheme} from '@context/theme'; +import useAndroidHardwareBackHandler from '@hooks/android_back_handler'; import useNavButtonPressed from '@hooks/navigation_button_pressed'; -import {openAsBottomSheet, setButtons} from '@screens/navigation'; +import {openAsBottomSheet, popTopScreen, setButtons} from '@screens/navigation'; import NavigationStore from '@store/navigation_store'; import {showRemoveChannelUserSnackbar} from '@utils/snack_bar'; import {changeOpacity, getKeyboardAppearanceFromTheme} from '@utils/theme'; @@ -98,6 +99,12 @@ export default function ManageChannelMembers({ setSearchResults(EMPTY); }, []); + const close = useCallback(() => { + popTopScreen(componentId); + }, [componentId]); + + useAndroidHardwareBackHandler(componentId, close); + const handleSelectProfile = useCallback(async (profile: UserProfile) => { if (profile.id === currentUserId && isManageMode) { return;