From 41b594f5a96c3d5c7df12a0e466d4882b0a889bb Mon Sep 17 00:00:00 2001 From: Jason Frerich Date: Fri, 11 Nov 2022 17:23:55 -0600 Subject: [PATCH] [Gekidou - MM-48279] Remove the team picker when a member of only one team (#6751) --- app/screens/home/search/index.tsx | 2 ++ app/screens/home/search/initial/initial.tsx | 6 +++++- .../home/search/initial/modifiers/index.tsx | 7 ++++++- app/screens/home/search/results/header.tsx | 21 ++++++++++++------- app/screens/home/search/search.tsx | 6 +++++- ...am_slideup.tsx => select_team_slideup.tsx} | 0 .../team_picker_icon.tsx | 2 +- .../home/search/team_picker_icon/index.ts | 20 ------------------ 8 files changed, 32 insertions(+), 32 deletions(-) rename app/screens/home/search/{team_picker_icon/search_team_slideup.tsx => select_team_slideup.tsx} (100%) rename app/screens/home/search/{team_picker_icon => }/team_picker_icon.tsx (98%) delete mode 100644 app/screens/home/search/team_picker_icon/index.ts diff --git a/app/screens/home/search/index.tsx b/app/screens/home/search/index.tsx index 7357169a1..6282403ad 100644 --- a/app/screens/home/search/index.tsx +++ b/app/screens/home/search/index.tsx @@ -6,6 +6,7 @@ import withObservables from '@nozbe/with-observables'; import compose from 'lodash/fp/compose'; import {observeCurrentTeamId} from '@queries/servers/system'; +import {queryJoinedTeams} from '@queries/servers/team'; import SearchScreen from './search'; @@ -15,6 +16,7 @@ const enhance = withObservables([], ({database}: WithDatabaseArgs) => { const currentTeamId = observeCurrentTeamId(database); return { teamId: currentTeamId, + teams: queryJoinedTeams(database).observe(), }; }); diff --git a/app/screens/home/search/initial/initial.tsx b/app/screens/home/search/initial/initial.tsx index 8f0b1630a..65c94bf62 100644 --- a/app/screens/home/search/initial/initial.tsx +++ b/app/screens/home/search/initial/initial.tsx @@ -4,6 +4,8 @@ import React from 'react'; import Animated from 'react-native-reanimated'; +import {TeamModel} from '@database/models/server'; + import Modifiers from './modifiers'; import RecentSearches from './recent_searches'; @@ -18,9 +20,10 @@ type Props = { setTeamId: (value: string) => void; teamId: string; teamName: string; + teams: TeamModel[]; } -const Initial = ({recentSearches, scrollEnabled, searchValue, setRecentValue, teamId, teamName, setTeamId, setSearchValue}: Props) => { +const Initial = ({recentSearches, scrollEnabled, searchValue, setRecentValue, teamId, teamName, teams, setTeamId, setSearchValue}: Props) => { return ( <> {Boolean(recentSearches.length) && diff --git a/app/screens/home/search/initial/modifiers/index.tsx b/app/screens/home/search/initial/modifiers/index.tsx index 8f87d6c8c..348151c51 100644 --- a/app/screens/home/search/initial/modifiers/index.tsx +++ b/app/screens/home/search/initial/modifiers/index.tsx @@ -8,6 +8,7 @@ import Animated, {useSharedValue, useAnimatedStyle, withTiming} from 'react-nati import FormattedText from '@components/formatted_text'; import {useTheme} from '@context/theme'; +import {TeamModel} from '@database/models/server'; import TeamPickerIcon from '@screens/home/search/team_picker_icon'; import {makeStyleSheetFromTheme} from '@utils/theme'; import {typography} from '@utils/typography'; @@ -83,8 +84,9 @@ type Props = { searchValue?: string; setTeamId: (id: string) => void; teamId: string; + teams: TeamModel[]; } -const Modifiers = ({scrollEnabled, searchValue, setSearchValue, setTeamId, teamId}: Props) => { +const Modifiers = ({scrollEnabled, searchValue, setSearchValue, setTeamId, teamId, teams}: Props) => { const theme = useTheme(); const intl = useIntl(); @@ -142,11 +144,14 @@ const Modifiers = ({scrollEnabled, searchValue, setSearchValue, setTeamId, teamI id={'screen.search.modifier.header'} defaultMessage='Search options' /> + {teams.length > 1 && + } {data.map((item) => renderModifier(item))} diff --git a/app/screens/home/search/results/header.tsx b/app/screens/home/search/results/header.tsx index 96b60db49..0e2041dec 100644 --- a/app/screens/home/search/results/header.tsx +++ b/app/screens/home/search/results/header.tsx @@ -8,16 +8,16 @@ import {useSafeAreaInsets} from 'react-native-safe-area-context'; import Badge from '@components/badge'; import CompassIcon from '@components/compass_icon'; import {useTheme} from '@context/theme'; +import {TeamModel} from '@database/models/server'; import {useIsTablet} from '@hooks/device'; import {TITLE_SEPARATOR_MARGIN, TITLE_SEPARATOR_MARGIN_TABLET, TITLE_HEIGHT} from '@screens/bottom_sheet/content'; +import TeamPickerIcon from '@screens/home/search/team_picker_icon'; import {bottomSheet} from '@screens/navigation'; import {FileFilter, FileFilters} from '@utils/file'; import {bottomSheetSnapPoint} from '@utils/helpers'; import {TabTypes, TabType} from '@utils/search'; import {changeOpacity, makeStyleSheetFromTheme} from '@utils/theme'; -import TeamPickerIcon from '../team_picker_icon'; - import Filter, {DIVIDERS_HEIGHT, FILTER_ITEM_HEIGHT, NUMBER_FILTER_ITEMS} from './filter'; import SelectButton from './header_button'; @@ -30,6 +30,7 @@ type Props = { numberFiles: number; setTeamId: (id: string) => void; teamId: string; + teams: TeamModel[]; } const getStyleFromTheme = makeStyleSheetFromTheme((theme: Theme) => { @@ -50,7 +51,7 @@ const getStyleFromTheme = makeStyleSheetFromTheme((theme: Theme) => { paddingHorizontal: 12, flexDirection: 'row', }, - filter: { + iconsContainer: { alignItems: 'center', flexDirection: 'row', marginLeft: 'auto', @@ -67,6 +68,7 @@ const Header = ({ numberFiles, selectedTab, selectedFilter, + teams, }: Props) => { const theme = useTheme(); const styles = getStyleFromTheme(theme); @@ -118,6 +120,8 @@ const Header = ({ }); }, [selectedFilter]); + const filterStyle = useMemo(() => ({marginRight: teams.length > 1 ? 0 : 10}), [teams.length > 1]); + return ( @@ -131,11 +135,9 @@ const Header = ({ onPress={handleFilesPress} text={`${filesText} (${numberFiles})`} /> - + {showFilterIcon && - <> + - + } + {teams.length > 1 && + } diff --git a/app/screens/home/search/search.tsx b/app/screens/home/search/search.tsx index 93b982a22..a18af2302 100644 --- a/app/screens/home/search/search.tsx +++ b/app/screens/home/search/search.tsx @@ -20,6 +20,7 @@ import {SearchRef} from '@components/search'; import {BOTTOM_TAB_HEIGHT} from '@constants/view'; import {useServerUrl} from '@context/server'; import {useTheme} from '@context/theme'; +import {TeamModel} from '@database/models/server'; import {useKeyboardHeight} from '@hooks/device'; import useDidUpdate from '@hooks/did_update'; import {useCollapsibleHeader} from '@hooks/header'; @@ -45,6 +46,7 @@ const AutocompletePaddingTop = 4; type Props = { teamId: string; + teams: TeamModel[]; } const styles = StyleSheet.create({ @@ -71,7 +73,7 @@ const getSearchParams = (terms: string, filterValue?: FileFilter) => { const searchScreenIndex = 1; -const SearchScreen = ({teamId}: Props) => { +const SearchScreen = ({teamId, teams}: Props) => { const nav = useNavigation(); const isFocused = useIsFocused(); const intl = useIntl(); @@ -229,6 +231,7 @@ const SearchScreen = ({teamId}: Props) => { setSearchValue={handleModifierTextChange} setTeamId={setSearchTeamId} teamId={searchTeamId} + teams={teams} /> ); }, [handleRecentSearch, handleTextChange, loading, @@ -346,6 +349,7 @@ const SearchScreen = ({teamId}: Props) => { selectedTab={selectedTab} numberFiles={fileInfos.length} selectedFilter={filter} + teams={teams} /> } diff --git a/app/screens/home/search/team_picker_icon/search_team_slideup.tsx b/app/screens/home/search/select_team_slideup.tsx similarity index 100% rename from app/screens/home/search/team_picker_icon/search_team_slideup.tsx rename to app/screens/home/search/select_team_slideup.tsx diff --git a/app/screens/home/search/team_picker_icon/team_picker_icon.tsx b/app/screens/home/search/team_picker_icon.tsx similarity index 98% rename from app/screens/home/search/team_picker_icon/team_picker_icon.tsx rename to app/screens/home/search/team_picker_icon.tsx index 7119819b8..794dedc3d 100644 --- a/app/screens/home/search/team_picker_icon/team_picker_icon.tsx +++ b/app/screens/home/search/team_picker_icon.tsx @@ -15,7 +15,7 @@ import {preventDoubleTap} from '@utils/tap'; import {getTeamsSnapHeight} from '@utils/team_list'; import {changeOpacity, makeStyleSheetFromTheme} from '@utils/theme'; -import SelectTeamSlideUp from './search_team_slideup'; +import SelectTeamSlideUp from './select_team_slideup'; import type TeamModel from '@typings/database/models/servers/team'; diff --git a/app/screens/home/search/team_picker_icon/index.ts b/app/screens/home/search/team_picker_icon/index.ts deleted file mode 100644 index 1677da0e9..000000000 --- a/app/screens/home/search/team_picker_icon/index.ts +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. -// See LICENSE.txt for license information. - -import {withDatabase} from '@nozbe/watermelondb/DatabaseProvider'; -import withObservables from '@nozbe/with-observables'; - -import {queryJoinedTeams} from '@queries/servers/team'; - -import TeamPickerIcon from './team_picker_icon'; - -import type {WithDatabaseArgs} from '@typings/database/database'; - -const enhanced = withObservables([], ({database}: WithDatabaseArgs) => { - const teams = queryJoinedTeams(database).observe(); - return { - teams, - }; -}); - -export default withDatabase(enhanced(TeamPickerIcon));