@messenger-box/slack-ui-mobile 10.0.3-alpha.22 → 10.0.3-alpha.27
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/lib/screens/Channels/Channels.js +53 -32
- package/lib/screens/Channels/Channels.js.map +1 -1
- package/lib/screens/Home/Components/Channels/Channels.js +24 -15
- package/lib/screens/Home/Components/Channels/Channels.js.map +1 -1
- package/lib/screens/Home/Components/DirectChannels/DirectChannels.js +23 -3
- package/lib/screens/Home/Components/DirectChannels/DirectChannels.js.map +1 -1
- package/lib/screens/Home/HomeScreen.js +47 -46
- package/lib/screens/Home/HomeScreen.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React__default,{useState,useEffect}from'react';import {SafeAreaView,
|
|
1
|
+
import React__default,{useState,useEffect}from'react';import {SafeAreaView,Dimensions,StyleSheet}from'react-native';import {Box,Text,Button,ButtonText,Input,InputSlot,InputIcon,SearchIcon,InputField,FlatList,Fab,Center,VStack,Spinner,Heading,Pressable,HStack}from'@admin-layout/gluestack-ui-mobile';import Colors from'../../constants/Colors.js';import {NavigationRoutes}from'../../constants/routes.js';import {AntDesign,Octicons,FontAwesome}from'@expo/vector-icons';import {RoomType}from'common';import {useGetChannelsByUserQuery}from'common/graphql';import {useNavigation,useIsFocused,useFocusEffect}from'@react-navigation/native';import colors from'tailwindcss/colors';import {StatusBar}from'expo-status-bar';import'expo-font';import'expo-splash-screen';import {useDrawerLayout}from'../../hooks/useDrawerLayout.js';import'../../hooks/useExpoNotificationProvider.js';import {uniqBy}from'lodash-es';Dimensions.get("window").width;
|
|
2
2
|
Dimensions.get("window").height;
|
|
3
3
|
const defaultChannelType = [RoomType.Channel, RoomType.Private, RoomType.Public];
|
|
4
4
|
const Channels = ({
|
|
@@ -13,6 +13,7 @@ const Channels = ({
|
|
|
13
13
|
useIsFocused();
|
|
14
14
|
const [channels, setChannels] = useState([]);
|
|
15
15
|
const [intialChannels, setInitialChannels] = useState([]);
|
|
16
|
+
const [searchQuery, setSearchQuery] = useState("");
|
|
16
17
|
const {
|
|
17
18
|
data: channelsData,
|
|
18
19
|
loading,
|
|
@@ -115,48 +116,58 @@ const Channels = ({
|
|
|
115
116
|
});
|
|
116
117
|
return sortedFilteredData;
|
|
117
118
|
}, [channels]);
|
|
118
|
-
const searchChannels = React__default.useCallback((
|
|
119
|
-
|
|
120
|
-
|
|
119
|
+
const searchChannels = React__default.useCallback((text) => {
|
|
120
|
+
setSearchQuery(text);
|
|
121
|
+
if (text) {
|
|
122
|
+
const searchedChannel = intialChannels.filter((o) => {
|
|
121
123
|
var _a;
|
|
122
|
-
return (_a = o == null ? void 0 : o.title) == null ? void 0 : _a.toLowerCase().includes(
|
|
124
|
+
return (_a = o == null ? void 0 : o.title) == null ? void 0 : _a.toLowerCase().includes(text == null ? void 0 : text.toLowerCase());
|
|
123
125
|
});
|
|
124
126
|
setChannels(searchedChannel);
|
|
125
127
|
} else {
|
|
126
128
|
setChannels(intialChannels);
|
|
127
129
|
}
|
|
128
|
-
}, [intialChannels
|
|
130
|
+
}, [intialChannels]);
|
|
131
|
+
const renderChannelIcon = (type) => {
|
|
132
|
+
if (type === RoomType.Private) {
|
|
133
|
+
return /* @__PURE__ */ React__default.createElement(FontAwesome, { color: "#525252", name: "lock", size: 18 });
|
|
134
|
+
} else {
|
|
135
|
+
return /* @__PURE__ */ React__default.createElement(Octicons, { color: "#525252", name: "hash", size: 18 });
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
const renderChannelItem = ({
|
|
139
|
+
item
|
|
140
|
+
}) => /* @__PURE__ */ React__default.createElement(Pressable, { onPress: () => openInbox(item) }, ({
|
|
141
|
+
pressed
|
|
142
|
+
}) => /* @__PURE__ */ React__default.createElement(Box, { className: `py-4 ${pressed ? "bg-gray-100" : "bg-white"} border-b border-gray-200`, style: {
|
|
143
|
+
borderBottomColor: colors.gray[300]
|
|
144
|
+
} }, /* @__PURE__ */ React__default.createElement(HStack, { className: "px-4 items-center" }, /* @__PURE__ */ React__default.createElement(Box, { className: "mr-2" }, renderChannelIcon(item.type)), /* @__PURE__ */ React__default.createElement(VStack, null, /* @__PURE__ */ React__default.createElement(Text, { className: "font-medium text-lg text-gray-900", numberOfLines: 1, ellipsizeMode: "tail" }, item.title), /* @__PURE__ */ React__default.createElement(Text, { className: "text-gray-600 text-sm", numberOfLines: 1, ellipsizeMode: "tail" }, item.description || "Test des")))));
|
|
145
|
+
const renderEmptyList = () => /* @__PURE__ */ React__default.createElement(Center, { className: "flex-1 py-10" }, loading ? /* @__PURE__ */ React__default.createElement(VStack, { className: "space-y-3 items-center" }, /* @__PURE__ */ React__default.createElement(Spinner, { size: "large", color: colors.blue[500] }), /* @__PURE__ */ React__default.createElement(Text, { color: colors.gray[600] }, "Loading channels...")) : /* @__PURE__ */ React__default.createElement(VStack, { className: "space-y-3 items-center px-4" }, /* @__PURE__ */ React__default.createElement(Box, { className: "rounded-full bg-gray-100 p-4" }, /* @__PURE__ */ React__default.createElement(Octicons, { name: "hash", size: 32, color: colors.gray[400] })), /* @__PURE__ */ React__default.createElement(Heading, { size: "sm", style: {
|
|
146
|
+
color: colors.gray[800]
|
|
147
|
+
} }, "No Channels Found"), searchQuery ? /* @__PURE__ */ React__default.createElement(Text, { className: "text-center", style: {
|
|
148
|
+
color: colors.gray[600]
|
|
149
|
+
} }, 'No channels match your search "', searchQuery, '"') : /* @__PURE__ */ React__default.createElement(Text, { className: "text-center", style: {
|
|
150
|
+
color: colors.gray[600]
|
|
151
|
+
} }, "Create a new channel to get started"), /* @__PURE__ */ React__default.createElement(Button, { onPress: () => navigation.navigate(NavigationRoutes.AddChannel, {
|
|
152
|
+
orgName
|
|
153
|
+
}), className: "mt-2" }, /* @__PURE__ */ React__default.createElement(ButtonText, null, "Create Channel"))));
|
|
129
154
|
return /* @__PURE__ */ React__default.createElement(SafeAreaView, { style: {
|
|
130
155
|
flex: 1,
|
|
131
156
|
backgroundColor: "white"
|
|
132
|
-
} }, /* @__PURE__ */ React__default.createElement(Box, { className: "flex-1 bg-white" }, /* @__PURE__ */ React__default.createElement(
|
|
133
|
-
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
}
|
|
140
|
-
}) => {
|
|
141
|
-
searchChannels(text);
|
|
142
|
-
}, autoCapitalize: "none", autoCorrect: false })), /* @__PURE__ */ React__default.createElement(Divider, null), /* @__PURE__ */ React__default.createElement(Box, { className: "flex-1" }, /* @__PURE__ */ React__default.createElement(VStack, { className: "flex-1" }, /* @__PURE__ */ React__default.createElement(FlatList, { contentContainerStyle: {
|
|
157
|
+
} }, /* @__PURE__ */ React__default.createElement(StatusBar, { style: "dark" }), /* @__PURE__ */ React__default.createElement(Box, { className: "flex-1 bg-white" }, /* @__PURE__ */ React__default.createElement(Box, { className: "px-4 py-2", style: {
|
|
158
|
+
paddingVertical: 10
|
|
159
|
+
} }, /* @__PURE__ */ React__default.createElement(Input, { variant: "outline", className: "bg-white rounded-3xl border border-gray-300", style: {
|
|
160
|
+
borderRadius: 10,
|
|
161
|
+
borderColor: colors.gray[300],
|
|
162
|
+
paddingHorizontal: 10
|
|
163
|
+
}, size: "lg" }, /* @__PURE__ */ React__default.createElement(InputSlot, { className: "pl-3" }, /* @__PURE__ */ React__default.createElement(InputIcon, { color: colors.gray[500], as: SearchIcon })), /* @__PURE__ */ React__default.createElement(InputField, { type: "text", size: "md", placeholder: "Search channels", placeholderTextColor: colors.gray[400], className: "px-3 py-2 text-base", value: searchQuery, onChangeText: searchChannels, autoCapitalize: "none", autoCorrect: false, clearButtonMode: "while-editing" }))), /* @__PURE__ */ React__default.createElement(Box, { className: "flex-1" }, /* @__PURE__ */ React__default.createElement(FlatList, { contentContainerStyle: {
|
|
143
164
|
flexGrow: 1,
|
|
144
|
-
paddingBottom:
|
|
145
|
-
},
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
maxWidth: "100%",
|
|
149
|
-
paddingBottom: 20,
|
|
150
|
-
marginBottom: 10
|
|
151
|
-
}, data: channels ? channels : [], keyExtractor: (item, index) => item + index, renderItem: ({
|
|
152
|
-
item
|
|
153
|
-
}) => /* @__PURE__ */ React__default.createElement(TouchableHighlight, { underlayColor: "transparent", activeOpacity: 0.5, key: item.id, style: {
|
|
154
|
-
marginTop: 1
|
|
155
|
-
}, onPress: () => openInbox(item) }, /* @__PURE__ */ React__default.createElement(Box, { className: "bg-white py-2" }, /* @__PURE__ */ React__default.createElement(VStack, { space: "md" }, /* @__PURE__ */ React__default.createElement(HStack, { className: "px-4 py-1 items-center", space: "sm" }, /* @__PURE__ */ React__default.createElement(Text, { style: styles.headingText }, item.type == RoomType.Private ? /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(FontAwesome, { color: "#525252", name: "lock", size: 20 })) : /* @__PURE__ */ React__default.createElement(Octicons, { color: "#525252", name: "hash", size: 20 })), /* @__PURE__ */ React__default.createElement(Box, { className: "px-2" }, /* @__PURE__ */ React__default.createElement(Text, { style: styles.headingText }, item.title)))))), ListEmptyComponent: () => {
|
|
156
|
-
return /* @__PURE__ */ React__default.createElement(Box, { className: "py-1" }, loading ? /* @__PURE__ */ React__default.createElement(Spinner, { color: colors.blue[500] }) : /* @__PURE__ */ React__default.createElement(Text, { color: colors.gray[600] }, "No Channels found"));
|
|
157
|
-
}, key: "search-channels-list" })))));
|
|
165
|
+
paddingBottom: 80
|
|
166
|
+
}, data: channels, keyExtractor: (item) => item.id.toString(), renderItem: renderChannelItem, ListEmptyComponent: renderEmptyList, showsVerticalScrollIndicator: false, ItemSeparatorComponent: null })), /* @__PURE__ */ React__default.createElement(Fab, { onPress: () => navigation.navigate(NavigationRoutes.AddChannel, {
|
|
167
|
+
orgName
|
|
168
|
+
}), className: "bg-blue-500 mb-16 mr-4", "$pressed-className": "bg-blue-600", size: "lg", placement: "bottom right" }, /* @__PURE__ */ React__default.createElement(AntDesign, { color: "white", name: "plus", size: 24 }))));
|
|
158
169
|
};
|
|
159
|
-
|
|
170
|
+
StyleSheet.create({
|
|
160
171
|
container: {
|
|
161
172
|
flex: 1,
|
|
162
173
|
padding: 20
|
|
@@ -169,6 +180,16 @@ const styles = StyleSheet.create({
|
|
|
169
180
|
color: Colors.light.text,
|
|
170
181
|
fontSize: 16,
|
|
171
182
|
fontWeight: "400"
|
|
183
|
+
},
|
|
184
|
+
channelTitle: {
|
|
185
|
+
color: colors.gray[900],
|
|
186
|
+
fontSize: 16,
|
|
187
|
+
fontWeight: "500"
|
|
188
|
+
},
|
|
189
|
+
channelDescription: {
|
|
190
|
+
color: colors.gray[600],
|
|
191
|
+
fontSize: 14,
|
|
192
|
+
marginTop: 2
|
|
172
193
|
}
|
|
173
194
|
});
|
|
174
195
|
var Channels$1 = React__default.memo(Channels);export{Channels$1 as default};//# sourceMappingURL=Channels.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Channels.js","sources":["../../../src/screens/Channels/Channels.tsx"],"sourcesContent":["import React, { useState, useEffect, useLayoutEffect } from 'react';\nimport { StyleSheet, TouchableHighlight, Dimensions, SafeAreaView } from 'react-native';\nimport {\n Input,\n InputField,\n InputSlot,\n InputIcon,\n SearchIcon,\n Button,\n ButtonText,\n View,\n Text,\n VStack,\n Box,\n Fab,\n FlatList,\n Divider,\n HStack,\n SectionList,\n Center,\n Heading,\n Spinner,\n} from '@admin-layout/gluestack-ui-mobile';\nimport Colors from '../../constants/Colors';\nimport { NavigationRoutes } from '../../constants/routes';\nimport { AntDesign } from '@expo/vector-icons';\n// import VirtualizedScrollView from '../VirtualizedScrollView';\nimport { RoomType } from 'common';\nimport { useGetChannelsByUserQuery, useGetChannelsByUserLazyQuery } from 'common/graphql';\nimport { useIsFocused, useFocusEffect, useNavigation } from '@react-navigation/native';\n// import { navigationRef } from '@common-stack/client-react';\nimport { FontAwesome, Feather, Octicons, MaterialIcons } from '@expo/vector-icons';\nimport colors from 'tailwindcss/colors';\nimport { StatusBar } from 'expo-status-bar';\nimport { NavigationHeader, ChannelsByAlphabeticalAccordion } from '../../components';\nimport { useDrawerLayout } from '../../hooks';\nimport { startCase, orderBy, uniqBy } from 'lodash-es';\n\nconst windowWidth = Dimensions.get('window').width;\nconst windowHeight = Dimensions.get('window').height;\n\nconst defaultChannelType = [RoomType.Channel, RoomType.Private, RoomType.Public];\n\nconst Channels = ({ navigation, route }: any) => {\n const { orgName, organizationDetail } = useDrawerLayout();\n const navigationRef = useNavigation<any>();\n const isFocused = useIsFocused();\n const [channels, setChannels] = useState<any[]>([]);\n const [intialChannels, setInitialChannels] = useState<any[]>([]);\n\n const {\n data: channelsData,\n loading,\n error,\n refetch,\n } = useGetChannelsByUserQuery({\n variables: {\n criteria: {\n orgName: orgName,\n type: defaultChannelType,\n team: null,\n },\n limit: 50,\n },\n });\n\n useFocusEffect(\n React.useCallback(() => {\n if (orgName) {\n refetch({\n criteria: {\n orgName: orgName,\n type: defaultChannelType,\n team: null,\n },\n limit: 50,\n });\n }\n return () => {\n // Do something when the screen is unfocused\n // Useful for cleanup functions\n };\n }, [orgName]),\n );\n\n useEffect(() => {\n if (channelsData) {\n let channels: any = channelsData?.channelsByUser?.filter((i: any) => i.type !== RoomType.Direct);\n channels = channels?.slice()?.sort((a: any, b: any) => a.title.localeCompare(b.title)) ?? [];\n setChannels((oldChannels: any) => uniqBy([...channels, ...oldChannels], ({ id }) => id));\n setInitialChannels((oldChannels: any) => uniqBy([...channels, ...oldChannels], ({ id }) => id));\n }\n }, [channelsData]);\n\n useEffect(() => {\n if (navigation)\n navigation.setOptions({\n // headerShown: true,\n headerTitleAlign: 'left',\n headerTitleStyle: {\n borderBottomWidth: 1,\n },\n headerLeft: (props: any) => (\n <Button onPress={() => navigation.goBack()} variant={'link'}>\n <ButtonText>Cancel</ButtonText>\n </Button>\n ),\n headerRight: (props: any) => (\n <Button\n onPress={() => navigation.navigate(NavigationRoutes.AddChannel, { orgName })}\n variant={'link'}\n >\n <ButtonText>Create</ButtonText>\n </Button>\n ),\n headerTitle: (props: any) => (\n <Box>\n <Text color={colors.black} className=\"text-[15] font-bold\">\n Channels\n </Text>\n </Box>\n ),\n headerStyle: {\n borderBottomWidth: 1,\n borderColor: '#d1d2d3',\n },\n });\n }, [channels, navigation]);\n\n const openInbox = (item: any) => {\n navigation.navigate(NavigationRoutes.DialogMessages, {\n channelId: item?.id?.toString(),\n title: item?.title?.toString(),\n totalMembers: item?.members?.length,\n hideTabBar: true,\n });\n };\n\n // const renderUserChannelItem = ({ item }: any) => {\n // return (\n // <TouchableHighlight\n // underlayColor={'transparent'}\n // activeOpacity={0.5}\n // key={item.id}\n // style={{ marginTop: 1 }}\n // onPress={() => openInbox(item?.id, item?.title, item?.members?.length)}\n // >\n // <Box bg={'#fff'} shadow={1} py={2}>\n // <VStack space=\"5\">\n // {/* <Box px=\"4\" pt=\"4\"> */}\n // <HStack px=\"4\" py={1} space={2}>\n // <Text style={styles.headingText}>#</Text>\n // {/* <Box px=\"4\" py={1}> */}\n // <Box px=\"2\">\n // <Text style={styles.headingText}>{item.title}</Text>\n // <Text>You are a memeber</Text>\n // </Box>\n // </HStack>\n // {/* <Box px=\"4\" py={1}>\n // <Text style={styles.headingText}># {item.title}</Text>\n // <Text > You are a memeber</Text>\n // </Box> */}\n // {/* <Box px=\"4\" pb={2}>\n // You are a memeber\n // </Box> */}\n // </VStack>\n // </Box>\n // </TouchableHighlight>\n // );\n // };\n\n const sortedChannels: any = React.useMemo(() => {\n const obj = channels.reduce((r, { id, title, type, members }) => {\n const l = title[0];\n if (!r[l]) r[l] = [{ id, title, type, members }];\n else r[l].push({ id, title, type, members });\n return r;\n }, {});\n\n const sorted = Object.entries(obj).sort(([a], [b]) => a.localeCompare(b));\n\n const sortedFilteredData = sorted.map(([key, value]) => {\n return {\n title: key,\n data: value,\n };\n });\n\n return sortedFilteredData;\n }, [channels]);\n\n const searchChannels = React.useCallback(\n (v: any) => {\n if (v) {\n const searchedChannel = channels.filter((o: any) => o?.title?.toLowerCase().includes(v?.toLowerCase()));\n setChannels(searchedChannel);\n } else {\n setChannels(intialChannels);\n }\n },\n [intialChannels, channels],\n );\n\n return (\n <SafeAreaView style={{ flex: 1, backgroundColor: 'white' }}>\n <Box className=\"flex-1 bg-white\">\n <Input\n style={{ boxShadow: 'none' }}\n variant=\"outline\"\n className=\"bg-gray-100 mx-4 my-2 rounded-lg border-0\"\n >\n <InputSlot className=\"pl-3\">\n <InputIcon color={colors.black} as={SearchIcon} />\n </InputSlot>\n <InputField\n type=\"text\"\n size=\"xl\"\n placeholder=\"Search\"\n placeholderTextColor={'#404040'}\n className=\"px-3 items-center font-[15] color-black\"\n onChange={({ nativeEvent: { eventCount, target, text } }) => {\n searchChannels(text);\n }}\n autoCapitalize={'none'}\n autoCorrect={false}\n />\n </Input>\n <Divider />\n {/* <ChannelsByAlphabeticalAccordion channels={sortedChannels} loading={loading} onPress={openInbox} /> */}\n <Box className=\"flex-1\">\n <VStack className=\"flex-1\">\n <FlatList\n contentContainerStyle={{\n flexGrow: 1,\n paddingBottom: 50,\n }}\n style={{\n width: '100%',\n height: '100%',\n maxWidth: '100%',\n paddingBottom: 20,\n marginBottom: 10,\n }}\n data={channels ? channels : []}\n keyExtractor={(item: any, index: any) => item + index}\n renderItem={({ item }: any) => (\n <TouchableHighlight\n underlayColor={'transparent'}\n activeOpacity={0.5}\n key={item.id}\n style={{ marginTop: 1 }}\n onPress={() => openInbox(item)}\n >\n <Box className=\"bg-white py-2\">\n <VStack space=\"md\">\n <HStack className=\"px-4 py-1 items-center\" space={'sm'}>\n <Text style={styles.headingText}>\n {item.type == RoomType.Private ? (\n <>\n <FontAwesome color={'#525252'} name=\"lock\" size={20} />\n </>\n ) : (\n <Octicons color=\"#525252\" name=\"hash\" size={20} />\n )}\n </Text>\n\n <Box className=\"px-2\">\n <Text style={styles.headingText}>{item.title}</Text>\n {/* <Text>You are a memeber</Text> */}\n </Box>\n </HStack>\n </VStack>\n </Box>\n </TouchableHighlight>\n )}\n ListEmptyComponent={() => {\n return (\n <Box className=\"py-1\">\n {loading ? (\n <Spinner color={colors.blue[500]} />\n ) : (\n <Text color={colors.gray[600]}>No Channels found</Text>\n )}\n </Box>\n );\n }}\n key={'search-channels-list'}\n />\n </VStack>\n </Box>\n\n {/* <Fab\n onPress={() => navigation.navigate(NavigationRoutes.AddChannel)}\n bg={'$white'}\n $pressed-bg={'$trueGray200'}\n $active-bg={'$trueGray200'}\n bottom={'$10'}\n // renderInPortal={false}\n // shadow={3}\n size=\"sm\"\n borderRadius={'$lg'}\n >\n <AntDesign color=\"black\" name=\"plus\" size={20} />\n </Fab> */}\n </Box>\n </SafeAreaView>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n //justifyContent: 'center',\n padding: 20,\n },\n itemView: {\n paddingVertical: 8,\n marginTop: 5,\n },\n headingText: {\n color: Colors.light.text,\n fontSize: 16,\n fontWeight: '400',\n },\n});\n\nexport default React.memo(Channels);\n"],"names":["React","channels"],"mappings":"+0BAiBoB,UAAA,CAAW,GAAI,CAAA,QAAQ,CAAE,CAAA;AACxB,UAAA,CAAW,GAAI,CAAA,QAAQ,CAAE,CAAA;AAC9C,MAAM,qBAAqB,CAAC,QAAA,CAAS,SAAS,QAAS,CAAA,OAAA,EAAS,SAAS,MAAM,CAAA;AAC/E,MAAM,WAAW,CAAC;AAAA,EAChB,UAAA;AAAA,EACA;AACF,CAAW,KAAA;AACT,EAAM,MAAA;AAAA,IACJ,OAAA;AAAA,IACA;AAAA,MACE,eAAgB,EAAA;AACpB,EAAsB,aAAmB;AACzC,EAAkB,YAAa;AAC/B,EAAA,MAAM,CAAC,QAAU,EAAA,WAAW,CAAI,GAAA,QAAA,CAAgB,EAAE,CAAA;AAClD,EAAA,MAAM,CAAC,cAAgB,EAAA,kBAAkB,CAAI,GAAA,QAAA,CAAgB,EAAE,CAAA;AAC/D,EAAM,MAAA;AAAA,IACJ,IAAM,EAAA,YAAA;AAAA,IACN,OAAA;AAAA,IACA,KAAA;AAAA,IACA;AAAA,MACE,yBAA0B,CAAA;AAAA,IAC5B,SAAW,EAAA;AAAA,MACT,QAAU,EAAA;AAAA,QACR,OAAA;AAAA,QACA,IAAM,EAAA,kBAAA;AAAA,QACN,IAAM,EAAA;AAAA,OACR;AAAA,MACA,KAAO,EAAA;AAAA;AACT,GACD,CAAA;AACD,EAAe,cAAA,CAAAA,cAAA,CAAM,YAAY,MAAM;AACrC,IAAA,IAAI,OAAS,EAAA;AACX,MAAQ,OAAA,CAAA;AAAA,QACN,QAAU,EAAA;AAAA,UACR,OAAA;AAAA,UACA,IAAM,EAAA,kBAAA;AAAA,UACN,IAAM,EAAA;AAAA,SACR;AAAA,QACA,KAAO,EAAA;AAAA,OACR,CAAA;AAAA;AAEH,IAAA,OAAO,MAAM;AAAA,KAGb;AAAA,GACC,EAAA,CAAC,OAAO,CAAC,CAAC,CAAA;AACb,EAAA,SAAA,CAAU,MAAM;AA/DlB,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAgEI,IAAA,IAAI,YAAc,EAAA;AAChB,MAAIC,IAAAA,SAAAA,GAAAA,CAAgB,kDAAc,cAAd,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAA8B,OAAO,CAAC,CAAA,KAAW,CAAE,CAAA,IAAA,KAAS,QAAS,CAAA,MAAA,CAAA;AACzF,MAAAA,aAAW,EAAAA,GAAAA,CAAAA,EAAAA,GAAAA,SAAAA,IAAA,gBAAAA,SAAU,CAAA,KAAA,EAAA,KAAV,mBAAmB,IAAK,CAAA,CAAC,CAAQ,EAAA,CAAA,KAAW,EAAE,KAAM,CAAA,aAAA,CAAc,EAAE,KAAK,CAAA,CAAA,KAAzE,YAA+E,EAAC;AAC3F,MAAY,WAAA,CAAA,CAAC,gBAAqB,MAAO,CAAA,CAAC,GAAGA,SAAU,EAAA,GAAG,WAAW,CAAA,EAAG,CAAC;AAAA,QACvE;AAAA,OACF,KAAM,EAAE,CAAC,CAAA;AACT,MAAmB,kBAAA,CAAA,CAAC,gBAAqB,MAAO,CAAA,CAAC,GAAGA,SAAU,EAAA,GAAG,WAAW,CAAA,EAAG,CAAC;AAAA,QAC9E;AAAA,OACF,KAAM,EAAE,CAAC,CAAA;AAAA;AACX,GACF,EAAG,CAAC,YAAY,CAAC,CAAA;AACjB,EAAA,SAAA,CAAU,MAAM;AACd,IAAI,IAAA,UAAA;AAAY,MAAA,UAAA,CAAW,UAAW,CAAA;AAAA,QAEpC,gBAAkB,EAAA,MAAA;AAAA,QAClB,gBAAkB,EAAA;AAAA,UAChB,iBAAmB,EAAA;AAAA,SACrB;AAAA,QACA,UAAY,EAAA,CAAC,KAAe,qBAAAD,cAAA,CAAA,aAAA,CAAC,UAAO,OAAS,EAAA,MAAM,UAAW,CAAA,MAAA,IAAU,OAAS,EAAA,MAAA,EAAA,kBAC9DA,cAAA,CAAA,aAAA,CAAA,UAAA,EAAA,IAAA,EAAW,QAAM,CACtB,CAAA;AAAA,QACd,WAAA,EAAa,CAAC,KAAA,qBAAgBA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAO,SAAS,MAAM,UAAA,CAAW,QAAS,CAAA,gBAAA,CAAiB,UAAY,EAAA;AAAA,UACnG;AAAA,SACD,CAAG,EAAA,OAAA,EAAS,0BACMA,cAAA,CAAA,aAAA,CAAA,UAAA,EAAA,IAAA,EAAW,QAAM,CACtB,CAAA;AAAA,QACd,WAAa,EAAA,CAAC,KAAe,qBAAAA,cAAA,CAAA,aAAA,CAAC,GACZ,EAAA,IAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,IAAK,EAAA,EAAA,KAAA,EAAO,MAAO,CAAA,KAAA,EAAO,SAAU,EAAA,qBAAA,EAAA,EAAsB,UAE3D,CACJ,CAAA;AAAA,QACd,WAAa,EAAA;AAAA,UACX,iBAAmB,EAAA,CAAA;AAAA,UACnB,WAAa,EAAA;AAAA;AACf,OACD,CAAA;AAAA,GACA,EAAA,CAAC,QAAU,EAAA,UAAU,CAAC,CAAA;AACzB,EAAM,MAAA,SAAA,GAAY,CAAC,IAAc,KAAA;AArGnC,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAsGI,IAAW,UAAA,CAAA,QAAA,CAAS,iBAAiB,cAAgB,EAAA;AAAA,MACnD,SAAA,EAAA,CAAW,EAAM,GAAA,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAA,EAAA,KAAN,IAAU,GAAA,MAAA,GAAA,EAAA,CAAA,QAAA,EAAA;AAAA,MACrB,KAAA,EAAA,CAAO,EAAM,GAAA,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAA,KAAA,KAAN,IAAa,GAAA,MAAA,GAAA,EAAA,CAAA,QAAA,EAAA;AAAA,MACpB,YAAA,EAAA,CAAc,EAAM,GAAA,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAA,OAAA,KAAN,IAAe,GAAA,MAAA,GAAA,EAAA,CAAA,MAAA;AAAA,MAC7B,UAAY,EAAA;AAAA,KACb,CAAA;AAAA,GACH;AAmCA,EAA4BA,cAAM,CAAA,OAAA,CAAQ,MAAM;AAC9C,IAAA,MAAM,GAAM,GAAA,QAAA,CAAS,MAAO,CAAA,CAAC,CAAG,EAAA;AAAA,MAC9B,EAAA;AAAA,MACA,KAAA;AAAA,MACA,IAAA;AAAA,MACA;AAAA,KACI,KAAA;AACJ,MAAA,MAAM,IAAI,KAAM,CAAA,CAAA,CAAA;AAChB,MAAA,IAAI,CAAC,CAAE,CAAA,CAAA,CAAA;AAAI,QAAA,CAAA,CAAE,KAAK,CAAC;AAAA,UACjB,EAAA;AAAA,UACA,KAAA;AAAA,UACA,IAAA;AAAA,UACA;AAAA,SACD,CAAA;AAAA;AAAO,QAAA,CAAA,CAAE,GAAG,IAAK,CAAA;AAAA,UAChB,EAAA;AAAA,UACA,KAAA;AAAA,UACA,IAAA;AAAA,UACA;AAAA,SACD,CAAA;AACD,MAAO,OAAA,CAAA;AAAA,KACT,EAAG,EAAE,CAAA;AACL,IAAA,MAAM,SAAS,MAAO,CAAA,OAAA,CAAQ,GAAG,CAAA,CAAE,KAAK,CAAC,CAAC,CAAC,CAAA,EAAG,CAAC,CAAC,CAAA,KAAM,CAAE,CAAA,aAAA,CAAc,CAAC,CAAC,CAAA;AACxE,IAAA,MAAM,qBAAqB,MAAO,CAAA,GAAA,CAAI,CAAC,CAAC,GAAA,EAAK,KAAK,CAAM,KAAA;AACtD,MAAO,OAAA;AAAA,QACL,KAAO,EAAA,GAAA;AAAA,QACP,IAAM,EAAA;AAAA,OACR;AAAA,KACD,CAAA;AACD,IAAO,OAAA,kBAAA;AAAA,GACT,EAAG,CAAC,QAAQ,CAAC;AACb,EAAA,MAAM,cAAiB,GAAAA,cAAA,CAAM,WAAY,CAAA,CAAC,CAAW,KAAA;AACnD,IAAA,IAAI,CAAG,EAAA;AACL,MAAA,MAAM,eAAkB,GAAA,QAAA,CAAS,MAAO,CAAA,CAAC,CAAQ,KAAA;AA/KvD,QAAA,IAAA,EAAA;AA+K0D,QAAA,OAAA,CAAA,EAAA,GAAA,CAAA,IAAA,IAAA,GAAA,MAAA,GAAA,CAAA,CAAG,KAAH,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAU,WAAc,EAAA,CAAA,QAAA,CAAS,CAAG,IAAA,IAAA,GAAA,MAAA,GAAA,CAAA,CAAA,WAAA,EAAA,CAAA;AAAA,OAAc,CAAA;AACtG,MAAA,WAAA,CAAY,eAAe,CAAA;AAAA,KACtB,MAAA;AACL,MAAA,WAAA,CAAY,cAAc,CAAA;AAAA;AAC5B,GACC,EAAA,CAAC,cAAgB,EAAA,QAAQ,CAAC,CAAA;AAC7B,EAAO,uBAAAA,cAAA,CAAA,aAAA,CAAC,gBAAa,KAAO,EAAA;AAAA,IAC1B,IAAM,EAAA,CAAA;AAAA,IACN,eAAiB,EAAA;AAAA,uBAERA,cAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAI,WAAU,iBACX,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,SAAM,KAAO,EAAA;AAAA,IACtB,SAAW,EAAA;AAAA,GACV,EAAA,OAAA,EAAQ,SAAU,EAAA,SAAA,EAAU,2CACjB,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,SAAU,EAAA,EAAA,SAAA,EAAU,MACjB,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,SAAU,EAAA,EAAA,KAAA,EAAO,OAAO,KAAO,EAAA,EAAA,EAAI,UAAY,EAAA,CACpD,CACA,kBAAAA,cAAA,CAAA,aAAA,CAAC,UAAW,EAAA,EAAA,IAAA,EAAK,QAAO,IAAK,EAAA,IAAA,EAAK,WAAY,EAAA,QAAA,EAAS,oBAAsB,EAAA,SAAA,EAAW,SAAU,EAAA,yCAAA,EAA0C,UAAU,CAAC;AAAA,IACjK,WAAa,EAAA;AAAA,MACX,UAAA;AAAA,MACA,MAAA;AAAA,MACA;AAAA;AACF,GACI,KAAA;AACJ,IAAA,cAAA,CAAe,IAAI,CAAA;AAAA,GACrB,EAAG,gBAAgB,MAAQ,EAAA,WAAA,EAAa,OAAO,CACvC,CAAA,+CACC,OAAQ,EAAA,IAAA,CAAA,+CAER,GAAI,EAAA,EAAA,SAAA,EAAU,4BACVA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAO,WAAU,QACd,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,YAAS,qBAAuB,EAAA;AAAA,IAC7C,QAAU,EAAA,CAAA;AAAA,IACV,aAAe,EAAA;AAAA,KACd,KAAO,EAAA;AAAA,IACR,KAAO,EAAA,MAAA;AAAA,IACP,MAAQ,EAAA,MAAA;AAAA,IACR,QAAU,EAAA,MAAA;AAAA,IACV,aAAe,EAAA,EAAA;AAAA,IACf,YAAc,EAAA;AAAA,GACb,EAAA,IAAA,EAAM,QAAW,GAAA,QAAA,GAAW,EAAC,EAAG,YAAc,EAAA,CAAC,IAAW,EAAA,KAAA,KAAe,IAAO,GAAA,KAAA,EAAO,YAAY,CAAC;AAAA,IACrG;AAAA,GACF,qBAAYA,cAAA,CAAA,aAAA,CAAA,kBAAA,EAAA,EAAmB,aAAe,EAAA,aAAA,EAAe,eAAe,GAAK,EAAA,GAAA,EAAK,IAAK,CAAA,EAAA,EAAI,KAAO,EAAA;AAAA,IACpG,SAAW,EAAA;AAAA,GACV,EAAA,OAAA,EAAS,MAAM,SAAA,CAAU,IAAI,CACN,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,GAAI,EAAA,EAAA,SAAA,EAAU,eACX,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,MAAO,EAAA,EAAA,KAAA,EAAM,wBACTA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAO,SAAU,EAAA,wBAAA,EAAyB,KAAO,EAAA,IAAA,EAAA,kBAC7CA,cAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAK,OAAO,MAAO,CAAA,WAAA,EAAA,EACf,IAAK,CAAA,IAAA,IAAQ,QAAS,CAAA,OAAA,mBACfA,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,eAAY,KAAO,EAAA,SAAA,EAAW,IAAK,EAAA,MAAA,EAAO,IAAM,EAAA,EAAA,EAAI,CACzD,CAAA,gDAAO,QAAS,EAAA,EAAA,KAAA,EAAM,SAAU,EAAA,IAAA,EAAK,MAAO,EAAA,IAAA,EAAM,EAAI,EAAA,CAC9D,mBAECA,cAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAI,SAAU,EAAA,MAAA,EAAA,kBACVA,cAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAK,KAAO,EAAA,MAAA,CAAO,eAAc,IAAK,CAAA,KAAM,CAEjD,CACJ,CACJ,CACJ,CACJ,CAAA,EAAuB,oBAAoB,MAAM;AACrE,IAAA,oDAAQ,GAAI,EAAA,EAAA,SAAA,EAAU,UACO,OAAU,mBAAAA,cAAA,CAAA,aAAA,CAAC,WAAQ,KAAO,EAAA,MAAA,CAAO,KAAK,GAAM,CAAA,EAAA,CAAA,gDAAM,IAAK,EAAA,EAAA,KAAA,EAAO,OAAO,IAAK,CAAA,GAAA,CAAA,EAAA,EAAM,mBAAiB,CACtG,CAAA;AAAA,KACvB,GAAK,EAAA,sBAAA,EAAwB,CACtB,CACJ,CAeJ,CACJ,CAAA;AACR,CAAA;AACA,MAAM,MAAA,GAAS,WAAW,MAAO,CAAA;AAAA,EAC/B,SAAW,EAAA;AAAA,IACT,IAAM,EAAA,CAAA;AAAA,IAEN,OAAS,EAAA;AAAA,GACX;AAAA,EACA,QAAU,EAAA;AAAA,IACR,eAAiB,EAAA,CAAA;AAAA,IACjB,SAAW,EAAA;AAAA,GACb;AAAA,EACA,WAAa,EAAA;AAAA,IACX,KAAA,EAAO,OAAO,KAAM,CAAA,IAAA;AAAA,IACpB,QAAU,EAAA,EAAA;AAAA,IACV,UAAY,EAAA;AAAA;AAEhB,CAAC,CAAA;AACD,iBAAeA,cAAA,CAAM,KAAK,QAAQ,CAAA"}
|
|
1
|
+
{"version":3,"file":"Channels.js","sources":["../../../src/screens/Channels/Channels.tsx"],"sourcesContent":["import React, { useState, useEffect, useLayoutEffect } from 'react';\nimport { StyleSheet, TouchableHighlight, Dimensions, SafeAreaView } from 'react-native';\nimport {\n Input,\n InputField,\n InputSlot,\n InputIcon,\n SearchIcon,\n Button,\n ButtonText,\n View,\n Text,\n VStack,\n Box,\n Fab,\n FlatList,\n Divider,\n HStack,\n SectionList,\n Center,\n Heading,\n Spinner,\n Avatar,\n Badge,\n BadgeText,\n Pressable,\n} from '@admin-layout/gluestack-ui-mobile';\nimport Colors from '../../constants/Colors';\nimport { NavigationRoutes } from '../../constants/routes';\nimport { AntDesign } from '@expo/vector-icons';\n// import VirtualizedScrollView from '../VirtualizedScrollView';\nimport { RoomType } from 'common';\nimport { useGetChannelsByUserQuery, useGetChannelsByUserLazyQuery } from 'common/graphql';\nimport { useIsFocused, useFocusEffect, useNavigation } from '@react-navigation/native';\n// import { navigationRef } from '@common-stack/client-react';\nimport { FontAwesome, Feather, Octicons, MaterialIcons } from '@expo/vector-icons';\nimport colors from 'tailwindcss/colors';\nimport { StatusBar } from 'expo-status-bar';\nimport { NavigationHeader, ChannelsByAlphabeticalAccordion } from '../../components';\nimport { useDrawerLayout } from '../../hooks';\nimport { startCase, orderBy, uniqBy } from 'lodash-es';\n\nconst windowWidth = Dimensions.get('window').width;\nconst windowHeight = Dimensions.get('window').height;\n\nconst defaultChannelType = [RoomType.Channel, RoomType.Private, RoomType.Public];\n\nconst Channels = ({ navigation, route }: any) => {\n const { orgName, organizationDetail } = useDrawerLayout();\n const navigationRef = useNavigation<any>();\n const isFocused = useIsFocused();\n const [channels, setChannels] = useState<any[]>([]);\n const [intialChannels, setInitialChannels] = useState<any[]>([]);\n const [searchQuery, setSearchQuery] = useState<string>('');\n\n const {\n data: channelsData,\n loading,\n error,\n refetch,\n } = useGetChannelsByUserQuery({\n variables: {\n criteria: {\n orgName: orgName,\n type: defaultChannelType,\n team: null,\n },\n limit: 50,\n },\n });\n\n useFocusEffect(\n React.useCallback(() => {\n if (orgName) {\n refetch({\n criteria: {\n orgName: orgName,\n type: defaultChannelType,\n team: null,\n },\n limit: 50,\n });\n }\n return () => {\n // Do something when the screen is unfocused\n // Useful for cleanup functions\n };\n }, [orgName]),\n );\n\n useEffect(() => {\n if (channelsData) {\n let channels: any = channelsData?.channelsByUser?.filter((i: any) => i.type !== RoomType.Direct);\n channels = channels?.slice()?.sort((a: any, b: any) => a.title.localeCompare(b.title)) ?? [];\n setChannels((oldChannels: any) => uniqBy([...channels, ...oldChannels], ({ id }) => id));\n setInitialChannels((oldChannels: any) => uniqBy([...channels, ...oldChannels], ({ id }) => id));\n }\n }, [channelsData]);\n\n useEffect(() => {\n if (navigation)\n navigation.setOptions({\n // headerShown: true,\n headerTitleAlign: 'left',\n headerTitleStyle: {\n borderBottomWidth: 1,\n },\n headerLeft: (props: any) => (\n <Button onPress={() => navigation.goBack()} variant={'link'}>\n <ButtonText>Cancel</ButtonText>\n </Button>\n ),\n headerRight: (props: any) => (\n <Button\n onPress={() => navigation.navigate(NavigationRoutes.AddChannel, { orgName })}\n variant={'link'}\n >\n <ButtonText>Create</ButtonText>\n </Button>\n ),\n headerTitle: (props: any) => (\n <Box>\n <Text color={colors.black} className=\"text-[15] font-bold\">\n Channels\n </Text>\n </Box>\n ),\n headerStyle: {\n borderBottomWidth: 1,\n borderColor: '#d1d2d3',\n },\n });\n }, [channels, navigation]);\n\n const openInbox = (item: any) => {\n navigation.navigate(NavigationRoutes.DialogMessages, {\n channelId: item?.id?.toString(),\n title: item?.title?.toString(),\n totalMembers: item?.members?.length,\n hideTabBar: true,\n });\n };\n\n // const renderUserChannelItem = ({ item }: any) => {\n // return (\n // <TouchableHighlight\n // underlayColor={'transparent'}\n // activeOpacity={0.5}\n // key={item.id}\n // style={{ marginTop: 1 }}\n // onPress={() => openInbox(item?.id, item?.title, item?.members?.length)}\n // >\n // <Box bg={'#fff'} shadow={1} py={2}>\n // <VStack space=\"5\">\n // {/* <Box px=\"4\" pt=\"4\"> */}\n // <HStack px=\"4\" py={1} space={2}>\n // <Text style={styles.headingText}>#</Text>\n // {/* <Box px=\"4\" py={1}> */}\n // <Box px=\"2\">\n // <Text style={styles.headingText}>{item.title}</Text>\n // <Text>You are a memeber</Text>\n // </Box>\n // </HStack>\n // {/* <Box px=\"4\" py={1}>\n // <Text style={styles.headingText}># {item.title}</Text>\n // <Text > You are a memeber</Text>\n // </Box> */}\n // {/* <Box px=\"4\" pb={2}>\n // You are a memeber\n // </Box> */}\n // </VStack>\n // </Box>\n // </TouchableHighlight>\n // );\n // };\n\n const sortedChannels: any = React.useMemo(() => {\n const obj = channels.reduce((r, { id, title, type, members }) => {\n const l = title[0];\n if (!r[l]) r[l] = [{ id, title, type, members }];\n else r[l].push({ id, title, type, members });\n return r;\n }, {});\n\n const sorted = Object.entries(obj).sort(([a], [b]) => a.localeCompare(b));\n\n const sortedFilteredData = sorted.map(([key, value]) => {\n return {\n title: key,\n data: value,\n };\n });\n\n return sortedFilteredData;\n }, [channels]);\n\n const searchChannels = React.useCallback(\n (text: string) => {\n setSearchQuery(text);\n if (text) {\n const searchedChannel = intialChannels.filter((o: any) =>\n o?.title?.toLowerCase().includes(text?.toLowerCase()),\n );\n setChannels(searchedChannel);\n } else {\n setChannels(intialChannels);\n }\n },\n [intialChannels],\n );\n\n const renderChannelIcon = (type: RoomType) => {\n if (type === RoomType.Private) {\n return <FontAwesome color={'#525252'} name=\"lock\" size={18} />;\n } else {\n return <Octicons color=\"#525252\" name=\"hash\" size={18} />;\n }\n };\n\n const renderChannelItem = ({ item }: any) => (\n <Pressable onPress={() => openInbox(item)}>\n {({ pressed }) => (\n <Box\n className={`py-4 ${pressed ? 'bg-gray-100' : 'bg-white'} border-b border-gray-200`}\n style={{ borderBottomColor: colors.gray[300] }}\n >\n <HStack className=\"px-4 items-center\">\n <Box className=\"mr-2\">{renderChannelIcon(item.type)}</Box>\n <VStack>\n <Text className=\"font-medium text-lg text-gray-900\" numberOfLines={1} ellipsizeMode=\"tail\">\n {item.title}\n </Text>\n <Text className=\"text-gray-600 text-sm\" numberOfLines={1} ellipsizeMode=\"tail\">\n {item.description || 'Test des'}\n </Text>\n </VStack>\n {/* <Box className=\"ml-auto\">\n <Box className=\"bg-gray-200 rounded-full w-6 h-6 items-center justify-center\">\n <Text className=\"text-xs text-gray-600 font-medium\">1</Text>\n </Box>\n </Box> */}\n </HStack>\n </Box>\n )}\n </Pressable>\n );\n\n const renderEmptyList = () => (\n <Center className=\"flex-1 py-10\">\n {loading ? (\n <VStack className=\"space-y-3 items-center\">\n <Spinner size=\"large\" color={colors.blue[500]} />\n <Text color={colors.gray[600]}>Loading channels...</Text>\n </VStack>\n ) : (\n <VStack className=\"space-y-3 items-center px-4\">\n <Box className=\"rounded-full bg-gray-100 p-4\">\n <Octicons name=\"hash\" size={32} color={colors.gray[400]} />\n </Box>\n <Heading size=\"sm\" style={{ color: colors.gray[800] }}>\n No Channels Found\n </Heading>\n {searchQuery ? (\n <Text className=\"text-center\" style={{ color: colors.gray[600] }}>\n No channels match your search \"{searchQuery}\"\n </Text>\n ) : (\n <Text className=\"text-center\" style={{ color: colors.gray[600] }}>\n Create a new channel to get started\n </Text>\n )}\n <Button\n onPress={() => navigation.navigate(NavigationRoutes.AddChannel, { orgName })}\n className=\"mt-2\"\n >\n <ButtonText>Create Channel</ButtonText>\n </Button>\n </VStack>\n )}\n </Center>\n );\n\n return (\n <SafeAreaView style={{ flex: 1, backgroundColor: 'white' }}>\n <StatusBar style=\"dark\" />\n <Box className=\"flex-1 bg-white\">\n <Box className=\"px-4 py-2\" style={{ paddingVertical: 10 }}>\n <Input\n variant=\"outline\"\n className=\"bg-white rounded-3xl border border-gray-300\"\n style={{ borderRadius: 10, borderColor: colors.gray[300], paddingHorizontal: 10 }}\n size=\"lg\"\n >\n <InputSlot className=\"pl-3\">\n <InputIcon color={colors.gray[500]} as={SearchIcon} />\n </InputSlot>\n <InputField\n type=\"text\"\n size=\"md\"\n placeholder=\"Search channels\"\n placeholderTextColor={colors.gray[400]}\n className=\"px-3 py-2 text-base\"\n value={searchQuery}\n onChangeText={searchChannels}\n autoCapitalize=\"none\"\n autoCorrect={false}\n clearButtonMode=\"while-editing\"\n />\n </Input>\n </Box>\n\n <Box className=\"flex-1\">\n <FlatList\n contentContainerStyle={{\n flexGrow: 1,\n paddingBottom: 80,\n }}\n data={channels}\n keyExtractor={(item: any) => item.id.toString()}\n renderItem={renderChannelItem}\n ListEmptyComponent={renderEmptyList}\n showsVerticalScrollIndicator={false}\n ItemSeparatorComponent={null}\n />\n </Box>\n\n <Fab\n onPress={() => navigation.navigate(NavigationRoutes.AddChannel, { orgName })}\n className=\"bg-blue-500 mb-16 mr-4\"\n $pressed-className=\"bg-blue-600\"\n size=\"lg\"\n placement=\"bottom right\"\n >\n <AntDesign color=\"white\" name=\"plus\" size={24} />\n </Fab>\n </Box>\n </SafeAreaView>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n //justifyContent: 'center',\n padding: 20,\n },\n itemView: {\n paddingVertical: 8,\n marginTop: 5,\n },\n headingText: {\n color: Colors.light.text,\n fontSize: 16,\n fontWeight: '400',\n },\n channelTitle: {\n color: colors.gray[900],\n fontSize: 16,\n fontWeight: '500',\n },\n channelDescription: {\n color: colors.gray[600],\n fontSize: 14,\n marginTop: 2,\n },\n});\n\nexport default React.memo(Channels);\n"],"names":["React","channels"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {useNavigation,useIsFocused,useFocusEffect}from'@react-navigation/native';import React__default,{useState,useEffect}from'react';import {TouchableOpacity}from'react-native';import'../../../../constants/device.js';import'../../../../constants/globalStyles.js';import'../../../../constants/Layout.js';import {NavigationRoutes}from'../../../../constants/routes.js';import {View,HStack,Text,Spinner,Pressable,Box,FlatList}from'@admin-layout/gluestack-ui-mobile';import {userSelector}from'@adminide-stack/user-auth0-client';import {useSelector,shallowEqual}from'react-redux';import styles from'../../styles.js';import {
|
|
1
|
+
import {useNavigation,useIsFocused,useFocusEffect}from'@react-navigation/native';import React__default,{useState,useEffect}from'react';import {TouchableOpacity}from'react-native';import'../../../../constants/device.js';import'../../../../constants/globalStyles.js';import'../../../../constants/Layout.js';import {NavigationRoutes}from'../../../../constants/routes.js';import {View,HStack,Text,Spinner,Pressable,Box,FlatList}from'@admin-layout/gluestack-ui-mobile';import {userSelector}from'@adminide-stack/user-auth0-client';import {useSelector,shallowEqual}from'react-redux';import styles from'../../styles.js';import {RoomType}from'common';import {useGetChannelsByUserQuery}from'common/graphql';import {MaterialIcons,Feather}from'@expo/vector-icons';import'expo-font';import'expo-splash-screen';import {useDrawerLayout}from'../../../../hooks/useDrawerLayout.js';import'../../../../hooks/useExpoNotificationProvider.js';import {useDisclose}from'../../../../hooks/useDisclose.js';import colors from'tailwindcss/colors';import'./channels-xstate.js';import {useSafeChannelsMachine}from'./useSafeChannelsMachine.js';const defaultChannelType = [RoomType.Channel, RoomType.Private, RoomType.Public];
|
|
2
2
|
const Channels = () => {
|
|
3
3
|
const {
|
|
4
4
|
isOpen,
|
|
@@ -31,7 +31,7 @@ const Channels = () => {
|
|
|
31
31
|
type: defaultChannelType,
|
|
32
32
|
team: null
|
|
33
33
|
},
|
|
34
|
-
limit:
|
|
34
|
+
limit: 11
|
|
35
35
|
},
|
|
36
36
|
onCompleted(data) {
|
|
37
37
|
send({
|
|
@@ -81,7 +81,7 @@ const Channels = () => {
|
|
|
81
81
|
type: defaultChannelType,
|
|
82
82
|
team: null
|
|
83
83
|
},
|
|
84
|
-
limit:
|
|
84
|
+
limit: 11
|
|
85
85
|
}).then((res) => {
|
|
86
86
|
var _a;
|
|
87
87
|
if ((_a = res == null ? void 0 : res.data) == null ? void 0 : _a.channelsByUser) {
|
|
@@ -95,7 +95,7 @@ const Channels = () => {
|
|
|
95
95
|
});
|
|
96
96
|
}
|
|
97
97
|
}, [orgName, send, state.context.channelsLoading]);
|
|
98
|
-
|
|
98
|
+
React__default.useCallback((skip) => {
|
|
99
99
|
var _a;
|
|
100
100
|
send({
|
|
101
101
|
type: "FETCH_MORE_CHANNELS"
|
|
@@ -119,15 +119,6 @@ const Channels = () => {
|
|
|
119
119
|
});
|
|
120
120
|
});
|
|
121
121
|
}, [orgName, send]);
|
|
122
|
-
React__default.useMemo(() => {
|
|
123
|
-
var _a;
|
|
124
|
-
return channels && (channels == null ? void 0 : channels.length) && take(orderBy(uniqBy((_a = [...channels]) == null ? void 0 : _a.filter((i) => i.type !== RoomType.Direct), ({
|
|
125
|
-
id
|
|
126
|
-
}) => id), [(ch) => {
|
|
127
|
-
var _a2;
|
|
128
|
-
return (_a2 = ch == null ? void 0 : ch.title) == null ? void 0 : _a2.toLowerCase();
|
|
129
|
-
}], ["asc"]), 20) || [];
|
|
130
|
-
}, [channels]);
|
|
131
122
|
const openInbox = React__default.useCallback((id, title, totalMembers, type) => {
|
|
132
123
|
navigation.navigate(NavigationRoutes.DialogMessages, {
|
|
133
124
|
channelId: id == null ? void 0 : id.toString(),
|
|
@@ -156,7 +147,7 @@ const Channels = () => {
|
|
|
156
147
|
var _a;
|
|
157
148
|
return openInbox(item == null ? void 0 : item.id, item == null ? void 0 : item.title, (_a = item == null ? void 0 : item.members) == null ? void 0 : _a.length, item == null ? void 0 : item.type);
|
|
158
149
|
} }, /* @__PURE__ */ React__default.createElement(Box, { style: {
|
|
159
|
-
paddingVertical:
|
|
150
|
+
paddingVertical: 2,
|
|
160
151
|
paddingHorizontal: 1,
|
|
161
152
|
marginVertical: 1
|
|
162
153
|
} }, /* @__PURE__ */ React__default.createElement(HStack, { space: "md", className: "flex-1 items-center" }, /* @__PURE__ */ React__default.createElement(Box, { style: {
|
|
@@ -166,6 +157,24 @@ const Channels = () => {
|
|
|
166
157
|
alignItems: "center",
|
|
167
158
|
justifyContent: "center"
|
|
168
159
|
} }, /* @__PURE__ */ React__default.createElement(Text, { className: "text-black font-medium" }, "#")), /* @__PURE__ */ React__default.createElement(Text, { className: "text-gray-700 flex-1" }, item.title))));
|
|
169
|
-
},
|
|
160
|
+
}, ListFooterComponent: () => {
|
|
161
|
+
return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, showMoreChannels && (channels == null ? void 0 : channels.length) > 10 && /* @__PURE__ */ React__default.createElement(TouchableOpacity, { onPress: () => navigation.navigate(NavigationRoutes.Channels, {
|
|
162
|
+
orgName
|
|
163
|
+
}) }, /* @__PURE__ */ React__default.createElement(Box, { style: {
|
|
164
|
+
paddingVertical: 4,
|
|
165
|
+
paddingHorizontal: 4,
|
|
166
|
+
marginVertical: 1
|
|
167
|
+
} }, /* @__PURE__ */ React__default.createElement(HStack, { space: "md", className: "flex-1 items-center" }, /* @__PURE__ */ React__default.createElement(MaterialIcons, { color: "black", name: "search", size: 18 }), /* @__PURE__ */ React__default.createElement(Text, { className: "text-black" }, "Browse all channels")))), /* @__PURE__ */ React__default.createElement(TouchableOpacity, { onPress: () => navigation.navigate(NavigationRoutes.AddChannel, {
|
|
168
|
+
orgName
|
|
169
|
+
}) }, /* @__PURE__ */ React__default.createElement(Box, { style: {
|
|
170
|
+
paddingVertical: 4,
|
|
171
|
+
paddingHorizontal: 4,
|
|
172
|
+
marginVertical: 1
|
|
173
|
+
} }, /* @__PURE__ */ React__default.createElement(HStack, { space: "md", className: "flex-1 items-center" }, /* @__PURE__ */ React__default.createElement(Feather, { color: "black", name: "plus", size: 18 }), /* @__PURE__ */ React__default.createElement(Text, { style: {
|
|
174
|
+
fontSize: 16,
|
|
175
|
+
fontWeight: "400",
|
|
176
|
+
color: "black"
|
|
177
|
+
} }, "Add Channel")))));
|
|
178
|
+
}, keyExtractor: (item) => String(item.id) })));
|
|
170
179
|
};
|
|
171
180
|
var Channels$1 = React__default.memo(Channels);export{Channels$1 as default};//# sourceMappingURL=Channels.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Channels.js","sources":["../../../../../src/screens/Home/Components/Channels/Channels.tsx"],"sourcesContent":["import { useIsFocused, useFocusEffect } from '@react-navigation/native';\nimport React, { useState, useEffect, useLayoutEffect } from 'react';\nimport { TouchableOpacity, Share, Modal } from 'react-native';\nimport { NavigationRoutes } from '../../../../constants';\nimport {\n Pressable,\n View,\n Image,\n FlatList,\n Icon,\n AddIcon,\n Box,\n Text,\n Avatar,\n Spinner,\n VStack,\n HStack,\n Button,\n ButtonText,\n} from '@admin-layout/gluestack-ui-mobile';\nimport { userSelector, isUserAuthenticated } from '@adminide-stack/user-auth0-client';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport { useNavigation } from '@react-navigation/native';\nimport { navigationRef } from '@common-stack/client-react';\nimport styles from '../../styles';\nimport { startCase, orderBy, uniqBy, take } from 'lodash-es';\nimport { RoomType } from 'common';\nimport { useGetChannelsByUserQuery } from 'common/graphql';\nimport { FontAwesome, Feather, Octicons, MaterialIcons } from '@expo/vector-icons';\nimport { useDrawerLayout, useDisclose } from '../../../../hooks';\nimport colors from 'tailwindcss/colors';\nimport ActionSheet from '../../../../components/Actionsheet';\nimport { channelsXstate } from './channels-xstate';\nimport { useSafeChannelsMachine } from './useSafeChannelsMachine';\n\nconst defaultChannelType = [RoomType.Channel, RoomType.Private, RoomType.Public];\n\nconst Channels = () => {\n const { isOpen, onOpen, onClose } = useDisclose();\n const navigation = useNavigation<any>();\n const [expandable, setExpendable] = useState(true);\n const user: any = useSelector(userSelector, shallowEqual);\n const { orgName } = useDrawerLayout();\n const isFocused = useIsFocused();\n\n // Using the safe XState machine hook\n const [state, send] = useSafeChannelsMachine(channelsXstate);\n\n const { channels, loading, channelsLoading, showMoreChannels } = state.context;\n\n const actionItems = [\n {\n id: 1,\n label: 'Create Channel',\n onPress: () => navigation.navigate(NavigationRoutes.Channels, { orgName }),\n },\n {\n id: 2,\n label: 'Browse Channels',\n onPress: () => navigation.navigate(NavigationRoutes.Channels, { orgName }),\n },\n ];\n\n // GraphQL Queries\n const {\n data: userChannels,\n loading: userChannelsLoading,\n refetch: reFetchUserChannels,\n fetchMore: fetchMoreUserChannels,\n } = useGetChannelsByUserQuery({\n variables: {\n criteria: {\n orgName: orgName,\n type: defaultChannelType,\n team: null,\n },\n limit: 21,\n },\n onCompleted(data) {\n send({\n type: 'SET_CHANNELS',\n data: { channels: data?.channelsByUser || [] },\n });\n },\n });\n\n // Initialize XState with the org name on mount\n useEffect(() => {\n if (orgName) {\n console.log('Channels: Initializing state with orgName:', orgName);\n send({\n type: 'INITIAL_CONTEXT',\n data: { orgName },\n });\n }\n\n return () => {\n send({ type: 'CLEAR_DATA' });\n };\n }, [orgName]);\n\n useFocusEffect(\n React.useCallback(() => {\n // Only fetch channels when first focused or when we don't have any channels\n if (!channels || channels.length === 0) {\n reFetchChannels();\n }\n\n return () => {\n // Do something when the screen is unfocused\n // Useful for cleanup functions\n };\n }, [channels]),\n );\n\n const reFetchChannels = React.useCallback(() => {\n // Skip refetch if we're already loading\n if (state.context.channelsLoading) {\n console.log('Skipping channels refetch - already in progress');\n return;\n }\n\n if (orgName) {\n console.log('Refetching channels');\n send({ type: 'REFETCH_CHANNELS' });\n reFetchUserChannels({\n criteria: {\n orgName: orgName,\n type: defaultChannelType,\n team: null,\n },\n limit: 21,\n }).then((res) => {\n if (res?.data?.channelsByUser) {\n send({\n type: 'SET_CHANNELS',\n data: { channels: res.data.channelsByUser },\n });\n }\n });\n }\n }, [orgName, send, state.context.channelsLoading]);\n\n const fetchMoreChannels = React.useCallback(\n (skip: number) => {\n send({ type: 'FETCH_MORE_CHANNELS' });\n fetchMoreUserChannels({\n variables: {\n criteria: {\n orgName: orgName,\n type: defaultChannelType,\n team: null,\n },\n skip,\n },\n })?.then((res: any) => {\n send({\n type: 'FETCH_MORE_CHANNELS_SUCCESS',\n data: { channels: res?.data?.channelsByUser || [] },\n });\n });\n },\n [orgName, send],\n );\n\n const organizationChannels = React.useMemo(() => {\n //Direct channel\n return (\n (channels &&\n channels?.length &&\n take(\n orderBy(\n uniqBy(\n [...channels]?.filter((i: any) => i.type !== RoomType.Direct),\n ({ id }) => id,\n ),\n [(ch: any) => ch?.title?.toLowerCase()],\n ['asc'],\n ),\n 20,\n )) ||\n []\n );\n }, [channels]);\n\n const openInbox = React.useCallback(\n (id: any, title: any, totalMembers: any, type?: any) => {\n navigation.navigate(NavigationRoutes.DialogMessages, {\n channelId: id?.toString(),\n title: title?.toString(),\n totalMembers: totalMembers,\n channelType: type,\n orgName: orgName,\n hideTabBar: true,\n });\n },\n [orgName],\n );\n\n return (\n <View style={[styles.channelContainer, { paddingHorizontal: 10 }]}>\n <TouchableOpacity\n style={[styles.headingContainer, { paddingVertical: 8, marginBottom: 4 }]}\n onPress={() => setExpendable(!expandable)}\n >\n <HStack className=\"flex-1 items-center justify-between\">\n <Text style={{ fontSize: 15, fontWeight: '600', color: '#1f2937' }}>Channels</Text>\n <HStack space={'sm'} className=\"items-center\">\n {channelsLoading && <Spinner size={'small'} color={'$blue600'} />}\n <Pressable onPress={() => navigation.navigate(NavigationRoutes.AddChannel)}>\n <Box className=\"rounded-md w-6 h-6 justify-center items-center\">\n <Text className=\"text-lg text-slate-700\">+</Text>\n </Box>\n </Pressable>\n {expandable ? (\n <MaterialIcons color={'#4b5563'} name={'keyboard-arrow-up'} size={22} />\n ) : (\n <MaterialIcons color={'#4b5563'} name={'keyboard-arrow-down'} size={22} />\n )}\n </HStack>\n </HStack>\n </TouchableOpacity>\n\n {expandable && (\n <>\n {!channelsLoading && !channels?.length ? (\n <Box className=\"py-2 px-1\">\n <Text color={colors.gray[600]}>No channels available</Text>\n </Box>\n ) : (\n <FlatList\n style={{ paddingVertical: 4 }}\n scrollEnabled={false}\n data={\n channels && !channelsLoading\n ? channels?.filter((i: any) => i?.type !== RoomType.Direct)\n : []\n }\n renderItem={({ item }) => {\n return (\n <Pressable\n onPress={() =>\n openInbox(item?.id, item?.title, item?.members?.length, item?.type)\n }\n >\n <Box style={{ paddingVertical: 8, paddingHorizontal: 1, marginVertical: 1 }}>\n <HStack space={'md'} className=\"flex-1 items-center\">\n <Box\n style={{\n width: 24,\n height: 24,\n borderRadius: 4,\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <Text className=\"text-black font-medium\">#</Text>\n </Box>\n <Text className=\"text-gray-700 flex-1\">{item.title}</Text>\n </HStack>\n </Box>\n </Pressable>\n );\n }}\n keyExtractor={(item) => String(item.id)}\n />\n )}\n\n {showMoreChannels && channels?.length >= 20 && (\n <Pressable onPress={() => fetchMoreChannels(channels?.length)} className=\"px-1 py-3\">\n <Text className=\"text-blue-600 font-medium\">Show more channels...</Text>\n </Pressable>\n )}\n </>\n )}\n </View>\n );\n};\n\nexport default React.memo(Channels);\n"],"names":["React","_a"],"mappings":"6nCAmBA,MAAM,qBAAqB,CAAC,QAAA,CAAS,SAAS,QAAS,CAAA,OAAA,EAAS,SAAS,MAAM,CAAA;AAC/E,MAAM,WAAW,MAAM;AACrB,EAAM,MAAA;AAAA,IACJ,MAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,MACE,WAAY,EAAA;AAChB,EAAA,MAAM,aAAa,aAAmB,EAAA;AACtC,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAS,IAAI,CAAA;AACjD,EAAkB,WAAY,CAAA,YAAA,EAAc,YAAY;AACxD,EAAM,MAAA;AAAA,IACJ;AAAA,MACE,eAAgB,EAAA;AACpB,EAAkB,YAAa;AAG/B,EAAA,MAAM,CAAC,KAAA,EAAO,IAAI,CAAA,GAAI,uBAAqC,CAAA;AAC3D,EAAM,MAAA;AAAA,IACJ,QAAA;AAAA,IACA,OAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,MACE,KAAM,CAAA,OAAA;AAgBV,EAAM,MAAA;AAAA,IACJ,IAAM,EAAA,YAAA;AAAA,IACN,OAAS,EAAA,mBAAA;AAAA,IACT,OAAS,EAAA,mBAAA;AAAA,IACT,SAAW,EAAA;AAAA,MACT,yBAA0B,CAAA;AAAA,IAC5B,SAAW,EAAA;AAAA,MACT,QAAU,EAAA;AAAA,QACR,OAAA;AAAA,QACA,IAAM,EAAA,kBAAA;AAAA,QACN,IAAM,EAAA;AAAA,OACR;AAAA,MACA,KAAO,EAAA;AAAA,KACT;AAAA,IACA,YAAY,IAAM,EAAA;AAChB,MAAK,IAAA,CAAA;AAAA,QACH,IAAM,EAAA,cAAA;AAAA,QACN,IAAM,EAAA;AAAA,UACJ,QAAA,EAAA,CAAU,IAAM,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAA,cAAA,KAAkB;AAAC;AACrC,OACD,CAAA;AAAA;AACH,GACD,CAAA;AAGD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,OAAS,EAAA;AACX,MAAQ,OAAA,CAAA,GAAA,CAAI,8CAA8C,OAAO,CAAA;AACjE,MAAK,IAAA,CAAA;AAAA,QACH,IAAM,EAAA,iBAAA;AAAA,QACN,IAAM,EAAA;AAAA,UACJ;AAAA;AACF,OACD,CAAA;AAAA;AAEH,IAAA,OAAO,MAAM;AACX,MAAK,IAAA,CAAA;AAAA,QACH,IAAM,EAAA;AAAA,OACP,CAAA;AAAA,KACH;AAAA,GACF,EAAG,CAAC,OAAO,CAAC,CAAA;AACZ,EAAe,cAAA,CAAAA,cAAA,CAAM,YAAY,MAAM;AAErC,IAAA,IAAI,CAAC,QAAA,IAAY,QAAS,CAAA,MAAA,KAAW,CAAG,EAAA;AACtC,MAAgB,eAAA,EAAA;AAAA;AAElB,IAAA,OAAO,MAAM;AAAA,KAGb;AAAA,GACC,EAAA,CAAC,QAAQ,CAAC,CAAC,CAAA;AACd,EAAM,MAAA,eAAA,GAAkBA,cAAM,CAAA,WAAA,CAAY,MAAM;AAE9C,IAAI,IAAA,KAAA,CAAM,QAAQ,eAAiB,EAAA;AACjC,MAAA,OAAA,CAAQ,IAAI,iDAAiD,CAAA;AAC7D,MAAA;AAAA;AAEF,IAAA,IAAI,OAAS,EAAA;AACX,MAAA,OAAA,CAAQ,IAAI,qBAAqB,CAAA;AACjC,MAAK,IAAA,CAAA;AAAA,QACH,IAAM,EAAA;AAAA,OACP,CAAA;AACD,MAAoB,mBAAA,CAAA;AAAA,QAClB,QAAU,EAAA;AAAA,UACR,OAAA;AAAA,UACA,IAAM,EAAA,kBAAA;AAAA,UACN,IAAM,EAAA;AAAA,SACR;AAAA,QACA,KAAO,EAAA;AAAA,OACR,CAAE,CAAA,IAAA,CAAK,CAAO,GAAA,KAAA;AA9HrB,QAAA,IAAA,EAAA;AA+HQ,QAAI,IAAA,CAAA,EAAA,GAAA,GAAA,IAAA,IAAA,GAAA,MAAA,GAAA,GAAA,CAAK,IAAL,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAW,cAAgB,EAAA;AAC7B,UAAK,IAAA,CAAA;AAAA,YACH,IAAM,EAAA,cAAA;AAAA,YACN,IAAM,EAAA;AAAA,cACJ,QAAA,EAAU,IAAI,IAAK,CAAA;AAAA;AACrB,WACD,CAAA;AAAA;AACH,OACD,CAAA;AAAA;AACH,KACC,CAAC,OAAA,EAAS,MAAM,KAAM,CAAA,OAAA,CAAQ,eAAe,CAAC,CAAA;AACjD,EAAA,MAAM,iBAAoB,GAAAA,cAAA,CAAM,WAAY,CAAA,CAAC,IAAiB,KAAA;AA1IhE,IAAA,IAAA,EAAA;AA2II,IAAK,IAAA,CAAA;AAAA,MACH,IAAM,EAAA;AAAA,KACP,CAAA;AACD,IAAsB,CAAA,EAAA,GAAA,qBAAA,CAAA;AAAA,MACpB,SAAW,EAAA;AAAA,QACT,QAAU,EAAA;AAAA,UACR,OAAA;AAAA,UACA,IAAM,EAAA,kBAAA;AAAA,UACN,IAAM,EAAA;AAAA,SACR;AAAA,QACA;AAAA;AACF,KACD,CAAA,KATD,IASI,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAK,CAAC,GAAa,KAAA;AAvJ3B,MAAAC,IAAAA,GAAAA;AAwJM,MAAK,IAAA,CAAA;AAAA,QACH,IAAM,EAAA,6BAAA;AAAA,QACN,IAAM,EAAA;AAAA,UACJ,YAAUA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,MAAA,GAAA,GAAA,CAAK,SAAL,IAAAA,GAAAA,MAAAA,GAAAA,GAAAA,CAAW,mBAAkB;AAAC;AAC1C,OACD,CAAA;AAAA,KACH,CAAA;AAAA,GACC,EAAA,CAAC,OAAS,EAAA,IAAI,CAAC,CAAA;AAClB,EAA6BD,cAAM,CAAA,OAAA,CAAQ,MAAM;AAhKnD,IAAA,IAAA,EAAA;AAkKI,IAAA,OAAO,aAAY,QAAU,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAA,MAAA,CAAA,IAAU,KAAK,OAAQ,CAAA,MAAA,CAAA,CAAO,MAAC,GAAG,QAAQ,CAAZ,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAe,OAAO,CAAC,CAAA,KAAW,EAAE,IAAS,KAAA,QAAA,CAAS,SAAS,CAAC;AAAA,MACzH;AAAA,KACI,KAAA,EAAE,CAAG,EAAA,CAAC,CAAC,EAAS,KAAA;AApK1B,MAAAC,IAAAA,GAAAA;AAoK6B,MAAA,OAAA,CAAAA,GAAA,GAAA,EAAA,IAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAI,KAAJ,KAAA,IAAA,GAAA,MAAA,GAAAA,GAAW,CAAA,WAAA,EAAA;AAAA,KAAa,GAAG,CAAC,KAAK,CAAC,CAAG,EAAA,EAAE,KAAK,EAAC;AAAA,GACxE,EAAG,CAAC,QAAQ,CAAC;AACb,EAAA,MAAM,YAAYD,cAAM,CAAA,WAAA,CAAY,CAAC,EAAS,EAAA,KAAA,EAAY,cAAmB,IAAe,KAAA;AAC1F,IAAW,UAAA,CAAA,QAAA,CAAS,iBAAiB,cAAgB,EAAA;AAAA,MACnD,WAAW,EAAI,IAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,QAAA,EAAA;AAAA,MACf,OAAO,KAAO,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAA,QAAA,EAAA;AAAA,MACd,YAAA;AAAA,MACA,WAAa,EAAA,IAAA;AAAA,MACb,OAAA;AAAA,MACA,UAAY,EAAA;AAAA,KACb,CAAA;AAAA,GACH,EAAG,CAAC,OAAO,CAAC,CAAA;AACZ,EAAA,uBAAQA,cAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAK,KAAO,EAAA,CAAC,OAAO,gBAAkB,EAAA;AAAA,IAC5C,iBAAmB,EAAA;AAAA,GACpB,CACS,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,oBAAiB,KAAO,EAAA,CAAC,OAAO,gBAAkB,EAAA;AAAA,IACzD,eAAiB,EAAA,CAAA;AAAA,IACjB,YAAc,EAAA;AAAA,GACf,CAAA,EAAG,OAAS,EAAA,MAAM,cAAc,CAAC,UAAU,CAChC,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,MAAO,EAAA,EAAA,SAAA,EAAU,qCACd,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,QAAK,KAAO,EAAA;AAAA,IACvB,QAAU,EAAA,EAAA;AAAA,IACV,UAAY,EAAA,KAAA;AAAA,IACZ,KAAO,EAAA;AAAA,OACN,UAAQ,CAAA,kBACEA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAO,OAAO,IAAM,EAAA,SAAA,EAAU,cAC1B,EAAA,EAAA,eAAA,iDAAoB,OAAQ,EAAA,EAAA,IAAA,EAAM,SAAS,KAAO,EAAA,UAAA,EAAY,mBAC9DA,cAAA,CAAA,aAAA,CAAA,SAAA,EAAA,EAAU,OAAS,EAAA,MAAM,WAAW,QAAS,CAAA,gBAAA,CAAiB,UAAU,CACrE,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,OAAI,SAAU,EAAA,gDAAA,EAAA,kBACVA,cAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAK,WAAU,wBAAyB,EAAA,EAAA,GAAC,CAC9C,CACJ,CAAA,EACC,6BAAcA,cAAA,CAAA,aAAA,CAAA,aAAA,EAAA,EAAc,KAAO,EAAA,SAAA,EAAW,MAAM,mBAAqB,EAAA,IAAA,EAAM,EAAI,EAAA,CAAA,gDAAM,aAAc,EAAA,EAAA,KAAA,EAAO,SAAW,EAAA,IAAA,EAAM,uBAAuB,IAAM,EAAA,EAAA,EAAI,CACrK,CACJ,CACJ,GAEC,UAAc,oBAAAA,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA,EACN,CAAC,eAAA,IAAmB,EAAC,QAAU,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAA,MAAA,CAAA,gDAAU,GAAI,EAAA,EAAA,SAAA,EAAU,+BAC/CA,cAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAK,KAAO,EAAA,MAAA,CAAO,KAAK,GAAM,CAAA,EAAA,EAAA,uBAAqB,CACxD,CAAS,mBAAAA,cAAA,CAAA,aAAA,CAAC,YAAS,KAAO,EAAA;AAAA,IAC1C,eAAiB,EAAA;AAAA,KAChB,aAAe,EAAA,KAAA,EAAO,MAAM,QAAY,IAAA,CAAC,kBAAkB,QAAU,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAA,MAAA,CAAO,CAAC,CAAA,KAAA,CAAW,uBAAG,IAAS,MAAA,QAAA,CAAS,UAAU,EAAC,EAAG,YAAY,CAAC;AAAA,IACzI;AAAA,GACI,KAAA;AACJ,IAAO,uBAAAA,cAAA,CAAA,aAAA,CAAC,SAAU,EAAA,EAAA,OAAA,EAAS,MAAG;AAjNtC,MAAA,IAAA,EAAA;AAiNyC,MAAU,OAAA,SAAA,CAAA,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,IAAI,IAAM,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAA,KAAA,EAAA,CAAO,kCAAM,OAAN,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAe,MAAQ,EAAA,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,IAAI,CAAA;AAAA,KACnE,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,OAAI,KAAO,EAAA;AAAA,MACxC,eAAiB,EAAA,CAAA;AAAA,MACjB,iBAAmB,EAAA,CAAA;AAAA,MACnB,cAAgB,EAAA;AAAA,KAClB,EAAA,+CACmC,MAAO,EAAA,EAAA,KAAA,EAAO,MAAM,SAAU,EAAA,qBAAA,EAAA,kBAC1BA,cAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAI,KAAO,EAAA;AAAA,MAC5C,KAAO,EAAA,EAAA;AAAA,MACP,MAAQ,EAAA,EAAA;AAAA,MACR,YAAc,EAAA,CAAA;AAAA,MACd,UAAY,EAAA,QAAA;AAAA,MACZ,cAAgB,EAAA;AAAA,yBAEqBA,cAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAK,SAAU,EAAA,wBAAA,EAAA,EAAyB,GAAC,CAC9C,CAAA,kBACCA,cAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAK,WAAU,sBAAwB,EAAA,EAAA,IAAA,CAAK,KAAM,CACvD,CACJ,CACJ,CAAA;AAAA,GAC3B,EAAA,YAAA,EAAc,CAAQ,IAAA,KAAA,MAAA,CAAO,IAAK,CAAA,EAAE,CAAG,EAAA,CAAA,EAE3B,gBAAoB,IAAA,CAAA,QAAA,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAU,MAAU,KAAA,EAAA,oBAAOA,cAAA,CAAA,aAAA,CAAA,SAAA,EAAA,EAAU,OAAS,EAAA,MAAM,iBAAkB,CAAA,QAAA,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAU,MAAM,CAAA,EAAG,SAAU,EAAA,WAAA,EAAA,kBAC/GA,cAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAK,SAAU,EAAA,2BAAA,EAAA,EAA4B,uBAAqB,CACrE,CACR,CACR,CAAA;AACR,CAAA;AACA,iBAAeA,cAAA,CAAM,KAAK,QAAQ,CAAA"}
|
|
1
|
+
{"version":3,"file":"Channels.js","sources":["../../../../../src/screens/Home/Components/Channels/Channels.tsx"],"sourcesContent":["import { useIsFocused, useFocusEffect } from '@react-navigation/native';\nimport React, { useState, useEffect, useLayoutEffect } from 'react';\nimport { TouchableOpacity, Share, Modal } from 'react-native';\nimport { NavigationRoutes } from '../../../../constants';\nimport {\n Pressable,\n View,\n Image,\n FlatList,\n Icon,\n AddIcon,\n Box,\n Text,\n Avatar,\n Spinner,\n VStack,\n HStack,\n Button,\n ButtonText,\n} from '@admin-layout/gluestack-ui-mobile';\nimport { userSelector, isUserAuthenticated } from '@adminide-stack/user-auth0-client';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport { useNavigation } from '@react-navigation/native';\nimport { navigationRef } from '@common-stack/client-react';\nimport styles from '../../styles';\nimport { startCase, orderBy, uniqBy, take } from 'lodash-es';\nimport { RoomType } from 'common';\nimport { useGetChannelsByUserQuery } from 'common/graphql';\nimport { FontAwesome, Feather, Octicons, MaterialIcons } from '@expo/vector-icons';\nimport { useDrawerLayout, useDisclose } from '../../../../hooks';\nimport colors from 'tailwindcss/colors';\nimport ActionSheet from '../../../../components/Actionsheet';\nimport { channelsXstate } from './channels-xstate';\nimport { useSafeChannelsMachine } from './useSafeChannelsMachine';\n\nconst defaultChannelType = [RoomType.Channel, RoomType.Private, RoomType.Public];\n\nconst Channels = () => {\n const { isOpen, onOpen, onClose } = useDisclose();\n const navigation = useNavigation<any>();\n const [expandable, setExpendable] = useState(true);\n const user: any = useSelector(userSelector, shallowEqual);\n const { orgName } = useDrawerLayout();\n const isFocused = useIsFocused();\n\n // Using the safe XState machine hook\n const [state, send] = useSafeChannelsMachine(channelsXstate);\n\n const { channels, loading, channelsLoading, showMoreChannels } = state.context;\n\n const actionItems = [\n {\n id: 1,\n label: 'Create Channel',\n onPress: () => navigation.navigate(NavigationRoutes.Channels, { orgName }),\n },\n {\n id: 2,\n label: 'Browse Channels',\n onPress: () => navigation.navigate(NavigationRoutes.Channels, { orgName }),\n },\n ];\n\n // GraphQL Queries\n const {\n data: userChannels,\n loading: userChannelsLoading,\n refetch: reFetchUserChannels,\n fetchMore: fetchMoreUserChannels,\n } = useGetChannelsByUserQuery({\n variables: {\n criteria: {\n orgName: orgName,\n type: defaultChannelType,\n team: null,\n },\n limit: 11,\n },\n onCompleted(data) {\n send({\n type: 'SET_CHANNELS',\n data: { channels: data?.channelsByUser || [] },\n });\n },\n });\n\n // Initialize XState with the org name on mount\n useEffect(() => {\n if (orgName) {\n console.log('Channels: Initializing state with orgName:', orgName);\n send({\n type: 'INITIAL_CONTEXT',\n data: { orgName },\n });\n }\n\n return () => {\n send({ type: 'CLEAR_DATA' });\n };\n }, [orgName]);\n\n useFocusEffect(\n React.useCallback(() => {\n // Only fetch channels when first focused or when we don't have any channels\n if (!channels || channels.length === 0) {\n reFetchChannels();\n }\n\n return () => {\n // Do something when the screen is unfocused\n // Useful for cleanup functions\n };\n }, [channels]),\n );\n\n const reFetchChannels = React.useCallback(() => {\n // Skip refetch if we're already loading\n if (state.context.channelsLoading) {\n console.log('Skipping channels refetch - already in progress');\n return;\n }\n\n if (orgName) {\n console.log('Refetching channels');\n send({ type: 'REFETCH_CHANNELS' });\n reFetchUserChannels({\n criteria: {\n orgName: orgName,\n type: defaultChannelType,\n team: null,\n },\n limit: 11,\n }).then((res) => {\n if (res?.data?.channelsByUser) {\n send({\n type: 'SET_CHANNELS',\n data: { channels: res.data.channelsByUser },\n });\n }\n });\n }\n }, [orgName, send, state.context.channelsLoading]);\n\n const fetchMoreChannels = React.useCallback(\n (skip: number) => {\n send({ type: 'FETCH_MORE_CHANNELS' });\n fetchMoreUserChannels({\n variables: {\n criteria: {\n orgName: orgName,\n type: defaultChannelType,\n team: null,\n },\n skip,\n },\n })?.then((res: any) => {\n send({\n type: 'FETCH_MORE_CHANNELS_SUCCESS',\n data: { channels: res?.data?.channelsByUser || [] },\n });\n });\n },\n [orgName, send],\n );\n\n // const organizationChannels = React.useMemo(() => {\n // //Direct channel\n // return (\n // (channels &&\n // channels?.length &&\n // take(\n // orderBy(\n // uniqBy(\n // [...channels]?.filter((i: any) => i.type !== RoomType.Direct),\n // ({ id }) => id,\n // ),\n // [(ch: any) => ch?.title?.toLowerCase()],\n // ['asc'],\n // ),\n // 10,\n // )) ||\n // []\n // );\n // }, [channels]);\n\n const openInbox = React.useCallback(\n (id: any, title: any, totalMembers: any, type?: any) => {\n navigation.navigate(NavigationRoutes.DialogMessages, {\n channelId: id?.toString(),\n title: title?.toString(),\n totalMembers: totalMembers,\n channelType: type,\n orgName: orgName,\n hideTabBar: true,\n });\n },\n [orgName],\n );\n\n return (\n <View style={[styles.channelContainer, { paddingHorizontal: 10 }]}>\n <TouchableOpacity\n style={[styles.headingContainer, { paddingVertical: 8, marginBottom: 4 }]}\n onPress={() => setExpendable(!expandable)}\n >\n <HStack className=\"flex-1 items-center justify-between\">\n <Text style={{ fontSize: 15, fontWeight: '600', color: '#1f2937' }}>Channels</Text>\n <HStack space={'sm'} className=\"items-center\">\n {channelsLoading && <Spinner size={'small'} color={'$blue600'} />}\n <Pressable onPress={() => navigation.navigate(NavigationRoutes.AddChannel)}>\n <Box className=\"rounded-md w-6 h-6 justify-center items-center\">\n <Text className=\"text-lg text-slate-700\">+</Text>\n </Box>\n </Pressable>\n {expandable ? (\n <MaterialIcons color={'#4b5563'} name={'keyboard-arrow-up'} size={22} />\n ) : (\n <MaterialIcons color={'#4b5563'} name={'keyboard-arrow-down'} size={22} />\n )}\n </HStack>\n </HStack>\n </TouchableOpacity>\n\n {expandable && (\n <>\n {!channelsLoading && !channels?.length ? (\n <Box className=\"py-2 px-1\">\n <Text color={colors.gray[600]}>No channels available</Text>\n </Box>\n ) : (\n <FlatList\n style={{ paddingVertical: 4 }}\n scrollEnabled={false}\n data={\n channels && !channelsLoading\n ? channels?.filter((i: any) => i?.type !== RoomType.Direct)\n : []\n }\n renderItem={({ item }) => {\n return (\n <Pressable\n onPress={() =>\n openInbox(item?.id, item?.title, item?.members?.length, item?.type)\n }\n >\n <Box style={{ paddingVertical: 2, paddingHorizontal: 1, marginVertical: 1 }}>\n <HStack space={'md'} className=\"flex-1 items-center\">\n <Box\n style={{\n width: 24,\n height: 24,\n borderRadius: 4,\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <Text className=\"text-black font-medium\">#</Text>\n </Box>\n <Text className=\"text-gray-700 flex-1\">{item.title}</Text>\n </HStack>\n </Box>\n </Pressable>\n );\n }}\n ListFooterComponent={() => {\n return (\n <>\n {showMoreChannels && channels?.length > 10 && (\n <TouchableOpacity\n onPress={() =>\n navigation.navigate(NavigationRoutes.Channels, { orgName })\n }\n >\n <Box\n style={{\n paddingVertical: 4,\n paddingHorizontal: 4,\n marginVertical: 1,\n }}\n >\n <HStack space={'md'} className=\"flex-1 items-center\">\n <MaterialIcons color={'black'} name={'search'} size={18} />\n <Text className=\"text-black\">Browse all channels</Text>\n </HStack>\n </Box>\n </TouchableOpacity>\n )}\n\n <TouchableOpacity\n onPress={() =>\n navigation.navigate(NavigationRoutes.AddChannel, { orgName })\n }\n >\n <Box\n style={{ paddingVertical: 4, paddingHorizontal: 4, marginVertical: 1 }}\n >\n <HStack space={'md'} className=\"flex-1 items-center\">\n <Feather color={'black'} name={'plus'} size={18} />\n <Text style={{ fontSize: 16, fontWeight: '400', color: 'black' }}>\n Add Channel\n </Text>\n </HStack>\n </Box>\n </TouchableOpacity>\n </>\n );\n }}\n keyExtractor={(item) => String(item.id)}\n />\n )}\n\n {/* {showMoreChannels && channels?.length >= 10 && (\n <Pressable onPress={() => fetchMoreChannels(channels?.length)} className=\"px-1 py-3\">\n <Text className=\"text-blue-600 font-medium\">Show more channels...</Text>\n </Pressable>\n )} */}\n </>\n )}\n </View>\n );\n};\n\nexport default React.memo(Channels);\n"],"names":["React","_a"],"mappings":"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"}
|
|
@@ -14,7 +14,8 @@ import {useNavigation,useIsFocused,useFocusEffect}from'@react-navigation/native'
|
|
|
14
14
|
const {
|
|
15
15
|
data: userDirectChannels,
|
|
16
16
|
loading: userDirectChannelsLoading,
|
|
17
|
-
refetch: reFetchUserDirectChannels
|
|
17
|
+
refetch: reFetchUserDirectChannels,
|
|
18
|
+
error: userDirectChannelsError
|
|
18
19
|
} = useGetChannelsByUserQuery({
|
|
19
20
|
variables: {
|
|
20
21
|
criteria: {
|
|
@@ -34,7 +35,16 @@ import {useNavigation,useIsFocused,useFocusEffect}from'@react-navigation/native'
|
|
|
34
35
|
},
|
|
35
36
|
onError(error) {
|
|
36
37
|
console.log("DirectChannels: onError", error);
|
|
37
|
-
|
|
38
|
+
const isChannelServiceError = error.message.includes("Service 'ChannelService.getAll' is not found");
|
|
39
|
+
const errorMessage = isChannelServiceError ? "Channel service is temporarily unavailable. Please try again later." : error.message;
|
|
40
|
+
send({
|
|
41
|
+
type: "ERROR",
|
|
42
|
+
data: {
|
|
43
|
+
message: errorMessage
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
},
|
|
47
|
+
skip: !orgName
|
|
38
48
|
});
|
|
39
49
|
const [addDirectChannel, {
|
|
40
50
|
loading: addDirectChannaleLoading
|
|
@@ -121,6 +131,16 @@ import {useNavigation,useIsFocused,useFocusEffect}from'@react-navigation/native'
|
|
|
121
131
|
});
|
|
122
132
|
}
|
|
123
133
|
}
|
|
134
|
+
}).catch((error) => {
|
|
135
|
+
console.error("Error fetching direct channels:", error);
|
|
136
|
+
const isChannelServiceError = error.message && error.message.includes("Service 'ChannelService.getAll' is not found");
|
|
137
|
+
const errorMessage = isChannelServiceError ? "Direct Channels is temporarily unavailable. Please try again later." : error.message || "Failed to fetch direct channels";
|
|
138
|
+
send({
|
|
139
|
+
type: "ERROR",
|
|
140
|
+
data: {
|
|
141
|
+
message: errorMessage
|
|
142
|
+
}
|
|
143
|
+
});
|
|
124
144
|
});
|
|
125
145
|
}
|
|
126
146
|
}, [orgName, user, addDirectChannaleLoading, send, state.context.directChannelsLoading]);
|
|
@@ -231,7 +251,7 @@ import {useNavigation,useIsFocused,useFocusEffect}from'@react-navigation/native'
|
|
|
231
251
|
}, data: organizationDirectChannels && (organizationDirectChannels == null ? void 0 : organizationDirectChannels.length) > 0 ? organizationDirectChannels : [], renderItem: renderChannelMemebers, key: "direct-messages-key", keyExtractor: (item, index) => String(index), contentContainerStyle: {
|
|
232
252
|
flex: 1
|
|
233
253
|
}, ListEmptyComponent: () => {
|
|
234
|
-
return /* @__PURE__ */ React__default.createElement(Box, { className: "py-2 px-1" }, state.context.directChannelsLoading ? /* @__PURE__ */ React__default.createElement(Spinner, { color: colors.blue[500] }) : /* @__PURE__ */ React__default.createElement(Text, { color: colors.gray[600] }, "No members found"));
|
|
254
|
+
return /* @__PURE__ */ React__default.createElement(Box, { className: "py-2 px-1" }, state.context.directChannelsLoading ? /* @__PURE__ */ React__default.createElement(Spinner, { color: colors.blue[500] }) : state.context.error ? /* @__PURE__ */ React__default.createElement(Box, null, /* @__PURE__ */ React__default.createElement(Text, { color: colors.red[600], className: "mb-2" }, state.context.error), /* @__PURE__ */ React__default.createElement(TouchableOpacity, { onPress: reFetchDirectChannels }, /* @__PURE__ */ React__default.createElement(HStack, { className: "items-center", space: "sm" }, /* @__PURE__ */ React__default.createElement(MaterialIcons, { name: "refresh", color: colors.blue[500], size: 20 }), /* @__PURE__ */ React__default.createElement(Text, { color: colors.blue[500] }, "Retry")))) : /* @__PURE__ */ React__default.createElement(Text, { color: colors.gray[600] }, "No members found"));
|
|
235
255
|
}, ListFooterComponent: () => {
|
|
236
256
|
return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(TouchableOpacity, { onPress: () => navigation.navigate(NavigationRoutes.SearchAddChannel, {
|
|
237
257
|
orgName
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DirectChannels.js","sources":["../../../../../src/screens/Home/Components/DirectChannels/DirectChannels.tsx"],"sourcesContent":["import { useIsFocused, useFocusEffect } from '@react-navigation/native';\nimport React, { useState, useEffect, useLayoutEffect, useCallback } from 'react';\nimport { TouchableOpacity, Share } from 'react-native';\nimport styles from '../../styles';\nimport {\n Pressable,\n View,\n Image,\n FlatList,\n HStack,\n Icon,\n Box,\n Text,\n Avatar,\n AvatarFallbackText,\n AvatarImage,\n AvatarBadge,\n AvatarGroup,\n Badge,\n Spinner,\n ButtonText,\n AddIcon,\n} from '@admin-layout/gluestack-ui-mobile';\nimport more from '../../../../assets/images/more.png';\nimport right from '../../../../assets/images/right.png';\nimport { userSelector } from '@adminide-stack/user-auth0-client';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport { useNavigation } from '@react-navigation/native';\nimport { startCase, orderBy } from 'lodash-es';\nimport { RoomType } from 'common';\nimport { useGetChannelsByUserQuery, useAddDirectChannelMutation } from 'common/graphql';\nimport { NavigationRoutes } from '../../../../constants';\nimport { MaterialIcons } from '@expo/vector-icons';\nimport { useDrawerLayout } from '../../../../hooks';\nimport colors from 'tailwindcss/colors';\nimport { directChannelsXstate } from './directChannels-xstate';\nimport { useSafeDirectChannelsMachine } from './useSafeDirectChannelsMachine';\n\nconst DirectChannels = () => {\n const navigation = useNavigation<any>();\n const [expandableMessage, setExpendableMessage] = useState(true);\n const user = useSelector(userSelector, shallowEqual);\n const isFocused = useIsFocused();\n const { orgName } = useDrawerLayout();\n\n // Using the safe XState machine hook\n const [state, send] = useSafeDirectChannelsMachine(directChannelsXstate);\n\n const { loading, directChannelsLoading } = state.context;\n\n // GraphQL Queries and Mutations\n const {\n data: userDirectChannels,\n loading: userDirectChannelsLoading,\n refetch: reFetchUserDirectChannels,\n } = useGetChannelsByUserQuery({\n variables: {\n criteria: {\n orgName: orgName,\n type: RoomType.Direct,\n team: null,\n },\n limit: 21,\n },\n onCompleted(data) {\n send({\n type: 'SET_DIRECT_CHANNELS',\n data: { directChannels: data?.channelsByUser || [] },\n });\n },\n onError(error) {\n console.log('DirectChannels: onError', error);\n },\n });\n\n const [addDirectChannel, { loading: addDirectChannaleLoading }] = useAddDirectChannelMutation({\n onCompleted: (data: any) => {\n reFetchDirectChannels();\n },\n onError: (error: any) => {\n send({ type: 'ERROR', data: { message: error.message } });\n },\n });\n\n // Initialize XState with the org name on mount\n useEffect(() => {\n if (orgName) {\n console.log('DirectChannels: Initializing state with orgName:', orgName);\n send({\n type: 'INITIAL_CONTEXT',\n data: { orgName },\n });\n }\n\n return () => {\n send({ type: 'CLEAR_DATA' });\n };\n }, [orgName]);\n\n // Focus effect to fetch data when screen is focused\n useFocusEffect(\n React.useCallback(() => {\n if (orgName) {\n reFetchDirectChannels();\n }\n\n return () => {\n // Do something when the screen is unfocused\n // Useful for cleanup functions\n };\n }, [orgName]),\n );\n\n const reFetchDirectChannels = React.useCallback(() => {\n // Skip refetch if we're already loading\n if (state.context.directChannelsLoading) {\n console.log('DirectChannels: Skipping direct channels refetch - already in progress');\n return;\n }\n\n if (orgName) {\n console.log('DirectChannels: Refetching direct channels');\n send({ type: 'REFETCH_DIRECT_CHANNELS' });\n reFetchUserDirectChannels({\n criteria: {\n orgName: orgName,\n type: RoomType.Direct,\n team: null,\n },\n limit: 21,\n }).then((res) => {\n if (res?.data?.channelsByUser) {\n send({\n type: 'SET_DIRECT_CHANNELS',\n data: { directChannels: res.data.channelsByUser },\n });\n }\n\n if (res?.data?.channelsByUser && user?.id) {\n const filteredChannels = res?.data?.channelsByUser?.filter(\n (channel) => channel.members.length === 1 && channel.members[0]?.user?.id === user?.id,\n );\n\n if (!filteredChannels?.length && !addDirectChannaleLoading) {\n send({ type: 'ADD_DIRECT_CHANNEL' });\n addDirectChannel({\n variables: {\n receiver: [user.id],\n displayName: 'DIRECT CHANNEL',\n channelOptions: { schemeAdmin: true },\n },\n });\n }\n }\n });\n }\n }, [orgName, user, addDirectChannaleLoading, send, state.context.directChannelsLoading]);\n\n const organizationDirectChannels = React.useMemo(() => {\n //Direct channel\n if (!state.context.directChannels) return null;\n return (\n (state.context.directChannels &&\n orderBy(\n state.context.directChannels\n ?.filter((i: any) => i.type == RoomType.Direct)\n ?.filter((c: any) =>\n c?.members?.some(\n // (u: any) => u !== null && u?.user?.id != user?.id && u.user.__typename == 'UserAccount',\n (u: any) =>\n c?.members?.length == 1 &&\n c?.members?.filter((ch: any) => ch?.user?.id == user?.id).length > 0\n ? u !== null\n : u !== null && u?.user?.id != user?.id,\n ),\n ),\n [\n (ch: any) =>\n ch?.members?.filter((m) => m?.user)?.map((u: any) => u?.user?.givenName?.toLowerCase()),\n ],\n ['asc'],\n )) ||\n []\n );\n }, [state.context.directChannels]);\n\n const openUserInbox = React.useCallback(\n (id: any, title: any, members: any, type?: any) => {\n const channelMembers =\n members\n // ?.filter((ch: any) => ch?.user?.id != user?.id && ch?.user?.__typename == 'UserAccount')\n ?.filter((ch: any) =>\n members?.length == 1 && members?.filter((mem: any) => mem?.user?.id == user?.id).length > 0\n ? ch !== null\n : ch !== null && ch?.user?.id != user?.id,\n )\n ?.map((m: any) => m?.user) ?? null;\n\n const memberImage = channelMembers?.length == 1 ? channelMembers[0]?.picture ?? null : null;\n\n const membersNameAsTitle =\n channelMembers\n ?.map((u: any) => u?.givenName ?? '')\n ?.filter((mu: any) => mu)\n ?.join(', ') ?? '';\n\n navigation.navigate(NavigationRoutes.DialogMessages, {\n channelId: id?.toString(),\n title: membersNameAsTitle?.toString() || title?.toString(),\n totalMembers: members?.length,\n memberImage: memberImage,\n channelType: type,\n orgName: orgName,\n hideTabBar: true,\n });\n },\n [orgName],\n );\n\n const renderChannelMemebers = useCallback(({ item }: any) => {\n // Filter out members with null user objects first\n const validMembers = item?.members?.filter((m) => m && m.user) || [];\n\n const channelMembers =\n validMembers\n ?.filter((ch: any) =>\n validMembers.length == 1 && validMembers.filter((mem: any) => mem?.user?.id == user?.id).length > 0\n ? ch !== null\n : ch !== null && ch?.user?.id != user?.id,\n )\n ?.map((m: any) => m?.user) ?? null;\n\n // Safety check if channelMembers is empty after filtering\n if (!channelMembers || channelMembers.length === 0) {\n return null;\n }\n\n let title =\n channelMembers\n ?.map((u: any) =>\n u?.id == user?.id\n ? (u?.givenName || '') + ' ' + (u?.familyName || '') + ' (you)'\n : channelMembers?.length > 1\n ? u?.givenName ?? ''\n : (u?.givenName ?? '') + ' ' + (u?.familyName ?? ''),\n )\n ?.filter((mu: any) => mu)\n ?.join(', ') ?? '';\n\n return (\n <TouchableOpacity key={item.id} onPress={() => openUserInbox(item.id, 'Inbox', validMembers, item?.type)}>\n <Box style={{ paddingVertical: 8, paddingHorizontal: 1, marginVertical: 1 }}>\n <HStack className=\"w-full flex-1 items-center\" space={'sm'}>\n <Avatar key={'direct-channel-profile-key'} size={'sm'} className=\"bg-transparent\">\n <AvatarFallbackText>\n {channelMembers[0]?.username ? startCase(channelMembers[0]?.username?.charAt(0)) : '?'}\n </AvatarFallbackText>\n {/* <AvatarImage\n alt=\"image\"\n size={'md'}\n style={{\n // width: 25,\n // height: 25,\n borderRadius: 6,\n borderWidth: 2,\n borderColor: '#fff',\n }}\n source={{\n uri: channelMembers[0]?.picture,\n }}\n /> */}\n {channelMembers?.length > 1 ? (\n <AvatarBadge\n style={{ width: '100%', height: '100%' }}\n className=\"items-center justify-center bg-gray-200 rounded-md\"\n >\n <Text style={{ fontSize: 12, fontWeight: 'bold', color: '#000' }}>\n {channelMembers?.length}\n </Text>\n </AvatarBadge>\n ) : (\n <>\n <AvatarImage\n alt=\"image\"\n style={{\n // width: 25,\n // height: 25,\n borderRadius: 'none',\n borderWidth: 1,\n borderColor: '#fff',\n borderBottomRightRadius: 15,\n }}\n source={{\n uri: channelMembers[0]?.picture,\n }}\n className=\"rounded-lg\"\n />\n <AvatarBadge\n style={{ width: 10, height: 10, bottom: -1 }}\n className=\"bg-green-600\"\n />\n </>\n )}\n </Avatar>\n <Text style={{ fontSize: 15, fontWeight: '500' }} className=\"text-gray-800\">\n {title}\n </Text>\n </HStack>\n </Box>\n </TouchableOpacity>\n );\n }, []);\n\n return (\n <View style={[styles.channelContainer, { paddingHorizontal: 10 }]}>\n <TouchableOpacity\n style={[styles.headingContainer, { paddingVertical: 8, marginBottom: 4 }]}\n onPress={() => setExpendableMessage(!expandableMessage)}\n >\n <HStack className=\"flex-1 items-center justify-between\">\n <Text style={{ fontSize: 15, fontWeight: '600', color: '#1f2937' }}>Direct Messages</Text>\n {expandableMessage ? (\n <MaterialIcons color={'#4b5563'} name={'keyboard-arrow-up'} size={22} />\n ) : (\n <MaterialIcons color={'#4b5563'} name={'keyboard-arrow-down'} size={22} />\n )}\n </HStack>\n </TouchableOpacity>\n\n {expandableMessage && (\n <FlatList\n style={{ paddingVertical: 4 }}\n data={\n organizationDirectChannels && organizationDirectChannels?.length > 0\n ? organizationDirectChannels\n : []\n }\n renderItem={renderChannelMemebers}\n key={'direct-messages-key'}\n keyExtractor={(item, index) => String(index)}\n contentContainerStyle={{\n flex: 1,\n }}\n ListEmptyComponent={() => {\n return (\n <Box className=\"py-2 px-1\">\n {state.context.directChannelsLoading ? (\n <Spinner color={colors.blue[500]} />\n ) : (\n <Text color={colors.gray[600]}>No members found</Text>\n )}\n </Box>\n );\n }}\n ListFooterComponent={() => {\n return (\n <>\n <TouchableOpacity\n onPress={() => navigation.navigate(NavigationRoutes.SearchAddChannel, { orgName })}\n >\n <Box className=\"pr-10 py-2\">\n <HStack className=\"w-full flex-1 items-center\" space={'sm'}>\n <Avatar\n key={'direct-start-new-msg-key'}\n size={'sm'}\n className=\"bg-gray-100\"\n >\n <Icon\n as={AddIcon}\n style={{ width: '70%', height: '70%' }}\n color={colors.gray[700]}\n />\n </Avatar>\n <Text style={{ fontSize: 14, fontWeight: '500' }} color={colors.gray[800]}>\n Start a new message\n </Text>\n </HStack>\n </Box>\n </TouchableOpacity>\n </>\n );\n }}\n />\n )}\n </View>\n );\n};\n\nexport default React.memo(DirectChannels);\n\n// -//last added//- const renderChannelMemebers = ({ item }: any) => {\n// const channelMembers =\n// item?.members\n// ?.filter((ch: any) => ch?.user?.id != user?.id && ch?.user?.__typename == 'UserAccount')\n// ?.map((m: any) => m?.user) ?? null;\n\n// let title =\n// channelMembers\n// ?.map((u: any) => u?.givenName + ' ' + u?.familyName ?? '')\n// ?.filter((mu: any) => mu)\n// ?.join(', ') ?? '';\n\n// return (\n// <TouchableOpacity key={item.id} onPress={() => openUserInbox(item.id, 'Inbox', item?.members)}>\n// <View style={{ paddingHorizontal: 20, paddingVertical: 4 }}>\n// <HStack w={'100%'} space={1} flex={1} alignItems={'center'}>\n// <Box flex={0.1} alignItems={'flex-start'}>\n// <Avatar.Group\n// _avatar={{\n// size: 'sm',\n// bg: 'transparent',\n// }}\n// >\n// {channelMembers &&\n// channelMembers?.length > 0 &&\n// channelMembers?.slice(0, 2)?.map((ch: any, i: Number) => (\n// <Avatar\n// key={'home-key' + i}\n// size={'sm'}\n// bg={'transparent'}\n// top={i == 1 ? 2 : 0}\n// zIndex={i == 1 ? 5 : 1}\n// _image={{\n// style: {\n// width: 25,\n// height: 25,\n// borderRadius: 6,\n// borderWidth: 2,\n// borderColor: '#fff',\n// },\n// }}\n// // _image={{ borderRadius: 6, borderWidth: 2, borderColor: '#fff' }}\n// source={{\n// uri: ch?.picture,\n// }}\n// >\n// {startCase(ch?.username?.charAt(0))}\n// {channelMembers?.length == 1 && (\n// <Avatar.Badge bg=\"green.800\" bottom={-4} right={-4} />\n// )}\n// </Avatar>\n// ))}\n// </Avatar.Group>\n// </Box>\n// <Box flex={0.9}>\n// <Text fontSize={16} fontWeight={400}>\n// {title}\n// </Text>\n// </Box>\n// </HStack>\n// </View>\n// </TouchableOpacity>\n// );\n// };\n\n// const renderChannelMemebers = ({ item }: any) => {\n// const title = item.givenName + ' ' + item.familyName;\n// const matches: any = title.match(/\\b(\\w)/g);\n// const acronym: any = matches.join('').substring(0, 2); // JSON\n// return (\n// <TouchableOpacity key={item.id} onPress={() => openUserInbox(item.channelID, title)}>\n// <View py={1}>\n// <HStack space={2} flex={1} alignItems={'center'}>\n// {/* <Image alt={acronym} source={{uri:item.picture}} w={6} h={6} /> */}\n// <Avatar\n// size={'sm'}\n// bg={'transparent'}\n// _image={{ style: { width: 25, height: 25, borderRadius: 6 } }}\n// source={{ uri: item.picture }}\n// >\n// {acronym}\n// <Avatar.Badge bg=\"green.800\" />\n// </Avatar>\n\n// <Text fontSize={16} fontWeight={400}>\n// {item.givenName} {item.familyName} {user.id == item.id ? '(you)' : ''}\n// </Text>\n// </HStack>\n// </View>\n// </TouchableOpacity>\n// );\n// };\n"],"names":["React","_a","_b","_c"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DirectChannels.js","sources":["../../../../../src/screens/Home/Components/DirectChannels/DirectChannels.tsx"],"sourcesContent":["import { useIsFocused, useFocusEffect } from '@react-navigation/native';\nimport React, { useState, useEffect, useLayoutEffect, useCallback } from 'react';\nimport { TouchableOpacity, Share } from 'react-native';\nimport styles from '../../styles';\nimport {\n Pressable,\n View,\n Image,\n FlatList,\n HStack,\n Icon,\n Box,\n Text,\n Avatar,\n AvatarFallbackText,\n AvatarImage,\n AvatarBadge,\n AvatarGroup,\n Badge,\n Spinner,\n ButtonText,\n AddIcon,\n} from '@admin-layout/gluestack-ui-mobile';\nimport more from '../../../../assets/images/more.png';\nimport right from '../../../../assets/images/right.png';\nimport { userSelector } from '@adminide-stack/user-auth0-client';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport { useNavigation } from '@react-navigation/native';\nimport { startCase, orderBy } from 'lodash-es';\nimport { RoomType } from 'common';\nimport { useGetChannelsByUserQuery, useAddDirectChannelMutation } from 'common/graphql';\nimport { NavigationRoutes } from '../../../../constants';\nimport { MaterialIcons } from '@expo/vector-icons';\nimport { useDrawerLayout } from '../../../../hooks';\nimport colors from 'tailwindcss/colors';\nimport { directChannelsXstate } from './directChannels-xstate';\nimport { useSafeDirectChannelsMachine } from './useSafeDirectChannelsMachine';\n\nconst DirectChannels = () => {\n const navigation = useNavigation<any>();\n const [expandableMessage, setExpendableMessage] = useState(true);\n const user = useSelector(userSelector, shallowEqual);\n const isFocused = useIsFocused();\n const { orgName } = useDrawerLayout();\n\n // Using the safe XState machine hook\n const [state, send] = useSafeDirectChannelsMachine(directChannelsXstate);\n\n const { loading, directChannelsLoading } = state.context;\n\n // GraphQL Queries and Mutations\n const {\n data: userDirectChannels,\n loading: userDirectChannelsLoading,\n refetch: reFetchUserDirectChannels,\n error: userDirectChannelsError,\n } = useGetChannelsByUserQuery({\n variables: {\n criteria: {\n orgName: orgName,\n type: RoomType.Direct,\n team: null,\n },\n limit: 21,\n },\n onCompleted(data) {\n send({\n type: 'SET_DIRECT_CHANNELS',\n data: { directChannels: data?.channelsByUser || [] },\n });\n },\n onError(error) {\n console.log('DirectChannels: onError', error);\n // Check specifically for ChannelService error\n const isChannelServiceError = error.message.includes(\"Service 'ChannelService.getAll' is not found\");\n const errorMessage = isChannelServiceError\n ? 'Channel service is temporarily unavailable. Please try again later.'\n : error.message;\n\n // Update state to reflect the error\n send({\n type: 'ERROR',\n data: { message: errorMessage },\n });\n },\n // Skip the query if organization name is not available\n skip: !orgName,\n });\n\n const [addDirectChannel, { loading: addDirectChannaleLoading }] = useAddDirectChannelMutation({\n onCompleted: (data: any) => {\n reFetchDirectChannels();\n },\n onError: (error: any) => {\n send({ type: 'ERROR', data: { message: error.message } });\n },\n });\n\n // Initialize XState with the org name on mount\n useEffect(() => {\n if (orgName) {\n console.log('DirectChannels: Initializing state with orgName:', orgName);\n send({\n type: 'INITIAL_CONTEXT',\n data: { orgName },\n });\n }\n\n return () => {\n send({ type: 'CLEAR_DATA' });\n };\n }, [orgName]);\n\n // Focus effect to fetch data when screen is focused\n useFocusEffect(\n React.useCallback(() => {\n if (orgName) {\n reFetchDirectChannels();\n }\n\n return () => {\n // Do something when the screen is unfocused\n // Useful for cleanup functions\n };\n }, [orgName]),\n );\n\n const reFetchDirectChannels = React.useCallback(() => {\n // Skip refetch if we're already loading\n if (state.context.directChannelsLoading) {\n console.log('DirectChannels: Skipping direct channels refetch - already in progress');\n return;\n }\n\n if (orgName) {\n console.log('DirectChannels: Refetching direct channels');\n send({ type: 'REFETCH_DIRECT_CHANNELS' });\n reFetchUserDirectChannels({\n criteria: {\n orgName: orgName,\n type: RoomType.Direct,\n team: null,\n },\n limit: 21,\n })\n .then((res) => {\n if (res?.data?.channelsByUser) {\n send({\n type: 'SET_DIRECT_CHANNELS',\n data: { directChannels: res.data.channelsByUser },\n });\n }\n\n if (res?.data?.channelsByUser && user?.id) {\n const filteredChannels = res?.data?.channelsByUser?.filter(\n (channel) => channel.members.length === 1 && channel.members[0]?.user?.id === user?.id,\n );\n\n if (!filteredChannels?.length && !addDirectChannaleLoading) {\n send({ type: 'ADD_DIRECT_CHANNEL' });\n addDirectChannel({\n variables: {\n receiver: [user.id],\n displayName: 'DIRECT CHANNEL',\n channelOptions: { schemeAdmin: true },\n },\n });\n }\n }\n })\n .catch((error) => {\n console.error('Error fetching direct channels:', error);\n // Check specifically for ChannelService error\n const isChannelServiceError =\n error.message && error.message.includes(\"Service 'ChannelService.getAll' is not found\");\n const errorMessage = isChannelServiceError\n ? 'Direct Channels is temporarily unavailable. Please try again later.'\n : error.message || 'Failed to fetch direct channels';\n\n send({\n type: 'ERROR',\n data: { message: errorMessage },\n });\n });\n }\n }, [orgName, user, addDirectChannaleLoading, send, state.context.directChannelsLoading]);\n\n const organizationDirectChannels = React.useMemo(() => {\n //Direct channel\n if (!state.context.directChannels) return null;\n return (\n (state.context.directChannels &&\n orderBy(\n state.context.directChannels\n ?.filter((i: any) => i.type == RoomType.Direct)\n ?.filter((c: any) =>\n c?.members?.some(\n // (u: any) => u !== null && u?.user?.id != user?.id && u.user.__typename == 'UserAccount',\n (u: any) =>\n c?.members?.length == 1 &&\n c?.members?.filter((ch: any) => ch?.user?.id == user?.id).length > 0\n ? u !== null\n : u !== null && u?.user?.id != user?.id,\n ),\n ),\n [\n (ch: any) =>\n ch?.members?.filter((m) => m?.user)?.map((u: any) => u?.user?.givenName?.toLowerCase()),\n ],\n ['asc'],\n )) ||\n []\n );\n }, [state.context.directChannels]);\n\n const openUserInbox = React.useCallback(\n (id: any, title: any, members: any, type?: any) => {\n const channelMembers =\n members\n // ?.filter((ch: any) => ch?.user?.id != user?.id && ch?.user?.__typename == 'UserAccount')\n ?.filter((ch: any) =>\n members?.length == 1 && members?.filter((mem: any) => mem?.user?.id == user?.id).length > 0\n ? ch !== null\n : ch !== null && ch?.user?.id != user?.id,\n )\n ?.map((m: any) => m?.user) ?? null;\n\n const memberImage = channelMembers?.length == 1 ? channelMembers[0]?.picture ?? null : null;\n\n const membersNameAsTitle =\n channelMembers\n ?.map((u: any) => u?.givenName ?? '')\n ?.filter((mu: any) => mu)\n ?.join(', ') ?? '';\n\n navigation.navigate(NavigationRoutes.DialogMessages, {\n channelId: id?.toString(),\n title: membersNameAsTitle?.toString() || title?.toString(),\n totalMembers: members?.length,\n memberImage: memberImage,\n channelType: type,\n orgName: orgName,\n hideTabBar: true,\n });\n },\n [orgName],\n );\n\n const renderChannelMemebers = useCallback(({ item }: any) => {\n // Filter out members with null user objects first\n const validMembers = item?.members?.filter((m) => m && m.user) || [];\n\n const channelMembers =\n validMembers\n ?.filter((ch: any) =>\n validMembers.length == 1 && validMembers.filter((mem: any) => mem?.user?.id == user?.id).length > 0\n ? ch !== null\n : ch !== null && ch?.user?.id != user?.id,\n )\n ?.map((m: any) => m?.user) ?? null;\n\n // Safety check if channelMembers is empty after filtering\n if (!channelMembers || channelMembers.length === 0) {\n return null;\n }\n\n let title =\n channelMembers\n ?.map((u: any) =>\n u?.id == user?.id\n ? (u?.givenName || '') + ' ' + (u?.familyName || '') + ' (you)'\n : channelMembers?.length > 1\n ? u?.givenName ?? ''\n : (u?.givenName ?? '') + ' ' + (u?.familyName ?? ''),\n )\n ?.filter((mu: any) => mu)\n ?.join(', ') ?? '';\n\n return (\n <TouchableOpacity key={item.id} onPress={() => openUserInbox(item.id, 'Inbox', validMembers, item?.type)}>\n <Box style={{ paddingVertical: 8, paddingHorizontal: 1, marginVertical: 1 }}>\n <HStack className=\"w-full flex-1 items-center\" space={'sm'}>\n <Avatar key={'direct-channel-profile-key'} size={'sm'} className=\"bg-transparent\">\n <AvatarFallbackText>\n {channelMembers[0]?.username ? startCase(channelMembers[0]?.username?.charAt(0)) : '?'}\n </AvatarFallbackText>\n {/* <AvatarImage\n alt=\"image\"\n size={'md'}\n style={{\n // width: 25,\n // height: 25,\n borderRadius: 6,\n borderWidth: 2,\n borderColor: '#fff',\n }}\n source={{\n uri: channelMembers[0]?.picture,\n }}\n /> */}\n {channelMembers?.length > 1 ? (\n <AvatarBadge\n style={{ width: '100%', height: '100%' }}\n className=\"items-center justify-center bg-gray-200 rounded-md\"\n >\n <Text style={{ fontSize: 12, fontWeight: 'bold', color: '#000' }}>\n {channelMembers?.length}\n </Text>\n </AvatarBadge>\n ) : (\n <>\n <AvatarImage\n alt=\"image\"\n style={{\n // width: 25,\n // height: 25,\n borderRadius: 'none',\n borderWidth: 1,\n borderColor: '#fff',\n borderBottomRightRadius: 15,\n }}\n source={{\n uri: channelMembers[0]?.picture,\n }}\n className=\"rounded-lg\"\n />\n <AvatarBadge\n style={{ width: 10, height: 10, bottom: -1 }}\n className=\"bg-green-600\"\n />\n </>\n )}\n </Avatar>\n <Text style={{ fontSize: 15, fontWeight: '500' }} className=\"text-gray-800\">\n {title}\n </Text>\n </HStack>\n </Box>\n </TouchableOpacity>\n );\n }, []);\n\n return (\n <View style={[styles.channelContainer, { paddingHorizontal: 10 }]}>\n <TouchableOpacity\n style={[styles.headingContainer, { paddingVertical: 8, marginBottom: 4 }]}\n onPress={() => setExpendableMessage(!expandableMessage)}\n >\n <HStack className=\"flex-1 items-center justify-between\">\n <Text style={{ fontSize: 15, fontWeight: '600', color: '#1f2937' }}>Direct Messages</Text>\n {expandableMessage ? (\n <MaterialIcons color={'#4b5563'} name={'keyboard-arrow-up'} size={22} />\n ) : (\n <MaterialIcons color={'#4b5563'} name={'keyboard-arrow-down'} size={22} />\n )}\n </HStack>\n </TouchableOpacity>\n\n {expandableMessage && (\n <FlatList\n style={{ paddingVertical: 4 }}\n data={\n organizationDirectChannels && organizationDirectChannels?.length > 0\n ? organizationDirectChannels\n : []\n }\n renderItem={renderChannelMemebers}\n key={'direct-messages-key'}\n keyExtractor={(item, index) => String(index)}\n contentContainerStyle={{\n flex: 1,\n }}\n ListEmptyComponent={() => {\n return (\n <Box className=\"py-2 px-1\">\n {state.context.directChannelsLoading ? (\n <Spinner color={colors.blue[500]} />\n ) : state.context.error ? (\n <Box>\n <Text color={colors.red[600]} className=\"mb-2\">\n {state.context.error}\n </Text>\n <TouchableOpacity onPress={reFetchDirectChannels}>\n <HStack className=\"items-center\" space={'sm'}>\n <MaterialIcons name=\"refresh\" color={colors.blue[500]} size={20} />\n <Text color={colors.blue[500]}>Retry</Text>\n </HStack>\n </TouchableOpacity>\n </Box>\n ) : (\n <Text color={colors.gray[600]}>No members found</Text>\n )}\n </Box>\n );\n }}\n ListFooterComponent={() => {\n return (\n <>\n <TouchableOpacity\n onPress={() => navigation.navigate(NavigationRoutes.SearchAddChannel, { orgName })}\n >\n <Box className=\"pr-10 py-2\">\n <HStack className=\"w-full flex-1 items-center\" space={'sm'}>\n <Avatar\n key={'direct-start-new-msg-key'}\n size={'sm'}\n className=\"bg-gray-100\"\n >\n <Icon\n as={AddIcon}\n style={{ width: '70%', height: '70%' }}\n color={colors.gray[700]}\n />\n </Avatar>\n <Text style={{ fontSize: 14, fontWeight: '500' }} color={colors.gray[800]}>\n Start a new message\n </Text>\n </HStack>\n </Box>\n </TouchableOpacity>\n </>\n );\n }}\n />\n )}\n </View>\n );\n};\n\nexport default React.memo(DirectChannels);\n\n// -//last added//- const renderChannelMemebers = ({ item }: any) => {\n// const channelMembers =\n// item?.members\n// ?.filter((ch: any) => ch?.user?.id != user?.id && ch?.user?.__typename == 'UserAccount')\n// ?.map((m: any) => m?.user) ?? null;\n\n// let title =\n// channelMembers\n// ?.map((u: any) => u?.givenName + ' ' + u?.familyName ?? '')\n// ?.filter((mu: any) => mu)\n// ?.join(', ') ?? '';\n\n// return (\n// <TouchableOpacity key={item.id} onPress={() => openUserInbox(item.id, 'Inbox', item?.members)}>\n// <View style={{ paddingHorizontal: 20, paddingVertical: 4 }}>\n// <HStack w={'100%'} space={1} flex={1} alignItems={'center'}>\n// <Box flex={0.1} alignItems={'flex-start'}>\n// <Avatar.Group\n// _avatar={{\n// size: 'sm',\n// bg: 'transparent',\n// }}\n// >\n// {channelMembers &&\n// channelMembers?.length > 0 &&\n// channelMembers?.slice(0, 2)?.map((ch: any, i: Number) => (\n// <Avatar\n// key={'home-key' + i}\n// size={'sm'}\n// bg={'transparent'}\n// top={i == 1 ? 2 : 0}\n// zIndex={i == 1 ? 5 : 1}\n// _image={{\n// style: {\n// width: 25,\n// height: 25,\n// borderRadius: 6,\n// borderWidth: 2,\n// borderColor: '#fff',\n// },\n// }}\n// // _image={{ borderRadius: 6, borderWidth: 2, borderColor: '#fff' }}\n// source={{\n// uri: ch?.picture,\n// }}\n// >\n// {startCase(ch?.username?.charAt(0))}\n// {channelMembers?.length == 1 && (\n// <Avatar.Badge bg=\"green.800\" bottom={-4} right={-4} />\n// )}\n// </Avatar>\n// ))}\n// </Avatar.Group>\n// </Box>\n// <Box flex={0.9}>\n// <Text fontSize={16} fontWeight={400}>\n// {title}\n// </Text>\n// </Box>\n// </HStack>\n// </View>\n// </TouchableOpacity>\n// );\n// };\n\n// const renderChannelMemebers = ({ item }: any) => {\n// const title = item.givenName + ' ' + item.familyName;\n// const matches: any = title.match(/\\b(\\w)/g);\n// const acronym: any = matches.join('').substring(0, 2); // JSON\n// return (\n// <TouchableOpacity key={item.id} onPress={() => openUserInbox(item.channelID, title)}>\n// <View py={1}>\n// <HStack space={2} flex={1} alignItems={'center'}>\n// {/* <Image alt={acronym} source={{uri:item.picture}} w={6} h={6} /> */}\n// <Avatar\n// size={'sm'}\n// bg={'transparent'}\n// _image={{ style: { width: 25, height: 25, borderRadius: 6 } }}\n// source={{ uri: item.picture }}\n// >\n// {acronym}\n// <Avatar.Badge bg=\"green.800\" />\n// </Avatar>\n\n// <Text fontSize={16} fontWeight={400}>\n// {item.givenName} {item.familyName} {user.id == item.id ? '(you)' : ''}\n// </Text>\n// </HStack>\n// </View>\n// </TouchableOpacity>\n// );\n// };\n"],"names":["React","_a","_b","_c"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {Ionicons,AntDesign,MaterialCommunityIcons,FontAwesome5}from'@expo/vector-icons';import {useNavigation,useFocusEffect}from'@react-navigation/native';import React__default,{useState,useCallback}from'react';import {Share,TouchableHighlight,Dimensions}from'react-native';import {useSelector,shallowEqual}from'react-redux';import styles from'./styles.js';import {HStack,Text,Box,Avatar,Icon,AddIcon,Spinner,Center,Fab}from'@admin-layout/gluestack-ui-mobile';import {RoomType}from'common';import {useSetDeviceTokenMutation,useGetOrganizationSharableLinkQuery}from'common/graphql';import VirtualizedScrollView from'../../components/VirtualizedScrollView/VirtualizedScrollView.js';import {useDrawerLayout}from'../../hooks/useDrawerLayout.js';import {useDisclose}from'../../hooks/useDisclose.js';import {useExpoNotification}from'../../hooks/useExpoNotificationProvider.js';import Teams from'./Components/Teams/Teams.js';import Channels from'./Components/Channels/Channels.js';import'./Components/Channels/channels-xstate.js';import DirectChannels from'./Components/DirectChannels/DirectChannels.js';import TopCommonSlider from'./Components/TopCommonSlider/TopCommonSlider.js';import Colors from'../../constants/Colors.js';import'../../constants/device.js';import'../../constants/globalStyles.js';import'../../constants/Layout.js';import {NavigationRoutes}from'../../constants/routes.js';import'@react-navigation/core';import'../../components/Header/styles.js';import'../../components/Tiles/styles.js';import'../../components/CustomDrawer/CustomDrawer.js';import'../../components/CustomBottomTabs/CustomBottomTabs.js';import'../../components/NavigationHeader/NavigationHeader.js';import'@react-navigation/elements';import'@common-stack/client-react';import'../../components/NavigationHeader/InboxNavigationHeader.js';import {LoadingSpinnerDefault}from'../../components/LoadingSpinner/index.js';import'../../components/WorkSpaceDrawer/WorkSpaceDrawer.js';import'../../components/Channels/ChannelsByAlphabeticalAccordion.js';import'../../components/SlackSearchInput/index.js';import'expo-font';import'expo-splash-screen';import ActionSheet from'../../components/Actionsheet.js';import {config}from'../../config/env-config.js';import colors from'tailwindcss/colors';var __defProp = Object.defineProperty;
|
|
2
2
|
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
3
3
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
4
4
|
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
@@ -14,14 +14,12 @@ var __spreadValues = (a, b) => {
|
|
|
14
14
|
}
|
|
15
15
|
return a;
|
|
16
16
|
};
|
|
17
|
-
Dimensions.get("window").width;
|
|
18
17
|
const windowHeight = Dimensions.get("window").height;
|
|
19
18
|
[RoomType.Channel, RoomType.Private, RoomType.Public];
|
|
20
19
|
const HomeScreen = ({
|
|
21
20
|
navigation,
|
|
22
21
|
route
|
|
23
22
|
}) => {
|
|
24
|
-
var _a, _b;
|
|
25
23
|
useSelector((state) => state.user, shallowEqual);
|
|
26
24
|
const {
|
|
27
25
|
isOpen,
|
|
@@ -31,20 +29,32 @@ const HomeScreen = ({
|
|
|
31
29
|
const {
|
|
32
30
|
setSwipeEnabled,
|
|
33
31
|
orgName,
|
|
34
|
-
organizationDetail
|
|
35
|
-
setDrawerContent
|
|
32
|
+
organizationDetail
|
|
36
33
|
} = useDrawerLayout();
|
|
37
34
|
const {
|
|
38
|
-
expoToken
|
|
39
|
-
setExpoToken
|
|
35
|
+
expoToken
|
|
40
36
|
} = useExpoNotification();
|
|
41
37
|
const [setDeviceTokenMutation] = useSetDeviceTokenMutation();
|
|
42
38
|
const [loading, setLoading] = useState(true);
|
|
43
|
-
|
|
39
|
+
const [teamsLoaded, setTeamsLoaded] = useState(false);
|
|
40
|
+
const [channelsLoaded, setChannelsLoaded] = useState(false);
|
|
41
|
+
const [directChannelsLoaded, setDirectChannelsLoaded] = useState(false);
|
|
44
42
|
const {
|
|
45
43
|
data: organizationSharableLink
|
|
46
|
-
} = useGetOrganizationSharableLinkQuery(
|
|
47
|
-
|
|
44
|
+
} = useGetOrganizationSharableLinkQuery({
|
|
45
|
+
skip: !isOpen
|
|
46
|
+
});
|
|
47
|
+
const shareLink = useCallback(async () => {
|
|
48
|
+
var _a;
|
|
49
|
+
try {
|
|
50
|
+
const result = await Share.share({
|
|
51
|
+
message: `${config.APP_NAME} - ${(_a = organizationSharableLink == null ? void 0 : organizationSharableLink.getOrganizationSharableLink) != null ? _a : ""}`
|
|
52
|
+
});
|
|
53
|
+
} catch (error) {
|
|
54
|
+
alert(error.message);
|
|
55
|
+
}
|
|
56
|
+
}, [organizationSharableLink == null ? void 0 : organizationSharableLink.getOrganizationSharableLink]);
|
|
57
|
+
const actionItems = React__default.useMemo(() => [{
|
|
48
58
|
id: 1,
|
|
49
59
|
label: /* @__PURE__ */ React__default.createElement(HStack, { space: "sm", className: "flex-1 justify-center items-center bg-green-800", style: {
|
|
50
60
|
backgroundColor: "#166534",
|
|
@@ -92,8 +102,8 @@ const HomeScreen = ({
|
|
|
92
102
|
onPress: () => navigation.navigate(NavigationRoutes.AddPeopleByEmail, {
|
|
93
103
|
orgName
|
|
94
104
|
})
|
|
95
|
-
}];
|
|
96
|
-
const handlerExpoToken =
|
|
105
|
+
}], [isOpen, navigation, orgName, shareLink]);
|
|
106
|
+
const handlerExpoToken = useCallback(() => {
|
|
97
107
|
if (expoToken) {
|
|
98
108
|
setDeviceTokenMutation({
|
|
99
109
|
variables: {
|
|
@@ -102,47 +112,31 @@ const HomeScreen = ({
|
|
|
102
112
|
});
|
|
103
113
|
}
|
|
104
114
|
}, [expoToken, setDeviceTokenMutation]);
|
|
105
|
-
useFocusEffect(
|
|
115
|
+
useFocusEffect(useCallback(() => {
|
|
106
116
|
setSwipeEnabled(true);
|
|
107
117
|
handlerExpoToken();
|
|
108
118
|
setLoading(true);
|
|
109
119
|
const timer = setTimeout(() => {
|
|
110
120
|
setLoading(false);
|
|
111
|
-
|
|
121
|
+
setTimeout(() => {
|
|
122
|
+
setTeamsLoaded(true);
|
|
123
|
+
setTimeout(() => {
|
|
124
|
+
setChannelsLoaded(true);
|
|
125
|
+
setTimeout(() => {
|
|
126
|
+
setDirectChannelsLoaded(true);
|
|
127
|
+
}, 100);
|
|
128
|
+
}, 100);
|
|
129
|
+
}, 100);
|
|
130
|
+
}, 800);
|
|
112
131
|
return () => {
|
|
113
132
|
clearTimeout(timer);
|
|
114
133
|
setSwipeEnabled(false);
|
|
134
|
+
setTeamsLoaded(false);
|
|
135
|
+
setChannelsLoaded(false);
|
|
136
|
+
setDirectChannelsLoaded(false);
|
|
115
137
|
};
|
|
116
138
|
}, [orgName, setSwipeEnabled, handlerExpoToken]));
|
|
117
|
-
const
|
|
118
|
-
var _a2;
|
|
119
|
-
try {
|
|
120
|
-
const result = await Share.share({
|
|
121
|
-
message: `${config.APP_NAME} - ${(_a2 = organizationSharableLink == null ? void 0 : organizationSharableLink.getOrganizationSharableLink) != null ? _a2 : ""}`
|
|
122
|
-
});
|
|
123
|
-
if (result.action === Share.sharedAction) {
|
|
124
|
-
if (result.activityType) {
|
|
125
|
-
} else {
|
|
126
|
-
}
|
|
127
|
-
} else if (result.action === Share.dismissedAction) {
|
|
128
|
-
}
|
|
129
|
-
} catch (error) {
|
|
130
|
-
alert(error.message);
|
|
131
|
-
}
|
|
132
|
-
}, [organizationSharableLink == null ? void 0 : organizationSharableLink.getOrganizationSharableLink]);
|
|
133
|
-
useEffect(() => {
|
|
134
|
-
const timer = setTimeout(() => {
|
|
135
|
-
setLoading(false);
|
|
136
|
-
}, 1e3);
|
|
137
|
-
return () => clearTimeout(timer);
|
|
138
|
-
}, []);
|
|
139
|
-
return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(VirtualizedScrollView, { className: "bg-slate-50 flex-1" }, /* @__PURE__ */ React__default.createElement(Box, { className: "flex-1 bg-slate-50 pb-10 pt-2" }, loading ? /* @__PURE__ */ React__default.createElement(LoadingSpinnerDefault, null) : /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, orgName ? /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(TopCommonSlider, null), /* @__PURE__ */ React__default.createElement(Box, { style: [styles.border, {
|
|
140
|
-
marginVertical: 8
|
|
141
|
-
}] }), /* @__PURE__ */ React__default.createElement(Teams, null), /* @__PURE__ */ React__default.createElement(Box, { style: {
|
|
142
|
-
marginTop: 10
|
|
143
|
-
} }, /* @__PURE__ */ React__default.createElement(Channels, null)), /* @__PURE__ */ React__default.createElement(Box, { style: {
|
|
144
|
-
marginTop: 12
|
|
145
|
-
} }, /* @__PURE__ */ React__default.createElement(DirectChannels, null)), /* @__PURE__ */ React__default.createElement(Box, { style: [styles.bottomContainer, {
|
|
139
|
+
const AddTeammates = useCallback(() => /* @__PURE__ */ React__default.createElement(Box, { style: [styles.bottomContainer, {
|
|
146
140
|
marginTop: 15,
|
|
147
141
|
paddingHorizontal: 10
|
|
148
142
|
}] }, /* @__PURE__ */ React__default.createElement(TouchableHighlight, { underlayColor: "transparent", activeOpacity: 0.7, onPress: onOpen }, /* @__PURE__ */ React__default.createElement(Box, { className: "pr-10 py-2 pl-2" }, /* @__PURE__ */ React__default.createElement(HStack, { className: "w-full flex-1 items-center space-x-2" }, /* @__PURE__ */ React__default.createElement(Avatar, { key: "home-add-teammates-key", size: "sm", className: "bg-gray-100" }, /* @__PURE__ */ React__default.createElement(Icon, { as: AddIcon, style: {
|
|
@@ -155,7 +149,14 @@ const HomeScreen = ({
|
|
|
155
149
|
borderTopLeftRadius: 12,
|
|
156
150
|
borderTopRightRadius: 12,
|
|
157
151
|
paddingTop: 10
|
|
158
|
-
} }, "Invite people to join your team") }))
|
|
152
|
+
} }, "Invite people to join your team") })), [isOpen, onOpen, onClose, actionItems]);
|
|
153
|
+
return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(VirtualizedScrollView, { className: "bg-slate-50 flex-1" }, /* @__PURE__ */ React__default.createElement(Box, { className: "flex-1 bg-slate-50 pb-10 pt-2" }, loading ? /* @__PURE__ */ React__default.createElement(LoadingSpinnerDefault, null) : /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, orgName ? /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(TopCommonSlider, null), /* @__PURE__ */ React__default.createElement(Box, { style: [styles.border, {
|
|
154
|
+
marginVertical: 8
|
|
155
|
+
}] }), teamsLoaded ? /* @__PURE__ */ React__default.createElement(Teams, null) : /* @__PURE__ */ React__default.createElement(Box, { className: "py-2" }, /* @__PURE__ */ React__default.createElement(Spinner, { size: "small", color: Colors.primaryBgColor })), /* @__PURE__ */ React__default.createElement(Box, { style: {
|
|
156
|
+
marginTop: 10
|
|
157
|
+
} }, channelsLoaded ? /* @__PURE__ */ React__default.createElement(Channels, null) : /* @__PURE__ */ React__default.createElement(Box, { className: "py-2" }, /* @__PURE__ */ React__default.createElement(Spinner, { size: "small", color: Colors.primaryBgColor }))), /* @__PURE__ */ React__default.createElement(Box, { style: {
|
|
158
|
+
marginTop: 12
|
|
159
|
+
} }, directChannelsLoaded ? /* @__PURE__ */ React__default.createElement(DirectChannels, null) : /* @__PURE__ */ React__default.createElement(Box, { className: "py-2" }, /* @__PURE__ */ React__default.createElement(Spinner, { size: "small", color: Colors.primaryBgColor }))), /* @__PURE__ */ React__default.createElement(AddTeammates, null)) : /* @__PURE__ */ React__default.createElement(Center, { className: `flex-1 h-[${windowHeight - windowHeight / 3}] items-center justify-center` }, /* @__PURE__ */ React__default.createElement(Text, { style: {
|
|
159
160
|
fontSize: 15
|
|
160
161
|
} }, "No organization found"))))), /* @__PURE__ */ React__default.createElement(Fab, { onPress: () => navigation.navigate(NavigationRoutes.SearchAddChannel, {
|
|
161
162
|
orgName
|
|
@@ -165,7 +166,7 @@ const HomeScreen = ({
|
|
|
165
166
|
marginRight: 16
|
|
166
167
|
} }, /* @__PURE__ */ React__default.createElement(FontAwesome5, { color: "white", name: "edit", size: 18 })));
|
|
167
168
|
};
|
|
168
|
-
const Home = (props) => {
|
|
169
|
+
const Home = React__default.memo((props) => {
|
|
169
170
|
const user = useSelector((state) => state.user, shallowEqual);
|
|
170
171
|
const {
|
|
171
172
|
orgName
|
|
@@ -180,4 +181,4 @@ const Home = (props) => {
|
|
|
180
181
|
if (!orgName)
|
|
181
182
|
return /* @__PURE__ */ React__default.createElement(LoadingSpinnerDefault, null);
|
|
182
183
|
return /* @__PURE__ */ React__default.createElement(HomeScreen, __spreadValues({}, props));
|
|
183
|
-
};export{Home as default};//# sourceMappingURL=HomeScreen.js.map
|
|
184
|
+
});export{Home as default};//# sourceMappingURL=HomeScreen.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HomeScreen.js","sources":["../../../src/screens/Home/HomeScreen.tsx"],"sourcesContent":["import { Ionicons, AntDesign, FontAwesome5, MaterialCommunityIcons, Octicons } from '@expo/vector-icons';\nimport { useFocusEffect, useNavigation } from '@react-navigation/native';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport { TouchableHighlight, Share, Platform, Dimensions } from 'react-native';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport styles from './styles';\nimport {\n Box,\n // Actionsheet,\n // ActionsheetBackdrop,\n // ActionsheetContent,\n // ActionsheetDragIndicatorWrapper,\n // ActionsheetDragIndicator,\n // ActionsheetItem,\n // ActionsheetItemText,\n // ActionsheetIcon,\n Avatar,\n Icon,\n AddIcon,\n Text,\n Button,\n ButtonText,\n Spinner,\n Center,\n Fab,\n HStack,\n VStack,\n} from '@admin-layout/gluestack-ui-mobile';\nimport { StatusBar } from 'expo-status-bar';\nimport { RoomType } from 'common';\nimport {\n useSetDeviceTokenMutation,\n useGetChannelsByUserQuery,\n useGetOrganizationTeamsQuery,\n useGetOrganizationSharableLinkQuery,\n} from 'common/graphql';\nimport { isUserAuthenticated } from '@adminide-stack/user-auth0-client';\nimport VirtualizedScrollView from '../../components/VirtualizedScrollView';\nimport { useDrawerLayout } from '../../hooks/useDrawerLayout';\nimport { useDisclose } from '../../hooks/useDisclose';\nimport { useExpoNotification } from '../../hooks/useExpoNotificationProvider';\nimport { Teams } from './Components/Teams';\nimport { Channels } from './Components/Channels/index';\nimport { DirectChannels } from './Components/DirectChannels';\nimport { TopCommonSlider } from './Components/TopCommonSlider';\nimport { NavigationRoutes, colors } from '../../constants';\nimport { startCase, orderBy, uniqBy } from 'lodash-es';\nimport { navigationRef } from '@common-stack/client-react';\nimport { LoadingSpinnerDefault, Actionsheet } from '../../components';\nimport { config } from '../../config';\nimport Colors from 'tailwindcss/colors';\n\nconst windowWidth = Dimensions.get('window').width;\nconst windowHeight = Dimensions.get('window').height;\n\nconst defaultChannelType = [RoomType.Channel, RoomType.Private, RoomType.Public];\n\nconst HomeScreen = ({ navigation, route }) => {\n const user = useSelector((state: any) => state.user, shallowEqual);\n const { isOpen, onOpen, onClose } = useDisclose();\n const { setSwipeEnabled, orgName, organizationDetail, setDrawerContent } = useDrawerLayout();\n const { expoToken, setExpoToken } = useExpoNotification();\n const [setDeviceTokenMutation] = useSetDeviceTokenMutation();\n const [loading, setLoading] = useState(true);\n\n const currentRoute = navigationRef?.isReady() ? navigationRef?.getCurrentRoute() : null;\n const { data: organizationSharableLink } = useGetOrganizationSharableLinkQuery();\n const actionItems = [\n {\n id: 1,\n label: (\n <HStack\n space={'sm'}\n className=\"flex-1 justify-center items-center bg-green-800\"\n style={{\n backgroundColor: '#166534',\n paddingVertical: 12,\n borderRadius: 8,\n marginHorizontal: 10,\n marginVertical: 5,\n }}\n >\n <Ionicons color={'white'} name=\"share-outline\" size={22} />\n <Text className=\"text-white\" style={{ color: 'white', fontWeight: 'bold', fontSize: 16 }}>\n {' '}\n Share a Link\n </Text>\n </HStack>\n ),\n onPress: async () => await shareLink(),\n },\n {\n id: 2,\n //label: 'Add from Contacts',\n label: (\n <HStack\n space={'sm'}\n className=\"flex-1 justify-center items-center \"\n style={{\n paddingVertical: 12,\n borderRadius: 8,\n marginHorizontal: 10,\n marginVertical: 5,\n borderWidth: 1,\n borderColor: '#d1d5db',\n }}\n >\n <AntDesign color={'black'} name=\"adduser\" size={22} />\n <Text className=\"text-black\" style={{ color: 'black', fontWeight: 'bold', fontSize: 16 }}>\n Add from Contacts\n </Text>\n </HStack>\n ),\n onPress: () =>\n navigation.navigate(NavigationRoutes.AddPeopleFromContacts, {\n orgName,\n }),\n },\n {\n id: 3,\n // label: 'Add by Email',\n label: (\n <HStack\n space={'sm'}\n className=\"flex-1 justify-center items-center \"\n style={{\n paddingVertical: 12,\n borderRadius: 8,\n marginHorizontal: 10,\n marginVertical: 5,\n borderWidth: 1,\n borderColor: '#d1d5db',\n }}\n >\n <MaterialCommunityIcons color={'black'} name=\"email-outline\" size={22} />\n <Text style={{ color: 'black', fontWeight: 'bold', fontSize: 16 }}>Add by Email</Text>\n </HStack>\n ),\n onPress: () =>\n navigation.navigate(NavigationRoutes.AddPeopleByEmail, {\n orgName,\n }),\n },\n ];\n\n // Define handlerExpoToken before useFocusEffect\n const handlerExpoToken = React.useCallback(() => {\n if (expoToken) {\n setDeviceTokenMutation({\n variables: {\n deviceToken: expoToken,\n },\n });\n }\n }, [expoToken, setDeviceTokenMutation]);\n\n // useFocusEffect callback\n useFocusEffect(\n React.useCallback(() => {\n // Do something when the screen is focused\n setSwipeEnabled(true);\n handlerExpoToken();\n\n // Set loading state\n setLoading(true);\n\n // Turn off loading after a timeout in case other mechanisms fail\n const timer = setTimeout(() => {\n setLoading(false);\n }, 2000);\n\n return () => {\n clearTimeout(timer);\n setSwipeEnabled(false);\n };\n }, [orgName, setSwipeEnabled, handlerExpoToken]),\n );\n\n const shareLink = React.useCallback(async () => {\n try {\n const result = await Share.share({\n message: `${config.APP_NAME} - ${organizationSharableLink?.getOrganizationSharableLink ?? ''}`,\n });\n if (result.action === Share.sharedAction) {\n if (result.activityType) {\n // shared with activity type of result.activityType\n } else {\n // shared\n }\n } else if (result.action === Share.dismissedAction) {\n // dismissed\n }\n } catch (error: any) {\n alert(error.message);\n }\n }, [organizationSharableLink?.getOrganizationSharableLink]);\n\n // Turn off loading after initial render\n useEffect(() => {\n const timer = setTimeout(() => {\n setLoading(false);\n }, 1000);\n\n return () => clearTimeout(timer);\n }, []);\n\n return (\n <>\n <VirtualizedScrollView className=\"bg-slate-50 flex-1\">\n <Box className=\"flex-1 bg-slate-50 pb-10 pt-2\">\n {/* <StatusBar style=\"light\" /> */}\n {loading ? (\n <LoadingSpinnerDefault />\n ) : (\n <>\n {orgName ? (\n <>\n <TopCommonSlider />\n <Box style={[styles.border, { marginVertical: 8 }]} />\n\n {/* Organization Teams */}\n <Teams />\n\n {/* Channels */}\n <Box style={{ marginTop: 10 }}>\n <Channels />\n </Box>\n\n {/* Direct Channels */}\n <Box style={{ marginTop: 12 }}>\n <DirectChannels />\n </Box>\n\n <Box style={[styles.bottomContainer, { marginTop: 15, paddingHorizontal: 10 }]}>\n <TouchableHighlight\n underlayColor={'transparent'}\n activeOpacity={0.7}\n onPress={onOpen}\n >\n <Box className=\"pr-10 py-2 pl-2\">\n <HStack className=\"w-full flex-1 items-center space-x-2\">\n <Avatar\n key={'home-add-teammates-key'}\n size={'sm'}\n className=\"bg-gray-100\"\n >\n <Icon\n as={AddIcon}\n style={{ width: '70%', height: '70%' }}\n color={Colors.gray[700]}\n />\n </Avatar>\n <Text\n style={{ fontSize: 15, fontWeight: '500' }}\n color={Colors.gray[800]}\n >\n Add teammates\n </Text>\n </HStack>\n </Box>\n </TouchableHighlight>\n\n <Actionsheet\n isOpen={isOpen}\n actionItems={actionItems}\n onCancel={onClose}\n hideBottomWidth={true}\n header={\n <Text\n className=\"text-center font-bold text-lg bg-white \"\n style={{\n borderTopLeftRadius: 12,\n borderTopRightRadius: 12,\n paddingTop: 10,\n }}\n >\n Invite people to join your team\n </Text>\n }\n />\n </Box>\n </>\n ) : (\n //\n <Center\n className={`flex-1 h-[${\n windowHeight - windowHeight / 3\n }] items-center justify-center`}\n >\n <Text style={{ fontSize: 15 }}>No organization found</Text>\n </Center>\n )}\n </>\n )}\n </Box>\n </VirtualizedScrollView>\n <Fab\n onPress={() => navigation.navigate(NavigationRoutes.SearchAddChannel, { orgName })}\n size=\"sm\"\n className=\"items-center shadow-md\"\n style={{ backgroundColor: colors.primaryBgColor, marginBottom: 16, marginRight: 16 }}\n >\n <FontAwesome5 color=\"white\" name=\"edit\" size={18} />\n </Fab>\n </>\n );\n};\n\nconst Home = (props: any) => {\n const user = useSelector((state: any) => state.user, shallowEqual);\n const { orgName } = useDrawerLayout();\n const navigation = useNavigation<any>();\n\n useFocusEffect(\n React.useCallback(() => {\n // Do something when the screen is focused\n if (!user?.profile) navigation?.navigate(NavigationRoutes.Login);\n\n return () => {\n // Do something when the screen is unfocused\n // Useful for cleanup functions\n };\n }, []),\n );\n\n if (!orgName) return <LoadingSpinnerDefault />;\n\n return <HomeScreen {...props} />;\n};\n\nexport default Home;\n"],"names":["React","_a","Colors","Actionsheet","colors"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"HomeScreen.js","sources":["../../../src/screens/Home/HomeScreen.tsx"],"sourcesContent":["import { Ionicons, AntDesign, FontAwesome5, MaterialCommunityIcons } from '@expo/vector-icons';\nimport { useFocusEffect, useNavigation } from '@react-navigation/native';\nimport React, { useCallback, useState } from 'react';\nimport { TouchableHighlight, Share, Dimensions } from 'react-native';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport styles from './styles';\nimport { Box, Avatar, Icon, AddIcon, Text, Spinner, Center, Fab, HStack } from '@admin-layout/gluestack-ui-mobile';\nimport { RoomType } from 'common';\nimport { useSetDeviceTokenMutation, useGetOrganizationSharableLinkQuery } from 'common/graphql';\nimport VirtualizedScrollView from '../../components/VirtualizedScrollView';\nimport { useDrawerLayout } from '../../hooks/useDrawerLayout';\nimport { useDisclose } from '../../hooks/useDisclose';\nimport { useExpoNotification } from '../../hooks/useExpoNotificationProvider';\nimport { Teams } from './Components/Teams';\nimport { Channels } from './Components/Channels/index';\nimport { DirectChannels } from './Components/DirectChannels';\nimport { TopCommonSlider } from './Components/TopCommonSlider';\nimport { NavigationRoutes, colors } from '../../constants';\nimport { navigationRef } from '@common-stack/client-react';\nimport { LoadingSpinnerDefault, Actionsheet } from '../../components';\nimport { config } from '../../config';\nimport Colors from 'tailwindcss/colors';\n\nconst windowHeight = Dimensions.get('window').height;\n\nconst defaultChannelType = [RoomType.Channel, RoomType.Private, RoomType.Public];\n\nconst HomeScreen = ({ navigation, route }) => {\n const user = useSelector((state: any) => state.user, shallowEqual);\n const { isOpen, onOpen, onClose } = useDisclose();\n const { setSwipeEnabled, orgName, organizationDetail } = useDrawerLayout();\n const { expoToken } = useExpoNotification();\n const [setDeviceTokenMutation] = useSetDeviceTokenMutation();\n const [loading, setLoading] = useState(true);\n const [teamsLoaded, setTeamsLoaded] = useState(false);\n const [channelsLoaded, setChannelsLoaded] = useState(false);\n const [directChannelsLoaded, setDirectChannelsLoaded] = useState(false);\n\n // Only fetch sharable link when needed (when action sheet is open)\n const { data: organizationSharableLink } = useGetOrganizationSharableLinkQuery({\n skip: !isOpen,\n });\n\n // Define shareLink before it's used in the memo\n const shareLink = useCallback(async () => {\n try {\n const result = await Share.share({\n message: `${config.APP_NAME} - ${organizationSharableLink?.getOrganizationSharableLink ?? ''}`,\n });\n } catch (error: any) {\n alert(error.message);\n }\n }, [organizationSharableLink?.getOrganizationSharableLink]);\n\n // Memoize action items to prevent unnecessary re-renders\n const actionItems = React.useMemo(\n () => [\n {\n id: 1,\n label: (\n <HStack\n space={'sm'}\n className=\"flex-1 justify-center items-center bg-green-800\"\n style={{\n backgroundColor: '#166534',\n paddingVertical: 12,\n borderRadius: 8,\n marginHorizontal: 10,\n marginVertical: 5,\n }}\n >\n <Ionicons color={'white'} name=\"share-outline\" size={22} />\n <Text className=\"text-white\" style={{ color: 'white', fontWeight: 'bold', fontSize: 16 }}>\n {' '}\n Share a Link\n </Text>\n </HStack>\n ),\n onPress: async () => await shareLink(),\n },\n {\n id: 2,\n label: (\n <HStack\n space={'sm'}\n className=\"flex-1 justify-center items-center \"\n style={{\n paddingVertical: 12,\n borderRadius: 8,\n marginHorizontal: 10,\n marginVertical: 5,\n borderWidth: 1,\n borderColor: '#d1d5db',\n }}\n >\n <AntDesign color={'black'} name=\"adduser\" size={22} />\n <Text className=\"text-black\" style={{ color: 'black', fontWeight: 'bold', fontSize: 16 }}>\n Add from Contacts\n </Text>\n </HStack>\n ),\n onPress: () =>\n navigation.navigate(NavigationRoutes.AddPeopleFromContacts, {\n orgName,\n }),\n },\n {\n id: 3,\n label: (\n <HStack\n space={'sm'}\n className=\"flex-1 justify-center items-center \"\n style={{\n paddingVertical: 12,\n borderRadius: 8,\n marginHorizontal: 10,\n marginVertical: 5,\n borderWidth: 1,\n borderColor: '#d1d5db',\n }}\n >\n <MaterialCommunityIcons color={'black'} name=\"email-outline\" size={22} />\n <Text style={{ color: 'black', fontWeight: 'bold', fontSize: 16 }}>Add by Email</Text>\n </HStack>\n ),\n onPress: () =>\n navigation.navigate(NavigationRoutes.AddPeopleByEmail, {\n orgName,\n }),\n },\n ],\n [isOpen, navigation, orgName, shareLink],\n );\n\n // Optimize token handling\n const handlerExpoToken = useCallback(() => {\n if (expoToken) {\n setDeviceTokenMutation({\n variables: {\n deviceToken: expoToken,\n },\n });\n }\n }, [expoToken, setDeviceTokenMutation]);\n\n // Optimize focus effect\n useFocusEffect(\n useCallback(() => {\n setSwipeEnabled(true);\n handlerExpoToken();\n\n // Reduce initial loading time from 2000ms to 800ms\n setLoading(true);\n const timer = setTimeout(() => {\n setLoading(false);\n\n // Stagger component loading for better perceived performance\n setTimeout(() => {\n setTeamsLoaded(true);\n\n setTimeout(() => {\n setChannelsLoaded(true);\n\n setTimeout(() => {\n setDirectChannelsLoaded(true);\n }, 100);\n }, 100);\n }, 100);\n }, 800);\n\n return () => {\n clearTimeout(timer);\n setSwipeEnabled(false);\n // Reset loading states\n setTeamsLoaded(false);\n setChannelsLoaded(false);\n setDirectChannelsLoaded(false);\n };\n }, [orgName, setSwipeEnabled, handlerExpoToken]),\n );\n\n // Memoize the AddTeammates component to prevent unnecessary re-renders\n const AddTeammates = useCallback(\n () => (\n <Box style={[styles.bottomContainer, { marginTop: 15, paddingHorizontal: 10 }]}>\n <TouchableHighlight underlayColor={'transparent'} activeOpacity={0.7} onPress={onOpen}>\n <Box className=\"pr-10 py-2 pl-2\">\n <HStack className=\"w-full flex-1 items-center space-x-2\">\n <Avatar key={'home-add-teammates-key'} size={'sm'} className=\"bg-gray-100\">\n <Icon as={AddIcon} style={{ width: '70%', height: '70%' }} color={Colors.gray[700]} />\n </Avatar>\n <Text style={{ fontSize: 15, fontWeight: '500' }} color={Colors.gray[800]}>\n Add teammates\n </Text>\n </HStack>\n </Box>\n </TouchableHighlight>\n\n <Actionsheet\n isOpen={isOpen}\n actionItems={actionItems}\n onCancel={onClose}\n hideBottomWidth={true}\n header={\n <Text\n className=\"text-center font-bold text-lg bg-white \"\n style={{\n borderTopLeftRadius: 12,\n borderTopRightRadius: 12,\n paddingTop: 10,\n }}\n >\n Invite people to join your team\n </Text>\n }\n />\n </Box>\n ),\n [isOpen, onOpen, onClose, actionItems],\n );\n\n return (\n <>\n <VirtualizedScrollView className=\"bg-slate-50 flex-1\">\n <Box className=\"flex-1 bg-slate-50 pb-10 pt-2\">\n {/* <StatusBar style=\"light\" /> */}\n {loading ? (\n <LoadingSpinnerDefault />\n ) : (\n <>\n {orgName ? (\n <>\n <TopCommonSlider />\n <Box style={[styles.border, { marginVertical: 8 }]} />\n\n {/* Progressive loading of components */}\n {/* Organization Teams */}\n {teamsLoaded ? (\n <Teams />\n ) : (\n <Box className=\"py-2\">\n <Spinner size=\"small\" color={colors.primaryBgColor} />\n </Box>\n )}\n\n {/* Channels */}\n <Box style={{ marginTop: 10 }}>\n {channelsLoaded ? (\n <Channels />\n ) : (\n <Box className=\"py-2\">\n <Spinner size=\"small\" color={colors.primaryBgColor} />\n </Box>\n )}\n </Box>\n\n {/* Direct Channels */}\n <Box style={{ marginTop: 12 }}>\n {directChannelsLoaded ? (\n <DirectChannels />\n ) : (\n <Box className=\"py-2\">\n <Spinner size=\"small\" color={colors.primaryBgColor} />\n </Box>\n )}\n </Box>\n\n <AddTeammates />\n </>\n ) : (\n //\n <Center\n className={`flex-1 h-[${\n windowHeight - windowHeight / 3\n }] items-center justify-center`}\n >\n <Text style={{ fontSize: 15 }}>No organization found</Text>\n </Center>\n )}\n </>\n )}\n </Box>\n </VirtualizedScrollView>\n <Fab\n onPress={() => navigation.navigate(NavigationRoutes.SearchAddChannel, { orgName })}\n size=\"sm\"\n className=\"items-center shadow-md\"\n style={{ backgroundColor: colors.primaryBgColor, marginBottom: 16, marginRight: 16 }}\n >\n <FontAwesome5 color=\"white\" name=\"edit\" size={18} />\n </Fab>\n </>\n );\n};\n\n// Memoize the entire Home component to prevent unnecessary re-renders\nconst Home = React.memo((props: any) => {\n const user = useSelector((state: any) => state.user, shallowEqual);\n const { orgName } = useDrawerLayout();\n const navigation = useNavigation<any>();\n\n useFocusEffect(\n React.useCallback(() => {\n // Do something when the screen is focused\n if (!user?.profile) navigation?.navigate(NavigationRoutes.Login);\n\n return () => {\n // Do something when the screen is unfocused\n // Useful for cleanup functions\n };\n }, []),\n );\n\n if (!orgName) return <LoadingSpinnerDefault />;\n\n return <HomeScreen {...props} />;\n});\n\nexport default Home;\n"],"names":["React","Colors","Actionsheet","colors"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@messenger-box/slack-ui-mobile",
|
|
3
|
-
"version": "10.0.3-alpha.
|
|
3
|
+
"version": "10.0.3-alpha.27",
|
|
4
4
|
"description": "Slack ui ref mobile package",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"author": "CDMBase LLC",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"watch-ts": "tsc --watch"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@messenger-box/platform-mobile": "10.0.3-alpha.
|
|
26
|
+
"@messenger-box/platform-mobile": "10.0.3-alpha.23"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"cp-cli": "^2.0.0"
|
|
@@ -48,5 +48,5 @@
|
|
|
48
48
|
"typescript": {
|
|
49
49
|
"definition": "lib/index.d.ts"
|
|
50
50
|
},
|
|
51
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "027233eb43093fa789f06cfc212190741d245ff9"
|
|
52
52
|
}
|