@planningcenter/chat-react-native 4.4.1-qa-staging.16 → 4.4.1-qa-staging.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/components/conversations/conversations.d.ts.map +1 -1
- package/build/components/conversations/conversations.js +55 -39
- package/build/components/conversations/conversations.js.map +1 -1
- package/build/components/conversations/conversations_blank_state.d.ts.map +1 -1
- package/build/components/conversations/conversations_blank_state.js +55 -12
- package/build/components/conversations/conversations_blank_state.js.map +1 -1
- package/build/components/conversations/filtered_results_footer.d.ts +2 -0
- package/build/components/conversations/filtered_results_footer.d.ts.map +1 -0
- package/build/components/conversations/filtered_results_footer.js +77 -0
- package/build/components/conversations/filtered_results_footer.js.map +1 -0
- package/build/hooks/use_clear_conversation_filters.d.ts +2 -0
- package/build/hooks/use_clear_conversation_filters.d.ts.map +1 -0
- package/build/hooks/use_clear_conversation_filters.js +24 -0
- package/build/hooks/use_clear_conversation_filters.js.map +1 -0
- package/build/hooks/use_reduce_motion.d.ts.map +1 -1
- package/build/hooks/use_reduce_motion.js +2 -1
- package/build/hooks/use_reduce_motion.js.map +1 -1
- package/build/screens/conversation_filters/components/conversation_filters.d.ts.map +1 -1
- package/build/screens/conversation_filters/components/conversation_filters.js +8 -5
- package/build/screens/conversation_filters/components/conversation_filters.js.map +1 -1
- package/build/screens/conversation_filters_screen.d.ts.map +1 -1
- package/build/screens/conversation_filters_screen.js +47 -42
- package/build/screens/conversation_filters_screen.js.map +1 -1
- package/package.json +3 -3
- package/src/__tests__/screens/conversation_filters/components/conversation_filters.test.tsx +129 -0
- package/src/__tests__/screens/conversation_new/components/services_form.test.tsx +1 -0
- package/src/components/conversations/__tests__/conversations_blank_state.test.tsx +72 -0
- package/src/components/conversations/conversations.tsx +13 -2
- package/src/components/conversations/conversations_blank_state.tsx +21 -0
- package/src/components/conversations/filtered_results_footer.tsx +38 -0
- package/src/hooks/__tests__/use_reduce_motion.test.tsx +13 -1
- package/src/hooks/use_clear_conversation_filters.ts +15 -0
- package/src/hooks/use_reduce_motion.ts +2 -1
- package/src/screens/conversation_filters/components/conversation_filters.tsx +8 -5
- package/src/screens/conversation_filters_screen.tsx +5 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation_filters.js","names":["React","useContext","useMemo","StyleSheet","View","FlatList","Heading","useAtFontScaleBreakpoint","useDirectMessagesEligible","useHasDirectMessages","useTheme","FilterContext","useFilterContext","FilterTypes","useGroupsToFilter","useTeamsToFilter","FilterRow","GroupRow","TeamRow","ViewMore","jsx","_jsx","SectionTypes","ConversationFilters","$","_c","styles","useStyles","setScrollOffset","params","chat_group_graph_id","group_source_app_name","t0","show_direct_messages","undefined","directMessagesEligible","hasDirectMessages","canFilterByDMs","t1","bb0","More","test","Groups","Teams","DirectMessages","All","activeFilter","groups","t2","teams","t3","activeGroupId","isExactGroupFilter","t4","team","type","data","isActive","id","toString","teamItems","map","t5","group","groupItems","groupItemData","selectActiveWithFirst","teamItemData","hideAppFilters","length","showGeneralFilters","t6","header","hidden","t7","Symbol","for","title","t8","t9","filter","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","t23","t24","t25","t26","extraHeaderScalableSpace","style","t27","t28","more","t29","routeName","t30","t31","t32","t33","t34","t35","t36","listData","t37","e","nativeEvent","contentOffset","y","contentContainerStyle","flatlistContainer","nestedScrollEnabled","onScroll","renderItem","_temp","platformListPaddingBottom","theme","atFontScaleBreakpoint","colors","fillColorNeutral100Inverted","create","paddingBottom","sectionHeader","flexDirection","justifyContent","paddingTop","paddingHorizontal","marginTop","filterBar","backgroundColor","alignItems","paddingVertical","gap","filterBarScroll","elevation","boxShadow","filterBarActions","Header","variant","children","number","activeGroupIndex","findIndex","activeGroup","slice","item"],"sources":["../../../../src/screens/conversation_filters/components/conversation_filters.tsx"],"sourcesContent":["import React, { useContext, useMemo } from 'react'\nimport { StyleSheet, View, ViewStyle } from 'react-native'\nimport { FlatList } from 'react-native-gesture-handler'\nimport { Heading } from '../../../components'\nimport {\n useAtFontScaleBreakpoint,\n useDirectMessagesEligible,\n useHasDirectMessages,\n useTheme,\n} from '../../../hooks'\nimport { FilterContext, useFilterContext } from '../context/conversation_filter_context'\nimport { FilterTypes } from '../filter_types'\nimport { useGroupsToFilter, useTeamsToFilter } from '../hooks/filters'\nimport {\n FilterProps,\n FilterRow,\n GroupRow,\n GroupRowProps,\n TeamRow,\n TeamRowProps,\n ViewMore,\n ViewMoreRowProps,\n} from './rows'\n\n// =========================================\n// ====== Factory Constants & Types ========\n// =========================================\n\nenum SectionTypes {\n filter,\n groups,\n header,\n hidden,\n more,\n teams,\n}\n\ntype SectionListData = Array<\n | DataItem<FilterProps, SectionTypes.filter>\n | DataItem<GroupRowProps, SectionTypes.groups>\n | DataItem<HeaderProps, SectionTypes.header>\n | DataItem<any, SectionTypes.hidden>\n | DataItem<ViewMoreRowProps, SectionTypes.more>\n | DataItem<TeamRowProps, SectionTypes.teams>\n>\n\ninterface DataItem<T, TName extends SectionTypes> {\n type: TName\n data: T\n sectionStyle?: ViewStyle\n}\n\n// =================================\n// ====== Components ===============\n// =================================\n\nexport const ConversationFilters = () => {\n const styles = useStyles()\n const { setScrollOffset, params } = useContext(FilterContext)\n const { chat_group_graph_id, group_source_app_name = '', show_direct_messages } = params\n\n const directMessagesEligible = useDirectMessagesEligible()\n const hasDirectMessages = useHasDirectMessages()\n const canFilterByDMs = directMessagesEligible && hasDirectMessages\n\n const activeFilter: FilterTypes = useMemo(() => {\n if (chat_group_graph_id) {\n return FilterTypes.More\n } else if (/groups/i.test(group_source_app_name)) {\n return FilterTypes.Groups\n } else if (/services/i.test(group_source_app_name)) {\n return FilterTypes.Teams\n } else if (show_direct_messages) {\n return FilterTypes.DirectMessages\n }\n\n return FilterTypes.All\n }, [chat_group_graph_id, group_source_app_name, show_direct_messages])\n\n const { groups = [] } = useGroupsToFilter()\n const { teams = [] } = useTeamsToFilter()\n\n const activeGroupId = chat_group_graph_id\n const isExactGroupFilter = activeFilter === FilterTypes.More\n\n const teamItems: DataItem<TeamRowProps, SectionTypes.teams>[] = teams.map(team => ({\n type: SectionTypes.teams,\n data: {\n team,\n isActive: isExactGroupFilter && team.id.toString() === activeGroupId,\n },\n }))\n\n const groupItems: DataItem<GroupRowProps, SectionTypes.groups>[] = groups.map(group => ({\n type: SectionTypes.groups,\n data: {\n group,\n isActive: isExactGroupFilter && group?.id.toString() === activeGroupId,\n },\n }))\n const groupItemData = selectActiveWithFirst(5)(groupItems)\n const teamItemData = selectActiveWithFirst(5)(teamItems)\n\n const hideAppFilters = groupItems.length < 1 || teamItems.length < 1\n const showGeneralFilters = !hideAppFilters || canFilterByDMs\n\n const listData: SectionListData = [\n {\n type: showGeneralFilters ? SectionTypes.header : SectionTypes.hidden,\n data: { title: 'General Filters' },\n },\n {\n type: showGeneralFilters ? SectionTypes.filter : SectionTypes.hidden,\n data: { filter: FilterTypes.All, isActive: activeFilter === FilterTypes.All },\n },\n {\n type: hideAppFilters ? SectionTypes.hidden : SectionTypes.filter,\n data: {\n filter: FilterTypes.Groups,\n group_source_app_name: 'groups',\n isActive: activeFilter === FilterTypes.Groups,\n },\n },\n {\n type: hideAppFilters ? SectionTypes.hidden : SectionTypes.filter,\n data: {\n filter: FilterTypes.Teams,\n group_source_app_name: 'services',\n isActive: activeFilter === FilterTypes.Teams,\n },\n },\n {\n type: canFilterByDMs ? SectionTypes.filter : SectionTypes.hidden,\n data: {\n filter: FilterTypes.DirectMessages,\n show_direct_messages: true,\n isActive: activeFilter === FilterTypes.DirectMessages,\n },\n },\n {\n type: groupItems.length ? SectionTypes.header : SectionTypes.hidden,\n data: { title: 'Groups', style: styles.extraHeaderScalableSpace },\n },\n ...groupItemData,\n {\n type: groupItems.length > 5 ? SectionTypes.more : SectionTypes.hidden,\n data: { routeName: 'GroupFilters' },\n },\n {\n type: teamItems.length ? SectionTypes.header : SectionTypes.hidden,\n data: { title: 'Teams', style: styles.extraHeaderScalableSpace },\n },\n ...teamItemData,\n {\n type: teamItems.length > 5 ? SectionTypes.more : SectionTypes.hidden,\n data: { routeName: 'TeamFilters' },\n },\n ]\n\n return (\n <FlatList\n data={listData}\n contentContainerStyle={styles.flatlistContainer}\n nestedScrollEnabled={true}\n onScroll={e => setScrollOffset(e.nativeEvent.contentOffset.y)}\n renderItem={({ item }) => {\n switch (item.type) {\n case SectionTypes.header:\n return <Header {...item.data} />\n case SectionTypes.filter:\n return <FilterRow {...item.data} />\n case SectionTypes.groups:\n return <GroupRow {...item.data} />\n case SectionTypes.teams:\n return <TeamRow {...item.data} />\n case SectionTypes.more:\n return <ViewMore {...item.data} />\n default:\n return null\n }\n }}\n />\n )\n}\n\nconst useStyles = () => {\n const { platformListPaddingBottom } = useFilterContext()\n const theme = useTheme()\n const atFontScaleBreakpoint = useAtFontScaleBreakpoint()\n\n return StyleSheet.create({\n flatlistContainer: {\n paddingBottom: platformListPaddingBottom,\n },\n sectionHeader: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n paddingTop: 24,\n paddingBottom: 8,\n paddingHorizontal: 16,\n },\n extraHeaderScalableSpace: {\n marginTop: atFontScaleBreakpoint ? 24 : 0,\n },\n filterBar: {\n backgroundColor: theme.colors.fillColorNeutral100Inverted,\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n paddingHorizontal: 16,\n paddingVertical: 16,\n gap: 8,\n },\n filterBarScroll: {\n elevation: 4,\n boxShadow: '0px 4px 4px rgba(0, 0, 0, 0.1)',\n },\n filterBarActions: {\n flexDirection: 'row',\n gap: 8,\n alignItems: 'center',\n },\n })\n}\n\ntype HeaderProps = {\n title: string\n style?: ViewStyle\n}\n\nconst Header = ({ title, style = {} }: HeaderProps) => {\n const styles = useStyles()\n\n return (\n <View style={[styles.sectionHeader, style]}>\n <Heading variant=\"h3\">{title}</Heading>\n </View>\n )\n}\n\ntype GroupSectionType =\n | DataItem<TeamRowProps, SectionTypes.teams>\n | DataItem<GroupRowProps, SectionTypes.groups>\n\nconst selectActiveWithFirst =\n (number: number) =>\n <T extends GroupSectionType>(groups: T[]): T[] => {\n const activeGroupIndex = groups.findIndex(group => group.data.isActive)\n const activeGroup = groups[activeGroupIndex]\n\n if (!activeGroup || activeGroupIndex <= number) {\n return groups.slice(0, number)\n }\n\n return [activeGroup, ...groups].slice(0, number)\n }\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"conversation_filters.js","names":["React","useContext","useMemo","StyleSheet","View","FlatList","Heading","useAtFontScaleBreakpoint","useDirectMessagesEligible","useHasDirectMessages","useTheme","useFilterDropdownEnabled","FilterContext","useFilterContext","FilterTypes","useGroupsToFilter","useTeamsToFilter","FilterRow","GroupRow","TeamRow","ViewMore","jsx","_jsx","SectionTypes","ConversationFilters","$","_c","styles","useStyles","setScrollOffset","params","chat_group_graph_id","group_source_app_name","t0","show_direct_messages","undefined","filterDropdownEnabled","directMessagesEligible","hasDirectMessages","canFilterByDMs","t1","bb0","More","test","Groups","Teams","DirectMessages","All","activeFilter","groups","t2","teams","t3","activeGroupId","isExactGroupFilter","t4","team","type","data","isActive","id","toString","teamItems","map","t5","group","groupItems","groupItemData","selectActiveWithFirst","teamItemData","showAppFilters","length","showDMFilter","showGeneralFilters","t6","header","hidden","t7","Symbol","for","title","t8","t9","filter","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","t23","t24","t25","t26","extraHeaderScalableSpace","style","t27","t28","more","t29","routeName","t30","t31","t32","t33","t34","t35","t36","listData","t37","e","nativeEvent","contentOffset","y","contentContainerStyle","flatlistContainer","nestedScrollEnabled","onScroll","renderItem","_temp","platformListPaddingBottom","theme","atFontScaleBreakpoint","colors","fillColorNeutral100Inverted","create","paddingBottom","sectionHeader","flexDirection","justifyContent","paddingTop","paddingHorizontal","marginTop","filterBar","backgroundColor","alignItems","paddingVertical","gap","filterBarScroll","elevation","boxShadow","filterBarActions","Header","variant","children","number","activeGroupIndex","findIndex","activeGroup","slice","item"],"sources":["../../../../src/screens/conversation_filters/components/conversation_filters.tsx"],"sourcesContent":["import React, { useContext, useMemo } from 'react'\nimport { StyleSheet, View, ViewStyle } from 'react-native'\nimport { FlatList } from 'react-native-gesture-handler'\nimport { Heading } from '../../../components'\nimport {\n useAtFontScaleBreakpoint,\n useDirectMessagesEligible,\n useHasDirectMessages,\n useTheme,\n} from '../../../hooks'\nimport { useFilterDropdownEnabled } from '../../../hooks/use_filter_dropdown_enabled'\nimport { FilterContext, useFilterContext } from '../context/conversation_filter_context'\nimport { FilterTypes } from '../filter_types'\nimport { useGroupsToFilter, useTeamsToFilter } from '../hooks/filters'\nimport {\n FilterProps,\n FilterRow,\n GroupRow,\n GroupRowProps,\n TeamRow,\n TeamRowProps,\n ViewMore,\n ViewMoreRowProps,\n} from './rows'\n\n// =========================================\n// ====== Factory Constants & Types ========\n// =========================================\n\nenum SectionTypes {\n filter,\n groups,\n header,\n hidden,\n more,\n teams,\n}\n\ntype SectionListData = Array<\n | DataItem<FilterProps, SectionTypes.filter>\n | DataItem<GroupRowProps, SectionTypes.groups>\n | DataItem<HeaderProps, SectionTypes.header>\n | DataItem<any, SectionTypes.hidden>\n | DataItem<ViewMoreRowProps, SectionTypes.more>\n | DataItem<TeamRowProps, SectionTypes.teams>\n>\n\ninterface DataItem<T, TName extends SectionTypes> {\n type: TName\n data: T\n sectionStyle?: ViewStyle\n}\n\n// =================================\n// ====== Components ===============\n// =================================\n\nexport const ConversationFilters = () => {\n const styles = useStyles()\n const { setScrollOffset, params } = useContext(FilterContext)\n const { chat_group_graph_id, group_source_app_name = '', show_direct_messages } = params\n\n const filterDropdownEnabled = useFilterDropdownEnabled()\n const directMessagesEligible = useDirectMessagesEligible()\n const hasDirectMessages = useHasDirectMessages()\n const canFilterByDMs = directMessagesEligible && hasDirectMessages\n\n const activeFilter: FilterTypes = useMemo(() => {\n if (chat_group_graph_id) {\n return FilterTypes.More\n } else if (/groups/i.test(group_source_app_name)) {\n return FilterTypes.Groups\n } else if (/services/i.test(group_source_app_name)) {\n return FilterTypes.Teams\n } else if (show_direct_messages) {\n return FilterTypes.DirectMessages\n }\n\n return FilterTypes.All\n }, [chat_group_graph_id, group_source_app_name, show_direct_messages])\n\n const { groups = [] } = useGroupsToFilter()\n const { teams = [] } = useTeamsToFilter()\n\n const activeGroupId = chat_group_graph_id\n const isExactGroupFilter = activeFilter === FilterTypes.More\n\n const teamItems: DataItem<TeamRowProps, SectionTypes.teams>[] = teams.map(team => ({\n type: SectionTypes.teams,\n data: {\n team,\n isActive: isExactGroupFilter && team.id.toString() === activeGroupId,\n },\n }))\n\n const groupItems: DataItem<GroupRowProps, SectionTypes.groups>[] = groups.map(group => ({\n type: SectionTypes.groups,\n data: {\n group,\n isActive: isExactGroupFilter && group?.id.toString() === activeGroupId,\n },\n }))\n const groupItemData = selectActiveWithFirst(5)(groupItems)\n const teamItemData = selectActiveWithFirst(5)(teamItems)\n\n const showAppFilters = !filterDropdownEnabled && groupItems.length > 0 && teamItems.length > 0\n const showDMFilter = !filterDropdownEnabled && canFilterByDMs\n const showGeneralFilters = showAppFilters || showDMFilter\n\n const listData: SectionListData = [\n {\n type: showGeneralFilters ? SectionTypes.header : SectionTypes.hidden,\n data: { title: 'General Filters' },\n },\n {\n type: showGeneralFilters ? SectionTypes.filter : SectionTypes.hidden,\n data: { filter: FilterTypes.All, isActive: activeFilter === FilterTypes.All },\n },\n {\n type: showAppFilters ? SectionTypes.filter : SectionTypes.hidden,\n data: {\n filter: FilterTypes.Groups,\n group_source_app_name: 'groups',\n isActive: activeFilter === FilterTypes.Groups,\n },\n },\n {\n type: showAppFilters ? SectionTypes.filter : SectionTypes.hidden,\n data: {\n filter: FilterTypes.Teams,\n group_source_app_name: 'services',\n isActive: activeFilter === FilterTypes.Teams,\n },\n },\n {\n type: showDMFilter ? SectionTypes.filter : SectionTypes.hidden,\n data: {\n filter: FilterTypes.DirectMessages,\n show_direct_messages: true,\n isActive: activeFilter === FilterTypes.DirectMessages,\n },\n },\n {\n type: groupItems.length ? SectionTypes.header : SectionTypes.hidden,\n data: { title: 'Groups', style: styles.extraHeaderScalableSpace },\n },\n ...groupItemData,\n {\n type: groupItems.length > 5 ? SectionTypes.more : SectionTypes.hidden,\n data: { routeName: 'GroupFilters' },\n },\n {\n type: teamItems.length ? SectionTypes.header : SectionTypes.hidden,\n data: { title: 'Teams', style: styles.extraHeaderScalableSpace },\n },\n ...teamItemData,\n {\n type: teamItems.length > 5 ? SectionTypes.more : SectionTypes.hidden,\n data: { routeName: 'TeamFilters' },\n },\n ]\n\n return (\n <FlatList\n data={listData}\n contentContainerStyle={styles.flatlistContainer}\n nestedScrollEnabled={true}\n onScroll={e => setScrollOffset(e.nativeEvent.contentOffset.y)}\n renderItem={({ item }) => {\n switch (item.type) {\n case SectionTypes.header:\n return <Header {...item.data} />\n case SectionTypes.filter:\n return <FilterRow {...item.data} />\n case SectionTypes.groups:\n return <GroupRow {...item.data} />\n case SectionTypes.teams:\n return <TeamRow {...item.data} />\n case SectionTypes.more:\n return <ViewMore {...item.data} />\n default:\n return null\n }\n }}\n />\n )\n}\n\nconst useStyles = () => {\n const { platformListPaddingBottom } = useFilterContext()\n const theme = useTheme()\n const atFontScaleBreakpoint = useAtFontScaleBreakpoint()\n\n return StyleSheet.create({\n flatlistContainer: {\n paddingBottom: platformListPaddingBottom,\n },\n sectionHeader: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n paddingTop: 24,\n paddingBottom: 8,\n paddingHorizontal: 16,\n },\n extraHeaderScalableSpace: {\n marginTop: atFontScaleBreakpoint ? 24 : 0,\n },\n filterBar: {\n backgroundColor: theme.colors.fillColorNeutral100Inverted,\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n paddingHorizontal: 16,\n paddingVertical: 16,\n gap: 8,\n },\n filterBarScroll: {\n elevation: 4,\n boxShadow: '0px 4px 4px rgba(0, 0, 0, 0.1)',\n },\n filterBarActions: {\n flexDirection: 'row',\n gap: 8,\n alignItems: 'center',\n },\n })\n}\n\ntype HeaderProps = {\n title: string\n style?: ViewStyle\n}\n\nconst Header = ({ title, style = {} }: HeaderProps) => {\n const styles = useStyles()\n\n return (\n <View style={[styles.sectionHeader, style]}>\n <Heading variant=\"h3\">{title}</Heading>\n </View>\n )\n}\n\ntype GroupSectionType =\n | DataItem<TeamRowProps, SectionTypes.teams>\n | DataItem<GroupRowProps, SectionTypes.groups>\n\nconst selectActiveWithFirst =\n (number: number) =>\n <T extends GroupSectionType>(groups: T[]): T[] => {\n const activeGroupIndex = groups.findIndex(group => group.data.isActive)\n const activeGroup = groups[activeGroupIndex]\n\n if (!activeGroup || activeGroupIndex <= number) {\n return groups.slice(0, number)\n }\n\n return [activeGroup, ...groups].slice(0, number)\n }\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation_filters_screen.d.ts","sourceRoot":"","sources":["../../src/screens/conversation_filters_screen.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"conversation_filters_screen.d.ts","sourceRoot":"","sources":["../../src/screens/conversation_filters_screen.tsx"],"names":[],"mappings":"AAeA,OAAO,EACL,8BAA8B,EAE/B,MAAM,qCAAqC,CAAA;AAG5C,eAAO,MAAM,gCAAgC,6EAO3C,CAAA;AAuDF,eAAO,MAAM,yBAAyB,GAAI,QAAQ,8BAA8B,4CAW/E,CAAA"}
|
|
@@ -7,6 +7,7 @@ import React, { useCallback } from 'react';
|
|
|
7
7
|
import { Platform, StyleSheet, useWindowDimensions, View } from 'react-native';
|
|
8
8
|
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
9
9
|
import FormSheet, { getFormSheetScreenOptions } from '../components/primitive/form_sheet';
|
|
10
|
+
import { useFilterDropdownEnabled } from '../hooks/use_filter_dropdown_enabled';
|
|
10
11
|
import { ConversationFilters } from './conversation_filters/components/conversation_filters';
|
|
11
12
|
import { FilterProvider, useFilterContext } from './conversation_filters/context/conversation_filter_context';
|
|
12
13
|
import { GroupFilters } from './conversation_filters/group_filters';
|
|
@@ -100,13 +101,14 @@ export const ConversationFiltersScreen = _props => {
|
|
|
100
101
|
return t2;
|
|
101
102
|
};
|
|
102
103
|
const FormSheetHeaderWithContext = () => {
|
|
103
|
-
const $ = _c(
|
|
104
|
+
const $ = _c(19);
|
|
104
105
|
const {
|
|
105
106
|
resetFilter,
|
|
106
107
|
applyFilters,
|
|
107
108
|
setFormSheetHeaderHeight
|
|
108
109
|
} = useFilterContext();
|
|
109
110
|
const route = useRoute();
|
|
111
|
+
const filterDropdownEnabled = useFilterDropdownEnabled();
|
|
110
112
|
const styles = useStyles();
|
|
111
113
|
let t0;
|
|
112
114
|
if ($[0] !== setFormSheetHeaderHeight) {
|
|
@@ -119,74 +121,77 @@ const FormSheetHeaderWithContext = () => {
|
|
|
119
121
|
t0 = $[1];
|
|
120
122
|
}
|
|
121
123
|
const handleFormSheetHeaderLayout = t0;
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
124
|
+
const t1 = filterDropdownEnabled ? "More filters" : "Filters";
|
|
125
|
+
let t2;
|
|
126
|
+
if ($[2] !== t1) {
|
|
127
|
+
t2 = /*#__PURE__*/_jsx(FormSheet.HeaderTitle, {
|
|
128
|
+
children: t1
|
|
126
129
|
});
|
|
127
130
|
$[2] = t1;
|
|
131
|
+
$[3] = t2;
|
|
128
132
|
} else {
|
|
129
|
-
|
|
133
|
+
t2 = $[3];
|
|
130
134
|
}
|
|
131
|
-
let
|
|
132
|
-
if ($[
|
|
133
|
-
|
|
135
|
+
let t3;
|
|
136
|
+
if ($[4] !== resetFilter) {
|
|
137
|
+
t3 = /*#__PURE__*/_jsx(FormSheet.HeaderTextButton, {
|
|
134
138
|
onPress: resetFilter,
|
|
135
139
|
children: "Reset"
|
|
136
140
|
});
|
|
137
|
-
$[
|
|
138
|
-
$[
|
|
141
|
+
$[4] = resetFilter;
|
|
142
|
+
$[5] = t3;
|
|
139
143
|
} else {
|
|
140
|
-
|
|
144
|
+
t3 = $[5];
|
|
141
145
|
}
|
|
142
|
-
let
|
|
143
|
-
if ($[
|
|
144
|
-
|
|
146
|
+
let t4;
|
|
147
|
+
if ($[6] !== applyFilters || $[7] !== route.params) {
|
|
148
|
+
t4 = /*#__PURE__*/_jsx(FormSheet.HeaderButton, {
|
|
145
149
|
title: "Apply",
|
|
146
150
|
onPress: () => applyFilters(route.params)
|
|
147
151
|
});
|
|
148
|
-
$[
|
|
149
|
-
$[
|
|
150
|
-
$[
|
|
152
|
+
$[6] = applyFilters;
|
|
153
|
+
$[7] = route.params;
|
|
154
|
+
$[8] = t4;
|
|
151
155
|
} else {
|
|
152
|
-
|
|
156
|
+
t4 = $[8];
|
|
153
157
|
}
|
|
154
|
-
let
|
|
155
|
-
if ($[
|
|
156
|
-
|
|
157
|
-
children: [
|
|
158
|
+
let t5;
|
|
159
|
+
if ($[9] !== t3 || $[10] !== t4) {
|
|
160
|
+
t5 = /*#__PURE__*/_jsxs(FormSheet.HeaderActions, {
|
|
161
|
+
children: [t3, t4]
|
|
158
162
|
});
|
|
159
|
-
$[8] = t2;
|
|
160
163
|
$[9] = t3;
|
|
161
164
|
$[10] = t4;
|
|
165
|
+
$[11] = t5;
|
|
162
166
|
} else {
|
|
163
|
-
|
|
167
|
+
t5 = $[11];
|
|
164
168
|
}
|
|
165
|
-
let
|
|
166
|
-
if ($[
|
|
167
|
-
|
|
169
|
+
let t6;
|
|
170
|
+
if ($[12] !== styles.header || $[13] !== t2 || $[14] !== t5) {
|
|
171
|
+
t6 = /*#__PURE__*/_jsxs(FormSheet.Header, {
|
|
168
172
|
style: styles.header,
|
|
169
|
-
children: [
|
|
173
|
+
children: [t2, t5]
|
|
170
174
|
});
|
|
171
|
-
$[
|
|
172
|
-
$[
|
|
173
|
-
$[
|
|
175
|
+
$[12] = styles.header;
|
|
176
|
+
$[13] = t2;
|
|
177
|
+
$[14] = t5;
|
|
178
|
+
$[15] = t6;
|
|
174
179
|
} else {
|
|
175
|
-
|
|
180
|
+
t6 = $[15];
|
|
176
181
|
}
|
|
177
|
-
let
|
|
178
|
-
if ($[
|
|
179
|
-
|
|
182
|
+
let t7;
|
|
183
|
+
if ($[16] !== handleFormSheetHeaderLayout || $[17] !== t6) {
|
|
184
|
+
t7 = /*#__PURE__*/_jsx(View, {
|
|
180
185
|
onLayout: handleFormSheetHeaderLayout,
|
|
181
|
-
children:
|
|
186
|
+
children: t6
|
|
182
187
|
});
|
|
183
|
-
$[
|
|
184
|
-
$[
|
|
185
|
-
$[
|
|
188
|
+
$[16] = handleFormSheetHeaderLayout;
|
|
189
|
+
$[17] = t6;
|
|
190
|
+
$[18] = t7;
|
|
186
191
|
} else {
|
|
187
|
-
|
|
192
|
+
t7 = $[18];
|
|
188
193
|
}
|
|
189
|
-
return
|
|
194
|
+
return t7;
|
|
190
195
|
};
|
|
191
196
|
const useStyles = () => {
|
|
192
197
|
const $ = _c(4);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation_filters_screen.js","names":["useHeaderHeight","ReactNavigationNative","useRoute","createNativeStackNavigator","React","useCallback","Platform","StyleSheet","useWindowDimensions","View","useSafeAreaInsets","FormSheet","getFormSheetScreenOptions","ConversationFilters","FilterProvider","useFilterContext","GroupFilters","TeamFilters","jsx","_jsx","jsxs","_jsxs","ConversationFiltersScreenOptions","presentation","select","android","ios","sheetAllowedDetents","default","headerTitle","FilterNavigator","initialRouteName","screens","Filters","screen","options","headerShown","headerBackTitle","createStaticNavigationComponent","tree","name","getComponent","createComponentForStaticNavigation","ConversationFiltersScreen","_props","$","_c","styles","useStyles","t0","t1","Symbol","for","FormSheetHeaderWithContext","t2","contentContainer","children","Root","contentStyle","showAndroidSheetGrabber","resetFilter","applyFilters","setFormSheetHeaderHeight","route","event","nativeEvent","layout","height","handleFormSheetHeaderLayout","HeaderTitle","HeaderTextButton","t3","params","HeaderButton","title","onPress","t4","HeaderActions","t5","header","Header","style","t6","top","headerHeight","containerHeight","create","paddingTop","borderBottomWidth"],"sources":["../../src/screens/conversation_filters_screen.tsx"],"sourcesContent":["import { useHeaderHeight } from '@react-navigation/elements'\nimport * as ReactNavigationNative from '@react-navigation/native'\nimport { RouteProp, useRoute } from '@react-navigation/native'\nimport { createNativeStackNavigator } from '@react-navigation/native-stack'\nimport React, { useCallback } from 'react'\nimport { LayoutChangeEvent, Platform, StyleSheet, useWindowDimensions, View } from 'react-native'\nimport { useSafeAreaInsets } from 'react-native-safe-area-context'\nimport FormSheet, { getFormSheetScreenOptions } from '../components/primitive/form_sheet'\nimport { ConversationFilters } from './conversation_filters/components/conversation_filters'\nimport {\n FilterProvider,\n useFilterContext,\n} from './conversation_filters/context/conversation_filter_context'\nimport { GroupFilters } from './conversation_filters/group_filters'\nimport {\n ConversationFiltersScreenProps,\n ConversationFilterStackParamList,\n} from './conversation_filters/screen_props'\nimport { TeamFilters } from './conversation_filters/team_filters'\n\nexport const ConversationFiltersScreenOptions = getFormSheetScreenOptions({\n presentation: Platform.select({ android: 'modal', ios: 'formSheet' }),\n sheetAllowedDetents: Platform.select({\n ios: [0.75, 1],\n default: [1],\n }),\n headerTitle: 'Filters',\n})\n\nconst FilterNavigator = createNativeStackNavigator<ConversationFilterStackParamList>({\n initialRouteName: 'Filters',\n screens: {\n Filters: {\n screen: ConversationFilters,\n options: {\n headerShown: false,\n },\n },\n GroupFilters: {\n screen: GroupFilters,\n options: {\n headerTitle: Platform.select({\n android: 'Groups',\n ios: '',\n }),\n headerBackTitle: 'Groups',\n },\n },\n TeamFilters: {\n screen: TeamFilters,\n options: {\n headerTitle: Platform.select({\n android: 'Teams',\n ios: '',\n }),\n headerBackTitle: 'Teams',\n },\n },\n },\n})\n\n// tree.getComponent() doesn't exist on every host's installed\n// react-navigation/core — hosts on an older version would throw here.\n// Where it does exist, it's the real implementation (the \"deprecated\"\n// createComponentForStaticNavigation is just a console.warn wrapper around\n// the same call on current versions), so prefer it and only reach for the\n// old function on cores where getComponent() genuinely isn't there yet.\nfunction createStaticNavigationComponent<P extends object>(\n tree: { getComponent?: () => React.ComponentType<P> },\n name: string\n): React.ComponentType<P> {\n if (typeof tree.getComponent === 'function') return tree.getComponent()\n\n const { createComponentForStaticNavigation } = ReactNavigationNative as {\n createComponentForStaticNavigation: (tree: unknown, name: string) => React.ComponentType<P>\n }\n\n return createComponentForStaticNavigation(tree, name)\n}\n\nconst Filters = createStaticNavigationComponent(FilterNavigator, 'Filters')\n\nexport const ConversationFiltersScreen = (_props: ConversationFiltersScreenProps) => {\n const styles = useStyles()\n\n return (\n <FilterProvider>\n <FormSheet.Root contentStyle={styles.contentContainer} showAndroidSheetGrabber={false}>\n <FormSheetHeaderWithContext />\n <Filters />\n </FormSheet.Root>\n </FilterProvider>\n )\n}\n\nconst FormSheetHeaderWithContext = () => {\n const { resetFilter, applyFilters, setFormSheetHeaderHeight } = useFilterContext()\n const route = useRoute<RouteProp<ConversationFiltersScreenProps['route']>>()\n const styles = useStyles()\n\n const handleFormSheetHeaderLayout = useCallback(\n (event: LayoutChangeEvent) => {\n setFormSheetHeaderHeight(event.nativeEvent.layout.height)\n },\n [setFormSheetHeaderHeight]\n )\n\n return (\n <View onLayout={handleFormSheetHeaderLayout}>\n <FormSheet.Header style={styles.header}>\n <FormSheet.HeaderTitle>Filters</FormSheet.HeaderTitle>\n <FormSheet.HeaderActions>\n <FormSheet.HeaderTextButton onPress={resetFilter}>Reset</FormSheet.HeaderTextButton>\n <FormSheet.HeaderButton title=\"Apply\" onPress={() => applyFilters(route.params)} />\n </FormSheet.HeaderActions>\n </FormSheet.Header>\n </View>\n )\n}\n\nconst useStyles = () => {\n const { top } = useSafeAreaInsets()\n const { height } = useWindowDimensions()\n const headerHeight = useHeaderHeight()\n\n const containerHeight = Platform.select({\n android: height,\n ios: height - top - headerHeight,\n })\n\n return StyleSheet.create({\n contentContainer: {\n height: containerHeight,\n },\n header: {\n paddingTop: Platform.select({\n ios: 20,\n android: 20 + top,\n }),\n // The filter list scrolls under it, so the sheet header doesn't need a\n // separator the way the non-scrolling reaction sheet does.\n borderBottomWidth: 0,\n },\n })\n}\n"],"mappings":";AAAA,SAASA,eAAe,QAAQ,4BAA4B;AAC5D,OAAO,KAAKC,qBAAqB,MAAM,0BAA0B;AACjE,SAAoBC,QAAQ,QAAQ,0BAA0B;AAC9D,SAASC,0BAA0B,QAAQ,gCAAgC;AAC3E,OAAOC,KAAK,IAAIC,WAAW,QAAQ,OAAO;AAC1C,SAA4BC,QAAQ,EAAEC,UAAU,EAAEC,mBAAmB,EAAEC,IAAI,QAAQ,cAAc;AACjG,SAASC,iBAAiB,QAAQ,gCAAgC;AAClE,OAAOC,SAAS,IAAIC,yBAAyB,QAAQ,oCAAoC;AACzF,SAASC,mBAAmB,QAAQ,wDAAwD;AAC5F,SACEC,cAAc,EACdC,gBAAgB,QACX,4DAA4D;AACnE,SAASC,YAAY,QAAQ,sCAAsC;AAKnE,SAASC,WAAW,QAAQ,qCAAqC;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAEjE,OAAO,MAAMC,gCAAgC,GAAGV,yBAAyB,CAAC;EACxEW,YAAY,EAAEjB,QAAQ,CAACkB,MAAM,CAAC;IAAEC,OAAO,EAAE,OAAO;IAAEC,GAAG,EAAE;EAAY,CAAC,CAAC;EACrEC,mBAAmB,EAAErB,QAAQ,CAACkB,MAAM,CAAC;IACnCE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;IACdE,OAAO,EAAE,CAAC,CAAC;EACb,CAAC,CAAC;EACFC,WAAW,EAAE;AACf,CAAC,CAAC;AAEF,MAAMC,eAAe,GAAG3B,0BAA0B,CAAmC;EACnF4B,gBAAgB,EAAE,SAAS;EAC3BC,OAAO,EAAE;IACPC,OAAO,EAAE;MACPC,MAAM,EAAErB,mBAAmB;MAC3BsB,OAAO,EAAE;QACPC,WAAW,EAAE;MACf;IACF,CAAC;IACDpB,YAAY,EAAE;MACZkB,MAAM,EAAElB,YAAY;MACpBmB,OAAO,EAAE;QACPN,WAAW,EAAEvB,QAAQ,CAACkB,MAAM,CAAC;UAC3BC,OAAO,EAAE,QAAQ;UACjBC,GAAG,EAAE;QACP,CAAC,CAAC;QACFW,eAAe,EAAE;MACnB;IACF,CAAC;IACDpB,WAAW,EAAE;MACXiB,MAAM,EAAEjB,WAAW;MACnBkB,OAAO,EAAE;QACPN,WAAW,EAAEvB,QAAQ,CAACkB,MAAM,CAAC;UAC3BC,OAAO,EAAE,OAAO;UAChBC,GAAG,EAAE;QACP,CAAC,CAAC;QACFW,eAAe,EAAE;MACnB;IACF;EACF;AACF,CAAC,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,+BAA+BA,CACtCC,IAAqD,EACrDC,IAAY,EACY;EACxB,IAAI,OAAOD,IAAI,CAACE,YAAY,KAAK,UAAU,EAAE,OAAOF,IAAI,CAACE,YAAY,CAAC,CAAC;EAEvE,MAAM;IAAEC;EAAmC,CAAC,GAAGzC,qBAE9C;EAED,OAAOyC,kCAAkC,CAACH,IAAI,EAAEC,IAAI,CAAC;AACvD;AAEA,MAAMP,OAAO,GAAGK,+BAA+B,CAACR,eAAe,EAAE,SAAS,CAAC;AAE3E,OAAO,MAAMa,yBAAyB,GAAGC,MAAA;EAAA,MAAAC,CAAA,GAAAC,EAAA;EACvC,MAAAC,MAAA,GAAeC,SAAS,CAAC,CAAC;EAAA,IAAAC,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAL,CAAA,QAAAM,MAAA,CAAAC,GAAA;IAKpBH,EAAA,gBAAA9B,IAAA,CAACkC,0BAA0B,IAAE,CAAC;IAC9BH,EAAA,gBAAA/B,IAAA,CAACc,OAAO,IAAE,CAAC;IAAAY,CAAA,MAAAI,EAAA;IAAAJ,CAAA,MAAAK,EAAA;EAAA;IAAAD,EAAA,GAAAJ,CAAA;IAAAK,EAAA,GAAAL,CAAA;EAAA;EAAA,IAAAS,EAAA;EAAA,IAAAT,CAAA,QAAAE,MAAA,CAAAQ,gBAAA;IAHfD,EAAA,gBAAAnC,IAAA,CAACL,cAAc;MAAA0C,QAAA,eACbnC,KAAA,CAAAV,SAAA,CAAA8C,IAAA;QAA8BC,YAAuB,EAAvBX,MAAM,CAAAQ,gBAAiB;QAA2BI,uBAAK,EAAL,KAAK;QAAAH,QAAA,GACnFP,EAA8B,EAC9BC,EAAW;MAAA,CACG;IAAC,CACH,CAAC;IAAAL,CAAA,MAAAE,MAAA,CAAAQ,gBAAA;IAAAV,CAAA,MAAAS,EAAA;EAAA;IAAAA,EAAA,GAAAT,CAAA;EAAA;EAAA,OALjBS,EAKiB;AAAA,CAEpB;AAED,MAAMD,0BAA0B,GAAGA,CAAA;EAAA,MAAAR,CAAA,GAAAC,EAAA;EACjC;IAAAc,WAAA;IAAAC,YAAA;IAAAC;EAAA,IAAgE/C,gBAAgB,CAAC,CAAC;EAClF,MAAAgD,KAAA,GAAc7D,QAAQ,CAAqD,CAAC;EAC5E,MAAA6C,MAAA,GAAeC,SAAS,CAAC,CAAC;EAAA,IAAAC,EAAA;EAAA,IAAAJ,CAAA,QAAAiB,wBAAA;IAGxBb,EAAA,GAAAe,KAAA;MACEF,wBAAwB,CAACE,KAAK,CAAAC,WAAY,CAAAC,MAAO,CAAAC,MAAO,CAAC;IAAA,CAC1D;IAAAtB,CAAA,MAAAiB,wBAAA;IAAAjB,CAAA,MAAAI,EAAA;EAAA;IAAAA,EAAA,GAAAJ,CAAA;EAAA;EAHH,MAAAuB,2BAAA,GAAoCnB,EAKnC;EAAA,IAAAC,EAAA;EAAA,IAAAL,CAAA,QAAAM,MAAA,CAAAC,GAAA;IAKKF,EAAA,gBAAA/B,IAAA,CAAAR,SAAA,CAAA0D,WAAA;MAAAb,QAAA,EAAuB;IAAO,CAAuB,CAAC;IAAAX,CAAA,MAAAK,EAAA;EAAA;IAAAA,EAAA,GAAAL,CAAA;EAAA;EAAA,IAAAS,EAAA;EAAA,IAAAT,CAAA,QAAAe,WAAA;IAEpDN,EAAA,gBAAAnC,IAAA,CAAAR,SAAA,CAAA2D,gBAAA;MAAqCV,OAAW,EAAXA,WAAW;MAAAJ,QAAA,EAAE;IAAK,CAA4B,CAAC;IAAAX,CAAA,MAAAe,WAAA;IAAAf,CAAA,MAAAS,EAAA;EAAA;IAAAA,EAAA,GAAAT,CAAA;EAAA;EAAA,IAAA0B,EAAA;EAAA,IAAA1B,CAAA,QAAAgB,YAAA,IAAAhB,CAAA,QAAAkB,KAAA,CAAAS,MAAA;IACpFD,EAAA,gBAAApD,IAAA,CAAAR,SAAA,CAAA8D,YAAA;MAA8BC,KAAO,EAAP,OAAO;MAAUC,OAAgC,EAAhCA,CAAA,KAAMd,YAAY,CAACE,KAAK,CAAAS,MAAO;IAAC,CAAG,CAAC;IAAA3B,CAAA,MAAAgB,YAAA;IAAAhB,CAAA,MAAAkB,KAAA,CAAAS,MAAA;IAAA3B,CAAA,MAAA0B,EAAA;EAAA;IAAAA,EAAA,GAAA1B,CAAA;EAAA;EAAA,IAAA+B,EAAA;EAAA,IAAA/B,CAAA,QAAAS,EAAA,IAAAT,CAAA,QAAA0B,EAAA;IAFrFK,EAAA,gBAAAvD,KAAA,CAAAV,SAAA,CAAAkE,aAAA;MAAArB,QAAA,GACEF,EAAoF,EACpFiB,EAAmF;IAAA,CAC5D,CAAC;IAAA1B,CAAA,MAAAS,EAAA;IAAAT,CAAA,MAAA0B,EAAA;IAAA1B,CAAA,OAAA+B,EAAA;EAAA;IAAAA,EAAA,GAAA/B,CAAA;EAAA;EAAA,IAAAiC,EAAA;EAAA,IAAAjC,CAAA,SAAAE,MAAA,CAAAgC,MAAA,IAAAlC,CAAA,SAAA+B,EAAA;IAL5BE,EAAA,gBAAAzD,KAAA,CAAAV,SAAA,CAAAqE,MAAA;MAAyBC,KAAa,EAAblC,MAAM,CAAAgC,MAAO;MAAAvB,QAAA,GACpCN,EAAsD,EACtD0B,EAG0B;IAAA,CACV,CAAC;IAAA/B,CAAA,OAAAE,MAAA,CAAAgC,MAAA;IAAAlC,CAAA,OAAA+B,EAAA;IAAA/B,CAAA,OAAAiC,EAAA;EAAA;IAAAA,EAAA,GAAAjC,CAAA;EAAA;EAAA,IAAAqC,EAAA;EAAA,IAAArC,CAAA,SAAAuB,2BAAA,IAAAvB,CAAA,SAAAiC,EAAA;IAPrBI,EAAA,gBAAA/D,IAAA,CAACV,IAAI;MAAW2D,QAA2B,EAA3BA,2BAA2B;MAAAZ,QAAA,EACzCsB;IAMmB,CACf,CAAC;IAAAjC,CAAA,OAAAuB,2BAAA;IAAAvB,CAAA,OAAAiC,EAAA;IAAAjC,CAAA,OAAAqC,EAAA;EAAA;IAAAA,EAAA,GAAArC,CAAA;EAAA;EAAA,OARPqC,EAQO;AAAA,CAEV;AAED,MAAMlC,SAAS,GAAGA,CAAA;EAAA,MAAAH,CAAA,GAAAC,EAAA;EAChB;IAAAqC;EAAA,IAAgBzE,iBAAiB,CAAC,CAAC;EACnC;IAAAyD;EAAA,IAAmB3D,mBAAmB,CAAC,CAAC;EACxC,MAAA4E,YAAA,GAAqBpF,eAAe,CAAC,CAAC;EAAA,IAAAiD,EAAA;EAAA,IAAAJ,CAAA,QAAAuC,YAAA,IAAAvC,CAAA,QAAAsB,MAAA,IAAAtB,CAAA,QAAAsC,GAAA;IAEtC,MAAAE,eAAA,GAAwB/E,QAAQ,CAAAkB,MAAO,CAAC;MAAAC,OAAA,EAC7B0C,MAAM;MAAAzC,GAAA,EACVyC,MAAM,GAAGgB,GAAG,GAAGC;IACtB,CAAC,CAAC;IAEKnC,EAAA,GAAA1C,UAAU,CAAA+E,MAAO,CAAC;MAAA/B,gBAAA,EACL;QAAAY,MAAA,EACRkB;MACV,CAAC;MAAAN,MAAA,EACO;QAAAQ,UAAA,EACMjF,QAAQ,CAAAkB,MAAO,CAAC;UAAAE,GAAA,EACrB,EAAE;UAAAD,OAAA,EACE,EAAE,GAAG0D;QAChB,CAAC,CAAC;QAAAK,iBAAA,EAGiB;MACrB;IACF,CAAC,CAAC;IAAA3C,CAAA,MAAAuC,YAAA;IAAAvC,CAAA,MAAAsB,MAAA;IAAAtB,CAAA,MAAAsC,GAAA;IAAAtC,CAAA,MAAAI,EAAA;EAAA;IAAAA,EAAA,GAAAJ,CAAA;EAAA;EAAA,OAbKI,EAaL;AAAA,CACH","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"conversation_filters_screen.js","names":["useHeaderHeight","ReactNavigationNative","useRoute","createNativeStackNavigator","React","useCallback","Platform","StyleSheet","useWindowDimensions","View","useSafeAreaInsets","FormSheet","getFormSheetScreenOptions","useFilterDropdownEnabled","ConversationFilters","FilterProvider","useFilterContext","GroupFilters","TeamFilters","jsx","_jsx","jsxs","_jsxs","ConversationFiltersScreenOptions","presentation","select","android","ios","sheetAllowedDetents","default","headerTitle","FilterNavigator","initialRouteName","screens","Filters","screen","options","headerShown","headerBackTitle","createStaticNavigationComponent","tree","name","getComponent","createComponentForStaticNavigation","ConversationFiltersScreen","_props","$","_c","styles","useStyles","t0","t1","Symbol","for","FormSheetHeaderWithContext","t2","contentContainer","children","Root","contentStyle","showAndroidSheetGrabber","resetFilter","applyFilters","setFormSheetHeaderHeight","route","filterDropdownEnabled","event","nativeEvent","layout","height","handleFormSheetHeaderLayout","HeaderTitle","t3","HeaderTextButton","t4","params","HeaderButton","title","onPress","t5","HeaderActions","t6","header","Header","style","t7","top","headerHeight","containerHeight","create","paddingTop","borderBottomWidth"],"sources":["../../src/screens/conversation_filters_screen.tsx"],"sourcesContent":["import { useHeaderHeight } from '@react-navigation/elements'\nimport * as ReactNavigationNative from '@react-navigation/native'\nimport { RouteProp, useRoute } from '@react-navigation/native'\nimport { createNativeStackNavigator } from '@react-navigation/native-stack'\nimport React, { useCallback } from 'react'\nimport { LayoutChangeEvent, Platform, StyleSheet, useWindowDimensions, View } from 'react-native'\nimport { useSafeAreaInsets } from 'react-native-safe-area-context'\nimport FormSheet, { getFormSheetScreenOptions } from '../components/primitive/form_sheet'\nimport { useFilterDropdownEnabled } from '../hooks/use_filter_dropdown_enabled'\nimport { ConversationFilters } from './conversation_filters/components/conversation_filters'\nimport {\n FilterProvider,\n useFilterContext,\n} from './conversation_filters/context/conversation_filter_context'\nimport { GroupFilters } from './conversation_filters/group_filters'\nimport {\n ConversationFiltersScreenProps,\n ConversationFilterStackParamList,\n} from './conversation_filters/screen_props'\nimport { TeamFilters } from './conversation_filters/team_filters'\n\nexport const ConversationFiltersScreenOptions = getFormSheetScreenOptions({\n presentation: Platform.select({ android: 'modal', ios: 'formSheet' }),\n sheetAllowedDetents: Platform.select({\n ios: [0.75, 1],\n default: [1],\n }),\n headerTitle: 'Filters',\n})\n\nconst FilterNavigator = createNativeStackNavigator<ConversationFilterStackParamList>({\n initialRouteName: 'Filters',\n screens: {\n Filters: {\n screen: ConversationFilters,\n options: {\n headerShown: false,\n },\n },\n GroupFilters: {\n screen: GroupFilters,\n options: {\n headerTitle: Platform.select({\n android: 'Groups',\n ios: '',\n }),\n headerBackTitle: 'Groups',\n },\n },\n TeamFilters: {\n screen: TeamFilters,\n options: {\n headerTitle: Platform.select({\n android: 'Teams',\n ios: '',\n }),\n headerBackTitle: 'Teams',\n },\n },\n },\n})\n\n// tree.getComponent() doesn't exist on every host's installed\n// react-navigation/core — hosts on an older version would throw here.\n// Where it does exist, it's the real implementation (the \"deprecated\"\n// createComponentForStaticNavigation is just a console.warn wrapper around\n// the same call on current versions), so prefer it and only reach for the\n// old function on cores where getComponent() genuinely isn't there yet.\nfunction createStaticNavigationComponent<P extends object>(\n tree: { getComponent?: () => React.ComponentType<P> },\n name: string\n): React.ComponentType<P> {\n if (typeof tree.getComponent === 'function') return tree.getComponent()\n\n const { createComponentForStaticNavigation } = ReactNavigationNative as {\n createComponentForStaticNavigation: (tree: unknown, name: string) => React.ComponentType<P>\n }\n\n return createComponentForStaticNavigation(tree, name)\n}\n\nconst Filters = createStaticNavigationComponent(FilterNavigator, 'Filters')\n\nexport const ConversationFiltersScreen = (_props: ConversationFiltersScreenProps) => {\n const styles = useStyles()\n\n return (\n <FilterProvider>\n <FormSheet.Root contentStyle={styles.contentContainer} showAndroidSheetGrabber={false}>\n <FormSheetHeaderWithContext />\n <Filters />\n </FormSheet.Root>\n </FilterProvider>\n )\n}\n\nconst FormSheetHeaderWithContext = () => {\n const { resetFilter, applyFilters, setFormSheetHeaderHeight } = useFilterContext()\n const route = useRoute<RouteProp<ConversationFiltersScreenProps['route']>>()\n const filterDropdownEnabled = useFilterDropdownEnabled()\n const styles = useStyles()\n\n const handleFormSheetHeaderLayout = useCallback(\n (event: LayoutChangeEvent) => {\n setFormSheetHeaderHeight(event.nativeEvent.layout.height)\n },\n [setFormSheetHeaderHeight]\n )\n\n return (\n <View onLayout={handleFormSheetHeaderLayout}>\n <FormSheet.Header style={styles.header}>\n <FormSheet.HeaderTitle>\n {filterDropdownEnabled ? 'More filters' : 'Filters'}\n </FormSheet.HeaderTitle>\n <FormSheet.HeaderActions>\n <FormSheet.HeaderTextButton onPress={resetFilter}>Reset</FormSheet.HeaderTextButton>\n <FormSheet.HeaderButton title=\"Apply\" onPress={() => applyFilters(route.params)} />\n </FormSheet.HeaderActions>\n </FormSheet.Header>\n </View>\n )\n}\n\nconst useStyles = () => {\n const { top } = useSafeAreaInsets()\n const { height } = useWindowDimensions()\n const headerHeight = useHeaderHeight()\n\n const containerHeight = Platform.select({\n android: height,\n ios: height - top - headerHeight,\n })\n\n return StyleSheet.create({\n contentContainer: {\n height: containerHeight,\n },\n header: {\n paddingTop: Platform.select({\n ios: 20,\n android: 20 + top,\n }),\n // The filter list scrolls under it, so the sheet header doesn't need a\n // separator the way the non-scrolling reaction sheet does.\n borderBottomWidth: 0,\n },\n })\n}\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@planningcenter/chat-react-native",
|
|
3
|
-
"version": "4.4.1-qa-staging.
|
|
3
|
+
"version": "4.4.1-qa-staging.17",
|
|
4
4
|
"description": "",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"@fortawesome/fontawesome-svg-core": "^7.2.0",
|
|
35
35
|
"@fortawesome/react-native-fontawesome": "^0.3.2",
|
|
36
|
-
"@planningcenter/emoji-keyboard": "4.4.1-qa-staging.
|
|
36
|
+
"@planningcenter/emoji-keyboard": "4.4.1-qa-staging.17",
|
|
37
37
|
"lodash-inflection": "^1.5.0"
|
|
38
38
|
},
|
|
39
39
|
"peerDependencies": {
|
|
@@ -84,5 +84,5 @@
|
|
|
84
84
|
"sf-symbols-typescript": "^2.2.0",
|
|
85
85
|
"typescript": "~6.0.3"
|
|
86
86
|
},
|
|
87
|
-
"gitHead": "
|
|
87
|
+
"gitHead": "3f42f16e64f443ba3e1b2c24298954ecc380b52a"
|
|
88
88
|
}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { DefaultTheme, ThemeProvider } from '@react-navigation/native'
|
|
2
|
+
import { render } from '@testing-library/react-native'
|
|
3
|
+
import React from 'react'
|
|
4
|
+
import { SafeAreaProvider } from 'react-native-safe-area-context'
|
|
5
|
+
import { useFilterDropdownEnabled } from '../../../../hooks/use_filter_dropdown_enabled'
|
|
6
|
+
import { ConversationFilters } from '../../../../screens/conversation_filters/components/conversation_filters'
|
|
7
|
+
import { FilterContext } from '../../../../screens/conversation_filters/context/conversation_filter_context'
|
|
8
|
+
import { FilterTypes } from '../../../../screens/conversation_filters/filter_types'
|
|
9
|
+
import { GroupResource } from '../../../../types/resources/group_resource'
|
|
10
|
+
|
|
11
|
+
jest.mock('react-native-gesture-handler', () => {
|
|
12
|
+
const { FlatList } = jest.requireActual('react-native')
|
|
13
|
+
const ReactActual = jest.requireActual('react')
|
|
14
|
+
|
|
15
|
+
return {
|
|
16
|
+
FlatList: (props: object) =>
|
|
17
|
+
ReactActual.createElement(FlatList, { ...props, initialNumToRender: 50 }),
|
|
18
|
+
}
|
|
19
|
+
})
|
|
20
|
+
jest.mock('@react-navigation/native', () => ({
|
|
21
|
+
...jest.requireActual('@react-navigation/native'),
|
|
22
|
+
useNavigation: () => ({ navigate: jest.fn(), dispatch: jest.fn(), setParams: jest.fn() }),
|
|
23
|
+
}))
|
|
24
|
+
jest.mock('../../../../hooks/use_api_client', () => ({ useApiClient: () => ({}) }))
|
|
25
|
+
jest.mock('../../../../hooks/use_filter_dropdown_enabled', () => ({
|
|
26
|
+
useFilterDropdownEnabled: jest.fn(() => false),
|
|
27
|
+
}))
|
|
28
|
+
jest.mock('../../../../hooks/use_direct_messages_eligible', () => ({
|
|
29
|
+
useDirectMessagesEligible: () => true,
|
|
30
|
+
}))
|
|
31
|
+
jest.mock('../../../../hooks/use_has_direct_messages', () => ({
|
|
32
|
+
useHasDirectMessages: () => true,
|
|
33
|
+
}))
|
|
34
|
+
jest.mock('../../../../hooks/services/use_services_team', () => ({
|
|
35
|
+
useServicesTeamsMap: () => ({}),
|
|
36
|
+
}))
|
|
37
|
+
jest.mock('../../../../screens/conversation_filters/hooks/filters', () => ({
|
|
38
|
+
useGroupsToFilter: () => ({ groups: mockGroups }),
|
|
39
|
+
useTeamsToFilter: () => ({ teams: mockTeams }),
|
|
40
|
+
}))
|
|
41
|
+
|
|
42
|
+
const buildGroup = (id: number, name: string): GroupResource => ({
|
|
43
|
+
id: `Groups-Group-${id}`,
|
|
44
|
+
type: 'Group',
|
|
45
|
+
links: { self: '' },
|
|
46
|
+
name,
|
|
47
|
+
sourceAppName: 'Groups',
|
|
48
|
+
sourceType: 'Group',
|
|
49
|
+
})
|
|
50
|
+
|
|
51
|
+
const buildTeam = (id: number, name: string): GroupResource => ({
|
|
52
|
+
id: `Services-Team-${id}`,
|
|
53
|
+
type: 'Group',
|
|
54
|
+
links: { self: '' },
|
|
55
|
+
name,
|
|
56
|
+
sourceAppName: 'Services',
|
|
57
|
+
sourceType: 'Team',
|
|
58
|
+
})
|
|
59
|
+
|
|
60
|
+
const mockGroups = Array.from({ length: 6 }, (_, i) => buildGroup(i + 1, `Group ${i + 1}`))
|
|
61
|
+
const mockTeams = [buildTeam(1, 'Worship Team')]
|
|
62
|
+
|
|
63
|
+
const mockedFilterDropdownEnabled = jest.mocked(useFilterDropdownEnabled)
|
|
64
|
+
|
|
65
|
+
const safeAreaMetrics = {
|
|
66
|
+
frame: { x: 0, y: 0, width: 390, height: 844 },
|
|
67
|
+
insets: { top: 0, right: 0, bottom: 0, left: 0 },
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
const renderFilters = () =>
|
|
71
|
+
render(
|
|
72
|
+
<SafeAreaProvider initialMetrics={safeAreaMetrics}>
|
|
73
|
+
<ThemeProvider value={DefaultTheme}>
|
|
74
|
+
<FilterContext.Provider
|
|
75
|
+
value={{
|
|
76
|
+
params: {},
|
|
77
|
+
scrollOffset: 0,
|
|
78
|
+
setScrollOffset: jest.fn(),
|
|
79
|
+
setFormSheetHeaderHeight: jest.fn(),
|
|
80
|
+
resetFilter: jest.fn(),
|
|
81
|
+
setGroupFilter: jest.fn(),
|
|
82
|
+
setAppFilter: jest.fn(),
|
|
83
|
+
applyFilters: jest.fn(),
|
|
84
|
+
platformListPaddingBottom: 0,
|
|
85
|
+
}}
|
|
86
|
+
>
|
|
87
|
+
<ConversationFilters />
|
|
88
|
+
</FilterContext.Provider>
|
|
89
|
+
</ThemeProvider>
|
|
90
|
+
</SafeAreaProvider>
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
const generalFilterLabels = [
|
|
94
|
+
'General Filters',
|
|
95
|
+
FilterTypes.All,
|
|
96
|
+
FilterTypes.Groups,
|
|
97
|
+
FilterTypes.Teams,
|
|
98
|
+
FilterTypes.DirectMessages,
|
|
99
|
+
]
|
|
100
|
+
|
|
101
|
+
describe('ConversationFilters', () => {
|
|
102
|
+
beforeEach(() => {
|
|
103
|
+
jest.clearAllMocks()
|
|
104
|
+
})
|
|
105
|
+
|
|
106
|
+
it('renders the General Filters section when the filter dropdown is off', () => {
|
|
107
|
+
mockedFilterDropdownEnabled.mockReturnValue(false)
|
|
108
|
+
|
|
109
|
+
const { getByText } = renderFilters()
|
|
110
|
+
|
|
111
|
+
generalFilterLabels.forEach(label => expect(getByText(label)).toBeTruthy())
|
|
112
|
+
expect(getByText('Groups')).toBeTruthy()
|
|
113
|
+
expect(getByText('Teams')).toBeTruthy()
|
|
114
|
+
})
|
|
115
|
+
|
|
116
|
+
it('hides the General Filters section but keeps Groups and Teams when the filter dropdown is on', () => {
|
|
117
|
+
mockedFilterDropdownEnabled.mockReturnValue(true)
|
|
118
|
+
|
|
119
|
+
const { getByText, queryByText, getAllByText } = renderFilters()
|
|
120
|
+
|
|
121
|
+
generalFilterLabels.forEach(label => expect(queryByText(label)).toBeNull())
|
|
122
|
+
expect(getByText('Groups')).toBeTruthy()
|
|
123
|
+
expect(getByText('Teams')).toBeTruthy()
|
|
124
|
+
expect(getByText('Group 1')).toBeTruthy()
|
|
125
|
+
expect(queryByText('Group 6')).toBeNull()
|
|
126
|
+
expect(getByText('Worship Team')).toBeTruthy()
|
|
127
|
+
expect(getAllByText('View more')).toHaveLength(1)
|
|
128
|
+
})
|
|
129
|
+
})
|
|
@@ -9,6 +9,7 @@ import { ServicesForm } from '../../../../screens/conversation_new/components/se
|
|
|
9
9
|
jest.mock('react-native-reanimated', () => ({
|
|
10
10
|
...jest.requireActual('react-native-reanimated/mock'),
|
|
11
11
|
LayoutAnimationConfig: ({ children }: { children: React.ReactNode }) => children,
|
|
12
|
+
useReducedMotion: () => false,
|
|
12
13
|
}))
|
|
13
14
|
jest.mock('@react-navigation/native', () => ({
|
|
14
15
|
...jest.requireActual('@react-navigation/native'),
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { fireEvent, render } from '@testing-library/react-native'
|
|
2
|
+
import React from 'react'
|
|
3
|
+
import { ConversationsBlankState } from '../conversations_blank_state'
|
|
4
|
+
|
|
5
|
+
const mockSetParams = jest.fn()
|
|
6
|
+
const mockUseFilterDropdownEnabled = jest.fn()
|
|
7
|
+
|
|
8
|
+
jest.mock('@react-navigation/native', () => ({
|
|
9
|
+
...jest.requireActual('@react-navigation/native'),
|
|
10
|
+
useNavigation: () => ({ setParams: mockSetParams }),
|
|
11
|
+
}))
|
|
12
|
+
|
|
13
|
+
jest.mock('../../../hooks/use_filter_dropdown_enabled', () => ({
|
|
14
|
+
useFilterDropdownEnabled: () => mockUseFilterDropdownEnabled(),
|
|
15
|
+
}))
|
|
16
|
+
|
|
17
|
+
describe('ConversationsBlankState', () => {
|
|
18
|
+
beforeEach(() => {
|
|
19
|
+
mockSetParams.mockClear()
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
describe('with the filter dropdown on', () => {
|
|
23
|
+
beforeEach(() => {
|
|
24
|
+
mockUseFilterDropdownEnabled.mockReturnValue(true)
|
|
25
|
+
})
|
|
26
|
+
|
|
27
|
+
it('offers to view all conversations when a filter is applied', () => {
|
|
28
|
+
const view = render(
|
|
29
|
+
<ConversationsBlankState isFilterApplied={true} canCreateConversations={true} />
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
expect(view.getByText('No matches')).toBeTruthy()
|
|
33
|
+
expect(view.queryByText('No conversations yet.')).toBeNull()
|
|
34
|
+
|
|
35
|
+
fireEvent.press(view.getByText('View all conversations'))
|
|
36
|
+
|
|
37
|
+
expect(mockSetParams).toHaveBeenCalledTimes(1)
|
|
38
|
+
expect(mockSetParams.mock.calls[0][0]).toStrictEqual({
|
|
39
|
+
title: undefined,
|
|
40
|
+
chat_group_graph_id: undefined,
|
|
41
|
+
group_source_app_name: undefined,
|
|
42
|
+
show_direct_messages: undefined,
|
|
43
|
+
})
|
|
44
|
+
})
|
|
45
|
+
|
|
46
|
+
it('keeps the compose prompt when no filter is applied', () => {
|
|
47
|
+
const view = render(
|
|
48
|
+
<ConversationsBlankState isFilterApplied={false} canCreateConversations={true} />
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
expect(view.getByText('No conversations yet.')).toBeTruthy()
|
|
52
|
+
expect(view.getByText('Tap the compose button to get started.')).toBeTruthy()
|
|
53
|
+
expect(view.queryByText('View all conversations')).toBeNull()
|
|
54
|
+
})
|
|
55
|
+
})
|
|
56
|
+
|
|
57
|
+
describe('with the filter dropdown off', () => {
|
|
58
|
+
beforeEach(() => {
|
|
59
|
+
mockUseFilterDropdownEnabled.mockReturnValue(false)
|
|
60
|
+
})
|
|
61
|
+
|
|
62
|
+
it('keeps the adjust-your-filters copy when a filter is applied', () => {
|
|
63
|
+
const view = render(
|
|
64
|
+
<ConversationsBlankState isFilterApplied={true} canCreateConversations={true} />
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
expect(view.getByText('No conversations yet.')).toBeTruthy()
|
|
68
|
+
expect(view.getByText('Adjust your filters to find conversations.')).toBeTruthy()
|
|
69
|
+
expect(view.queryByText('View all conversations')).toBeNull()
|
|
70
|
+
})
|
|
71
|
+
})
|
|
72
|
+
})
|
|
@@ -5,9 +5,11 @@ import { useConversationsContext } from '../../contexts/conversations_context'
|
|
|
5
5
|
import { useTheme } from '../../hooks'
|
|
6
6
|
import { useCanCreateConversations } from '../../hooks/use_chat_permissions'
|
|
7
7
|
import { useConversationsJoltEvents } from '../../hooks/use_conversations_jolt_events'
|
|
8
|
+
import { useFilterDropdownEnabled } from '../../hooks/use_filter_dropdown_enabled'
|
|
8
9
|
import { ConversationResource } from '../../types'
|
|
9
10
|
import { ConversationPreview, ConversationPreviewSkeleton } from './conversation_preview'
|
|
10
11
|
import { ConversationsBlankState } from './conversations_blank_state'
|
|
12
|
+
import { FilteredResultsFooter } from './filtered_results_footer'
|
|
11
13
|
|
|
12
14
|
interface ConversationsProps {
|
|
13
15
|
ListHeaderComponent?:
|
|
@@ -26,11 +28,19 @@ export const Conversations = ({ ListHeaderComponent }: ConversationsProps) => {
|
|
|
26
28
|
refetch,
|
|
27
29
|
isRefetching,
|
|
28
30
|
isFetched,
|
|
29
|
-
|
|
31
|
+
hasNextPage,
|
|
32
|
+
args: { chat_group_graph_id, group_source_app_name, show_direct_messages },
|
|
30
33
|
} = useConversationsContext()
|
|
31
34
|
const navigation = useNavigation()
|
|
32
35
|
const canCreateConversations = useCanCreateConversations()
|
|
33
|
-
const
|
|
36
|
+
const filterDropdownEnabled = useFilterDropdownEnabled()
|
|
37
|
+
const isFilterApplied = !!chat_group_graph_id || !!group_source_app_name || !!show_direct_messages
|
|
38
|
+
const showFilteredResultsFooter =
|
|
39
|
+
filterDropdownEnabled &&
|
|
40
|
+
isFilterApplied &&
|
|
41
|
+
!hasNextPage &&
|
|
42
|
+
!isLoading &&
|
|
43
|
+
conversations.length > 0
|
|
34
44
|
|
|
35
45
|
const showBadges = !chat_group_graph_id
|
|
36
46
|
|
|
@@ -62,6 +72,7 @@ export const Conversations = ({ ListHeaderComponent }: ConversationsProps) => {
|
|
|
62
72
|
canCreateConversations={canCreateConversations}
|
|
63
73
|
/>
|
|
64
74
|
}
|
|
75
|
+
ListFooterComponent={showFilteredResultsFooter ? <FilteredResultsFooter /> : null}
|
|
65
76
|
renderItem={({ item }) => {
|
|
66
77
|
if (item.type === 'loading') {
|
|
67
78
|
return <ConversationPreviewSkeleton />
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import React from 'react'
|
|
2
2
|
import { StyleSheet, View } from 'react-native'
|
|
3
|
+
import { useClearConversationFilters } from '../../hooks/use_clear_conversation_filters'
|
|
4
|
+
import { useFilterDropdownEnabled } from '../../hooks/use_filter_dropdown_enabled'
|
|
3
5
|
import BlankState from '../primitive/blank_state_primitive'
|
|
4
6
|
|
|
5
7
|
interface ConversationsBlankStateProps {
|
|
@@ -11,6 +13,25 @@ export function ConversationsBlankState({
|
|
|
11
13
|
isFilterApplied,
|
|
12
14
|
canCreateConversations,
|
|
13
15
|
}: ConversationsBlankStateProps) {
|
|
16
|
+
const filterDropdownEnabled = useFilterDropdownEnabled()
|
|
17
|
+
const clearFilters = useClearConversationFilters()
|
|
18
|
+
|
|
19
|
+
if (filterDropdownEnabled && isFilterApplied) {
|
|
20
|
+
return (
|
|
21
|
+
<View style={styles.container}>
|
|
22
|
+
<BlankState.Root>
|
|
23
|
+
<BlankState.Imagery name="general.outlinedTextMessage" />
|
|
24
|
+
<BlankState.Content>
|
|
25
|
+
<BlankState.Heading>No matches</BlankState.Heading>
|
|
26
|
+
</BlankState.Content>
|
|
27
|
+
<BlankState.TextButton onPress={clearFilters}>
|
|
28
|
+
View all conversations
|
|
29
|
+
</BlankState.TextButton>
|
|
30
|
+
</BlankState.Root>
|
|
31
|
+
</View>
|
|
32
|
+
)
|
|
33
|
+
}
|
|
34
|
+
|
|
14
35
|
return (
|
|
15
36
|
<View style={styles.container}>
|
|
16
37
|
<BlankState.Root>
|