@messenger-box/slack-ui-mobile 10.0.3-alpha.36 → 10.0.3-alpha.37

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.
Files changed (21) hide show
  1. package/lib/screens/Home/Components/Channels/Channels.js +91 -103
  2. package/lib/screens/Home/Components/Channels/Channels.js.map +1 -1
  3. package/lib/screens/Home/Components/DirectChannels/DirectChannels.js +163 -231
  4. package/lib/screens/Home/Components/DirectChannels/DirectChannels.js.map +1 -1
  5. package/lib/screens/Home/Components/Teams/Teams.js +76 -91
  6. package/lib/screens/Home/Components/Teams/Teams.js.map +1 -1
  7. package/lib/screens/Home/HomeScreen.js +3 -5
  8. package/lib/screens/Home/HomeScreen.js.map +1 -1
  9. package/package.json +3 -3
  10. package/lib/screens/Home/Components/Channels/channels-xstate.js +0 -247
  11. package/lib/screens/Home/Components/Channels/channels-xstate.js.map +0 -1
  12. package/lib/screens/Home/Components/Channels/useSafeChannelsMachine.js +0 -128
  13. package/lib/screens/Home/Components/Channels/useSafeChannelsMachine.js.map +0 -1
  14. package/lib/screens/Home/Components/DirectChannels/directChannels-xstate.js +0 -202
  15. package/lib/screens/Home/Components/DirectChannels/directChannels-xstate.js.map +0 -1
  16. package/lib/screens/Home/Components/DirectChannels/useSafeDirectChannelsMachine.js +0 -108
  17. package/lib/screens/Home/Components/DirectChannels/useSafeDirectChannelsMachine.js.map +0 -1
  18. package/lib/screens/Home/Components/Teams/hooks/useSafeMachine.js +0 -96
  19. package/lib/screens/Home/Components/Teams/hooks/useSafeMachine.js.map +0 -1
  20. package/lib/screens/Home/Components/Teams/workflow/teams-xstate.js +0 -198
  21. package/lib/screens/Home/Components/Teams/workflow/teams-xstate.js.map +0 -1
@@ -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, useCallback, useMemo, useRef, useContext } from 'react';\nimport { TouchableOpacity } from 'react-native';\nimport styles from '../../styles';\nimport {\n View,\n FlatList,\n HStack,\n Icon,\n Box,\n Text,\n Avatar,\n AvatarFallbackText,\n AvatarImage,\n AvatarBadge,\n Spinner,\n AddIcon,\n} from '@admin-layout/gluestack-ui-mobile';\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, Feather } from '@expo/vector-icons';\nimport { useDrawerLayout } from '../../../../hooks';\nimport colors from 'tailwindcss/colors';\nimport { directChannelsXstate } from './directChannels-xstate';\nimport { useSafeDirectChannelsMachine } from './useSafeDirectChannelsMachine';\nimport { RefetchContext } from '../../HomeScreen';\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 const { shouldRefetch } = useContext(RefetchContext);\n\n // Refs to avoid circular dependencies\n const reFetchDirectChannelsRef = useRef<() => void>(() => {});\n\n // Using the safe XState machine hook\n const [state, send] = useSafeDirectChannelsMachine(directChannelsXstate);\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 fetchPolicy: 'cache-and-network',\n nextFetchPolicy: 'cache-first',\n onCompleted(data) {\n send({\n type: 'SET_DIRECT_CHANNELS',\n data: { directChannels: data?.channelsByUser || [] },\n });\n },\n 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: addDirectChannelLoading }] = useAddDirectChannelMutation({\n onCompleted: () => {\n reFetchDirectChannelsRef.current();\n },\n onError: (error: any) => {\n send({ type: 'ERROR', data: { message: error.message } });\n },\n });\n\n // Initialize reFetchDirectChannels function\n const reFetchDirectChannels = useCallback(() => {\n // Skip refetch if we're already loading\n if (state.context.directChannelsLoading) {\n return;\n }\n\n if (orgName) {\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 && !addDirectChannelLoading) {\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 // 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 }, [\n orgName,\n user,\n addDirectChannelLoading,\n send,\n state.context.directChannelsLoading,\n reFetchUserDirectChannels,\n addDirectChannel,\n ]);\n\n // Update the ref whenever the function changes\n useEffect(() => {\n reFetchDirectChannelsRef.current = reFetchDirectChannels;\n }, [reFetchDirectChannels]);\n\n // Initialize XState with the org name on mount\n useEffect(() => {\n if (orgName) {\n send({\n type: 'INITIAL_CONTEXT',\n data: { orgName },\n });\n }\n\n return () => {\n send({ type: 'CLEAR_DATA' });\n };\n }, [orgName, send]);\n\n // Use RefetchContext to control when to refetch data\n useEffect(() => {\n if (shouldRefetch && orgName) {\n reFetchDirectChannels();\n }\n }, [shouldRefetch, orgName, reFetchDirectChannels]);\n\n // Focus effect to fetch data when screen is focused\n useFocusEffect(\n useCallback(() => {\n if (orgName && (!state.context.directChannels || state.context.directChannels.length === 0)) {\n reFetchDirectChannels();\n }\n }, [orgName, reFetchDirectChannels, state.context.directChannels]),\n );\n\n const organizationDirectChannels = useMemo(() => {\n if (!state.context.directChannels) return [];\n\n return (\n orderBy(\n state.context.directChannels\n ?.filter((i: any) => i.type === RoomType.Direct)\n ?.filter((c: any) =>\n c?.members?.some((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 [(ch: any) => ch?.members?.filter((m) => m?.user)?.map((u: any) => u?.user?.givenName?.toLowerCase())],\n ['asc'],\n ) || []\n );\n }, [state.context.directChannels, user?.id]);\n\n const openUserInbox = useCallback(\n (id: any, title: any, members: any, type?: any) => {\n const channelMembers =\n members\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, navigation, user?.id],\n );\n\n // Generate avatar styles based on user's name\n const getUserAvatarColor = (name: string) => {\n const colors = [\n '#4a154b', // Slack purple\n '#36c5f0', // Slack blue\n '#2eb67d', // Slack green\n '#ecb22e', // Slack yellow\n '#e01e5a', // Slack pink\n '#8d44ad', // Additional purple\n '#3498db', // Additional blue\n '#1abc9c', // Additional teal\n '#f39c12', // Additional orange\n '#e74c3c', // Additional red\n ];\n\n // Simple hash function to get consistent color for a name\n let hash = 0;\n for (let i = 0; i < name.length; i++) {\n hash = name.charCodeAt(i) + ((hash << 5) - hash);\n }\n\n return colors[Math.abs(hash) % colors.length];\n };\n\n const renderChannelMemebers = useCallback(\n ({ 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 &&\n 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 // Check if this is a group conversation\n const isGroupChat = channelMembers.length > 1;\n\n // Format title string\n let title =\n channelMembers\n ?.map((u: any) =>\n u?.id === user?.id\n ? (u?.givenName || '') + ' ' + (u?.familyName || '') + ' (you)'\n : (u?.givenName ?? '') + ' ' + (u?.familyName ?? ''),\n )\n ?.filter((mu: any) => mu)\n ?.join(', ') ?? '';\n\n // Extract organization name for group chats\n let orgNamePart = item?.team?.displayName || 'smarni';\n if (isGroupChat) {\n title = channelMembers\n .map((u: any) => u?.givenName || u?.username || '')\n .filter(Boolean)\n .join(', ');\n\n // For formatting like in the image: \"User1, User2, orgName\"\n title = `${title}, ${orgNamePart}`;\n }\n\n // For Slack-like UI - extract the first initial for avatar fallback\n const displayName = channelMembers[0]?.givenName || channelMembers[0]?.username || '?';\n const firstInitial = displayName.charAt(0).toUpperCase();\n const avatarBgColor = getUserAvatarColor(displayName);\n\n return (\n <TouchableOpacity\n key={item.id}\n onPress={() => openUserInbox(item.id, 'Inbox', validMembers, item?.type)}\n style={{\n paddingVertical: 8,\n paddingHorizontal: 12,\n }}\n >\n <HStack space=\"md\" style={{ alignItems: 'center' }}>\n {isGroupChat ? (\n <Box\n style={{\n width: 25,\n height: 25,\n borderRadius: 'none',\n backgroundColor: '#E8E8E8',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n className=\"rounded-lg\"\n >\n <Text style={{ fontWeight: '600', color: '#000' }}>{channelMembers.length}</Text>\n </Box>\n ) : (\n <Box style={{ position: 'relative' }}>\n <Avatar\n size=\"md\"\n style={{\n width: 25,\n height: 25,\n borderRadius: 25,\n backgroundColor: avatarBgColor,\n }}\n className=\"rounded-lg\"\n >\n <AvatarFallbackText style={{ color: '#FFF', fontWeight: '600' }}>\n {firstInitial}\n </AvatarFallbackText>\n {channelMembers[0]?.picture && (\n <AvatarImage\n alt={firstInitial}\n source={{\n uri: channelMembers[0]?.picture,\n }}\n style={{ borderRadius: 'none' }}\n className=\"rounded-lg\"\n />\n )}\n </Avatar>\n <Box\n style={{\n position: 'absolute',\n width: 8,\n height: 8,\n borderRadius: 4,\n backgroundColor: '#2EB67D',\n borderWidth: 1,\n borderColor: '#FFF',\n bottom: 0,\n right: 0,\n }}\n />\n </Box>\n )}\n <Text className=\"text-gray-900 flex-1 text-base\">{title}</Text>\n </HStack>\n </TouchableOpacity>\n );\n },\n [openUserInbox, user?.id],\n );\n\n const ListEmptyComponent = useCallback(() => {\n return (\n <Box style={{ padding: 12 }}>\n {state.context.directChannelsLoading ? (\n <Box style={{ alignItems: 'center', paddingVertical: 16 }}>\n <Spinner color=\"#4A154B\" size=\"small\" />\n <Text style={{ marginTop: 8, color: '#616061' }}>Loading messages...</Text>\n </Box>\n ) : state.context.error ? (\n <Box style={{ padding: 8, backgroundColor: '#FFF4F4', borderRadius: 4 }}>\n <Text color=\"#E01E5A\" style={{ marginBottom: 8, fontWeight: '500' }}>\n {state.context.error}\n </Text>\n <TouchableOpacity onPress={reFetchDirectChannels}>\n <HStack space=\"sm\" style={{ alignItems: 'center' }}>\n <Feather name=\"refresh-cw\" color=\"#1264A3\" size={16} />\n <Text color=\"#1264A3\" style={{ fontWeight: '500' }}>\n Retry\n </Text>\n </HStack>\n </TouchableOpacity>\n </Box>\n ) : (\n <Box style={{ alignItems: 'center', paddingVertical: 16 }}>\n <Box style={{ padding: 12, marginBottom: 8, borderRadius: 24, backgroundColor: '#F8F8F8' }}>\n <Feather name=\"message-circle\" color=\"#616061\" size={20} />\n </Box>\n <Text style={{ color: '#616061', textAlign: 'center' }}>No direct messages yet</Text>\n </Box>\n )}\n </Box>\n );\n }, [state.context.directChannelsLoading, state.context.error, reFetchDirectChannels]);\n\n const ListFooterComponent = useCallback(() => {\n return (\n <TouchableOpacity\n onPress={() => navigation.navigate(NavigationRoutes.SearchAddChannel, { orgName })}\n style={{ paddingVertical: 8, paddingHorizontal: 12 }}\n >\n <HStack space=\"md\" style={{ alignItems: 'center' }}>\n <Icon as={AddIcon} style={{ color: '#616061' }} />\n <Text style={{ fontSize: 16, color: '#616061' }}>Start a new message</Text>\n </HStack>\n </TouchableOpacity>\n );\n }, [navigation, orgName]);\n\n const SectionHeader = useCallback(() => {\n return (\n <TouchableOpacity\n style={{\n paddingVertical: 8,\n paddingHorizontal: 12,\n marginBottom: 4,\n }}\n onPress={() => setExpendableMessage(!expandableMessage)}\n >\n <HStack style={{ alignItems: 'center', justifyContent: 'space-between' }}>\n <Text\n style={{\n fontSize: 17,\n fontWeight: '700',\n color: '#1D1C1D',\n }}\n >\n Direct Messages\n </Text>\n <MaterialIcons\n name={expandableMessage ? 'keyboard-arrow-up' : 'keyboard-arrow-down'}\n color=\"#616061\"\n size={22}\n />\n </HStack>\n </TouchableOpacity>\n );\n }, [expandableMessage]);\n\n return (\n <View style={{ flex: 1 }}>\n <SectionHeader />\n\n {expandableMessage && (\n <FlatList\n data={organizationDirectChannels}\n renderItem={renderChannelMemebers}\n key=\"direct-messages-key\"\n keyExtractor={(item) => String(item.id)}\n contentContainerStyle={{\n flexGrow: 1,\n }}\n ListEmptyComponent={ListEmptyComponent}\n ListFooterComponent={ListFooterComponent}\n showsVerticalScrollIndicator={false}\n initialNumToRender={10}\n maxToRenderPerBatch={10}\n windowSize={5}\n // style={{ backgroundColor: '#FFF' }}\n />\n )}\n </View>\n );\n};\n\nexport default React.memo(DirectChannels);\n"],"names":["_a","_b","colors","React"],"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, useCallback, useMemo, useRef, useContext } from 'react';\nimport { TouchableOpacity } from 'react-native';\nimport styles from '../../styles';\nimport {\n View,\n FlatList,\n HStack,\n Icon,\n Box,\n Text,\n Avatar,\n AvatarFallbackText,\n AvatarImage,\n AvatarBadge,\n AddIcon,\n} from '@admin-layout/gluestack-ui-mobile';\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, GetChannelsByUserDocument } from 'common/graphql';\nimport { NavigationRoutes } from '../../../../constants';\nimport { MaterialIcons, Feather, FontAwesome } from '@expo/vector-icons';\nimport { useDrawerLayout } from '../../../../hooks';\nimport colors from 'tailwindcss/colors';\nimport { RefetchContext } from '../../HomeScreen';\n\n// Define a type for the channel data\ninterface Channel {\n id: string;\n title: string;\n displayName: string;\n type: string;\n members: Array<{\n id: string;\n user: any;\n }>;\n}\n\ninterface ChannelsByUserData {\n channelsByUser: Channel[];\n}\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 const { shouldRefetch } = useContext(RefetchContext);\n\n // Simplified local state\n const [state, setState] = useState({\n directChannels: [],\n error: null,\n });\n\n // Refs to avoid circular dependencies\n const reFetchDirectChannelsRef = useRef<() => void>(() => {});\n\n // GraphQL Queries and Mutations\n const { data: userDirectChannels, refetch: reFetchUserDirectChannels } = useGetChannelsByUserQuery({\n variables: {\n criteria: {\n orgName: orgName,\n type: RoomType.Direct,\n team: null,\n },\n limit: 21,\n },\n fetchPolicy: 'cache-and-network',\n nextFetchPolicy: 'cache-first',\n onCompleted(data) {\n setState((prev) => ({\n ...prev,\n directChannels: data?.channelsByUser || [],\n }));\n },\n 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 setState((prev) => ({\n ...prev,\n error: errorMessage,\n }));\n },\n // Skip the query if organization name is not available\n skip: !orgName,\n });\n\n const [addDirectChannel] = useAddDirectChannelMutation({\n onCompleted: () => {\n reFetchDirectChannelsRef.current();\n },\n onError: (error: any) => {\n setState((prev) => ({\n ...prev,\n error: error.message,\n }));\n },\n update: (cache, { data }) => {\n // Update the cache with the new channel\n try {\n if (data?.createDirectChannel) {\n // Read the current query data from cache with type assertion\n const existingData = cache.readQuery({\n query: GetChannelsByUserDocument,\n variables: {\n criteria: {\n orgName: orgName,\n type: RoomType.Direct,\n team: null,\n },\n limit: 21,\n },\n }) as ChannelsByUserData | null;\n\n // If we have existing data, update it\n if (existingData?.channelsByUser) {\n // Check if the new channel already exists in the cache\n const channelExists = existingData.channelsByUser.some(\n (channel) => channel.id === data.createDirectChannel.id,\n );\n\n // Only add the new channel if it doesn't already exist\n if (!channelExists) {\n // Write the updated data back to the cache with type assertion\n cache.writeQuery({\n query: GetChannelsByUserDocument,\n variables: {\n criteria: {\n orgName: orgName,\n type: RoomType.Direct,\n team: null,\n },\n limit: 21,\n },\n data: {\n channelsByUser: [data.createDirectChannel, ...existingData.channelsByUser],\n } as ChannelsByUserData,\n });\n }\n }\n }\n } catch (err) {\n console.error('Error updating cache after adding direct channel:', err);\n }\n },\n });\n\n // Initialize reFetchDirectChannels function\n const reFetchDirectChannels = useCallback(() => {\n if (orgName) {\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 setState((prev) => ({\n ...prev,\n 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) {\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 // 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 messages are temporarily unavailable. Please try again later.'\n : error.message || 'Failed to fetch direct messages';\n\n setState((prev) => ({\n ...prev,\n error: errorMessage,\n }));\n });\n }\n }, [orgName, user?.id, reFetchUserDirectChannels, addDirectChannel]);\n\n // Set ref for future calls\n useEffect(() => {\n reFetchDirectChannelsRef.current = reFetchDirectChannels;\n }, [reFetchDirectChannels]);\n\n // Reset state when unmounting\n useEffect(() => {\n return () => {\n setState((prev) => ({\n ...prev,\n directChannels: [],\n }));\n };\n }, [orgName]);\n\n // Use RefetchContext to control when to refetch data\n useEffect(() => {\n if (shouldRefetch && orgName) {\n reFetchDirectChannels();\n }\n }, [shouldRefetch, orgName, reFetchDirectChannels]);\n\n // Focus effect to fetch data when screen is focused\n useFocusEffect(\n useCallback(() => {\n if (orgName) {\n reFetchDirectChannels();\n }\n }, [orgName]),\n );\n\n const organizationDirectChannels = useMemo(() => {\n return (\n (state.directChannels &&\n state.directChannels?.length &&\n orderBy(\n [...state.directChannels]?.filter((i: any) => i.type === RoomType.Direct),\n [(ch: any) => (ch.members && ch.members.length > 0 ? ch.members[0]?.user?.givenName : '')],\n ['asc'],\n )) ||\n []\n );\n }, [state.directChannels]);\n\n const openInbox = 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, navigation],\n );\n\n const renderDirectChannelItem = useCallback(\n ({ item }) => {\n const isSelfDM = item.members?.length === 1 && item.members?.[0]?.user?.id === user?.id;\n\n const member =\n item.members?.filter((m: any) => m?.user?.id !== user?.id)?.[0]?.user || item.members?.[0]?.user;\n\n const getUserName = () => {\n if (isSelfDM) {\n return user?.givenName || user?.username || 'You';\n }\n\n return member?.givenName || member?.username || 'Unknown';\n };\n\n return (\n <TouchableOpacity\n onPress={() => openInbox(item.id, getUserName(), item.members?.length, item.type)}\n style={{ paddingVertical: 2, paddingHorizontal: 12 }}\n >\n <HStack space=\"md\" className=\"items-center\">\n <Avatar size=\"xs\" style={{ backgroundColor: getUserAvatarColor(getUserName()) }}>\n <AvatarFallbackText>{getUserName()}</AvatarFallbackText>\n {member?.picture && <AvatarImage source={{ uri: member.picture }} alt={getUserName()} />}\n </Avatar>\n <Text className=\"text-gray-900 flex-1 text-base\">\n {getUserName()}\n {isSelfDM && ' (you)'}\n </Text>\n </HStack>\n </TouchableOpacity>\n );\n },\n [user, openInbox],\n );\n\n const getUserAvatarColor = (name: string) => {\n const colorOptions = [\n '#E57373', // Red\n '#F06292', // Pink\n '#BA68C8', // Purple\n '#9575CD', // Deep Purple\n '#7986CB', // Indigo\n '#64B5F6', // Blue\n '#4FC3F7', // Light Blue\n '#4DD0E1', // Cyan\n '#4DB6AC', // Teal\n '#81C784', // Green\n '#AED581', // Light Green\n '#DCE775', // Lime\n '#FFD54F', // Amber\n '#FFB74D', // Orange\n '#FF8A65', // Deep Orange\n ];\n\n // Simple hash function to map names to consistent colors\n let hash = 0;\n for (let i = 0; i < name.length; i++) {\n hash = name.charCodeAt(i) + ((hash << 5) - hash);\n }\n hash = Math.abs(hash);\n return colorOptions[hash % colorOptions.length];\n };\n\n const ListEmptyComponent = useCallback(() => {\n return (\n <Box style={{ padding: 12 }}>\n {state.error ? (\n <Box style={{ padding: 8, backgroundColor: '#FFF4F4', borderRadius: 4 }}>\n <Text color=\"#E01E5A\" style={{ marginBottom: 8, fontWeight: '500' }}>\n {state.error}\n </Text>\n <TouchableOpacity onPress={reFetchDirectChannels}>\n <HStack space=\"sm\" style={{ alignItems: 'center' }}>\n <Feather name=\"refresh-cw\" color=\"#1264A3\" size={16} />\n <Text color=\"#1264A3\" style={{ fontWeight: '500' }}>\n Retry\n </Text>\n </HStack>\n </TouchableOpacity>\n </Box>\n ) : (\n <Box style={{ alignItems: 'center', paddingVertical: 16 }}>\n <Box style={{ padding: 12, marginBottom: 8, borderRadius: 24, backgroundColor: '#F8F8F8' }}>\n <MaterialIcons name=\"person-outline\" color=\"#616061\" size={20} />\n </Box>\n <Text style={{ color: '#616061', textAlign: 'center' }}>No direct messages yet</Text>\n </Box>\n )}\n </Box>\n );\n }, [state.error, reFetchDirectChannels]);\n\n const ListFooterComponent = useCallback(() => {\n return (\n <TouchableOpacity\n onPress={() => navigation.navigate(NavigationRoutes.AddPeople, { orgName })}\n style={{ paddingVertical: 6, paddingHorizontal: 12 }}\n >\n <HStack space=\"md\" className=\"items-center\">\n <Feather color=\"#616061\" name=\"plus\" size={18} />\n <Text style={{ fontSize: 16, color: '#616061' }}>Add People</Text>\n </HStack>\n </TouchableOpacity>\n );\n }, [orgName, navigation]);\n\n const SectionHeader = useCallback(() => {\n return (\n <TouchableOpacity\n onPress={() => setExpendableMessage(!expandableMessage)}\n style={{ paddingVertical: 6, paddingHorizontal: 16 }}\n >\n <HStack className=\"justify-between items-center\">\n <Text className=\"font-semibold\" style={{ fontSize: 15, color: '#1D1C1D' }}>\n Direct Messages\n </Text>\n <FontAwesome\n name={expandableMessage ? 'chevron-down' : 'chevron-left'}\n color={colors.gray[800]}\n size={12}\n />\n </HStack>\n </TouchableOpacity>\n );\n }, [expandableMessage]);\n\n if (!expandableMessage) {\n return <SectionHeader />;\n }\n\n return (\n <Box>\n <SectionHeader />\n {organizationDirectChannels?.length > 0 ? (\n <FlatList\n keyExtractor={(item) => (item?.id || 'direct') + '-' + item?.title}\n data={organizationDirectChannels}\n renderItem={renderDirectChannelItem}\n ListFooterComponent={ListFooterComponent}\n style={{ marginTop: 6 }}\n scrollEnabled={false}\n />\n ) : (\n <Box>\n <ListEmptyComponent />\n <ListFooterComponent />\n </Box>\n )}\n </Box>\n );\n};\n\nexport default DirectChannels;\n"],"names":["_a","_b","React"],"mappings":"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"}
@@ -1,4 +1,23 @@
1
- import {useNavigation,useIsFocused,useFocusEffect}from'@react-navigation/native';import React__default,{useState,useContext,useCallback,useEffect,useMemo}from'react';import {TouchableOpacity}from'react-native';import {HStack,Text,Box,Spinner,VStack,View,FlatList}from'@admin-layout/gluestack-ui-mobile';import {NavigationRoutes}from'../../../../constants/routes.js';import {userSelector}from'@adminide-stack/user-auth0-client';import {useSelector,shallowEqual}from'react-redux';import {take,orderBy,uniqBy}from'lodash-es';import {useGetOrganizationTeamsQuery}from'common/graphql';import {Octicons,Feather,MaterialIcons}from'@expo/vector-icons';import'expo-font';import'expo-splash-screen';import {useDrawerLayout}from'../../../../hooks/useDrawerLayout.js';import'../../../../hooks/useExpoNotificationProvider.js';import colors from'tailwindcss/colors';import'./workflow/teams-xstate.js';import {useSafeMachine}from'./hooks/useSafeMachine.js';import {RefetchContext}from'../../HomeScreen.js';const Teams = () => {
1
+ import {useNavigation,useIsFocused,useFocusEffect}from'@react-navigation/native';import React__default,{useState,useContext,useCallback,useEffect,useMemo}from'react';import {TouchableOpacity}from'react-native';import {HStack,Text,Box,VStack,FlatList}from'@admin-layout/gluestack-ui-mobile';import {NavigationRoutes}from'../../../../constants/routes.js';import {userSelector}from'@adminide-stack/user-auth0-client';import {useSelector,shallowEqual}from'react-redux';import {take,orderBy,uniqBy}from'lodash-es';import {useGetOrganizationTeamsQuery}from'common/graphql';import {Octicons,Feather,MaterialIcons,FontAwesome}from'@expo/vector-icons';import'expo-font';import'expo-splash-screen';import {useDrawerLayout}from'../../../../hooks/useDrawerLayout.js';import'../../../../hooks/useExpoNotificationProvider.js';import colors from'tailwindcss/colors';import {RefetchContext}from'../../HomeScreen.js';var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ const Teams = () => {
2
21
  const {
3
22
  orgName,
4
23
  organizationDetail
@@ -10,17 +29,12 @@ import {useNavigation,useIsFocused,useFocusEffect}from'@react-navigation/native'
10
29
  const {
11
30
  shouldRefetch
12
31
  } = useContext(RefetchContext);
13
- const [state, send] = useSafeMachine();
14
- const {
15
- teams,
16
- loading,
17
- teamsLoading,
18
- error
19
- } = state.context;
32
+ const [state, setState] = useState({
33
+ teams: [],
34
+ error: null
35
+ });
20
36
  const {
21
37
  data: orgTeams,
22
- loading: orgTeamsLoading,
23
- error: orgTeamsError,
24
38
  refetch: reFetchOrgTeams
25
39
  } = useGetOrganizationTeamsQuery({
26
40
  variables: {
@@ -31,89 +45,63 @@ import {useNavigation,useIsFocused,useFocusEffect}from'@react-navigation/native'
31
45
  onCompleted(data) {
32
46
  var _a;
33
47
  if ((_a = data == null ? void 0 : data.getOrganizationTeams) == null ? void 0 : _a.length) {
34
- send({
35
- type: "SET_TEAMS",
36
- data: {
37
- teams: (data == null ? void 0 : data.getOrganizationTeams) || []
38
- }
39
- });
48
+ setState((prev) => __spreadProps(__spreadValues({}, prev), {
49
+ teams: (data == null ? void 0 : data.getOrganizationTeams) || []
50
+ }));
40
51
  }
41
52
  },
42
- onError(error2) {
43
- const isTeamServiceError = error2.message.includes("Service 'TeamService");
44
- const errorMessage = isTeamServiceError ? "Team service is temporarily unavailable. Please try again later." : error2.message;
45
- send({
46
- type: "ERROR",
47
- data: {
48
- message: errorMessage
49
- }
50
- });
53
+ onError(error) {
54
+ const isTeamServiceError = error.message.includes("Service 'TeamService");
55
+ const errorMessage = isTeamServiceError ? "Team service is temporarily unavailable. Please try again later." : error.message;
56
+ setState((prev) => __spreadProps(__spreadValues({}, prev), {
57
+ error: errorMessage
58
+ }));
51
59
  },
52
60
  skip: !orgName
53
61
  });
54
62
  const reFetchTeams = useCallback(() => {
55
- if (state.context.teamsLoading) {
56
- console.log("Skipping teams refetch - already in progress");
57
- return;
58
- }
59
63
  if (orgName) {
60
- console.log("Refetching teams");
61
- send({
62
- type: "REFETCH_TEAMS"
63
- });
64
64
  reFetchOrgTeams({
65
65
  orgName
66
66
  }).then((res) => {
67
67
  var _a;
68
68
  if ((_a = res == null ? void 0 : res.data) == null ? void 0 : _a.getOrganizationTeams) {
69
- send({
70
- type: "SET_TEAMS",
71
- data: {
72
- teams: res.data.getOrganizationTeams
73
- }
74
- });
75
- }
76
- }).catch((error2) => {
77
- const isTeamServiceError = error2.message && error2.message.includes("Service 'TeamService");
78
- const errorMessage = isTeamServiceError ? "Teams are temporarily unavailable. Please try again later." : error2.message || "Failed to fetch teams";
79
- send({
80
- type: "ERROR",
81
- data: {
82
- message: errorMessage
83
- }
84
- });
85
- });
86
- }
87
- }, [orgName, send, state.context.teamsLoading, reFetchOrgTeams]);
88
- useEffect(() => {
89
- if (orgName && !state.context.orgName) {
90
- console.log("Initializing state with orgName:", orgName);
91
- send({
92
- type: "INITIAL_CONTEXT",
93
- data: {
94
- orgName
69
+ setState((prev) => __spreadProps(__spreadValues({}, prev), {
70
+ teams: res.data.getOrganizationTeams
71
+ }));
95
72
  }
73
+ }).catch((error) => {
74
+ const isTeamServiceError = error.message && error.message.includes("Service 'TeamService");
75
+ const errorMessage = isTeamServiceError ? "Teams are temporarily unavailable. Please try again later." : error.message || "Failed to fetch teams";
76
+ setState((prev) => __spreadProps(__spreadValues({}, prev), {
77
+ error: errorMessage
78
+ }));
96
79
  });
97
80
  }
98
- }, [orgName, state.context.orgName, send]);
81
+ }, [orgName, reFetchOrgTeams]);
99
82
  useEffect(() => {
100
83
  return () => {
101
- send({
102
- type: "CLEAR_DATA"
103
- });
84
+ setState((prev) => __spreadProps(__spreadValues({}, prev), {
85
+ teams: []
86
+ }));
104
87
  };
105
- }, [send]);
88
+ }, [orgName]);
89
+ useEffect(() => {
90
+ if (shouldRefetch && orgName) {
91
+ reFetchTeams();
92
+ }
93
+ }, [shouldRefetch, orgName, reFetchTeams]);
106
94
  useFocusEffect(useCallback(() => {
107
95
  if (orgName) {
108
96
  reFetchTeams();
109
97
  }
110
98
  }, [orgName]));
111
99
  const organizationTeams = useMemo(() => {
112
- var _a;
113
- return teams && (teams == null ? void 0 : teams.length) && take(orderBy(uniqBy((_a = [...teams]) == null ? void 0 : _a.filter((t) => (t == null ? void 0 : t.orgName) === orgName), ({
100
+ var _a, _b;
101
+ return state.teams && ((_a = state.teams) == null ? void 0 : _a.length) && take(orderBy(uniqBy((_b = [...state.teams]) == null ? void 0 : _b.filter((t) => (t == null ? void 0 : t.orgName) === orgName), ({
114
102
  _id
115
103
  }) => _id), [(ch) => ch == null ? void 0 : ch.title.toLowerCase()], ["asc"]), 10) || [];
116
- }, [teams, orgName]);
104
+ }, [state.teams, orgName]);
117
105
  const viewTeam = useCallback((item) => {
118
106
  var _a, _b, _c;
119
107
  navigation.navigate(NavigationRoutes.ViewTeam, {
@@ -134,20 +122,14 @@ import {useNavigation,useIsFocused,useFocusEffect}from'@react-navigation/native'
134
122
  const ListEmptyComponent = useCallback(() => {
135
123
  return /* @__PURE__ */ React__default.createElement(Box, { style: {
136
124
  padding: 12
137
- } }, teamsLoading ? /* @__PURE__ */ React__default.createElement(Box, { style: {
138
- alignItems: "center",
139
- paddingVertical: 16
140
- } }, /* @__PURE__ */ React__default.createElement(Spinner, { color: "#4A154B", size: "small" }), /* @__PURE__ */ React__default.createElement(Text, { style: {
141
- marginTop: 8,
142
- color: "#616061"
143
- } }, "Loading teams...")) : error ? /* @__PURE__ */ React__default.createElement(Box, { style: {
125
+ } }, state.error ? /* @__PURE__ */ React__default.createElement(Box, { style: {
144
126
  padding: 8,
145
127
  backgroundColor: "#FFF4F4",
146
128
  borderRadius: 4
147
129
  } }, /* @__PURE__ */ React__default.createElement(Text, { color: "#E01E5A", style: {
148
130
  marginBottom: 8,
149
131
  fontWeight: "500"
150
- } }, error), /* @__PURE__ */ React__default.createElement(TouchableOpacity, { onPress: reFetchTeams }, /* @__PURE__ */ React__default.createElement(HStack, { space: "sm", style: {
132
+ } }, state.error), /* @__PURE__ */ React__default.createElement(TouchableOpacity, { onPress: reFetchTeams }, /* @__PURE__ */ React__default.createElement(HStack, { space: "sm", style: {
151
133
  alignItems: "center"
152
134
  } }, /* @__PURE__ */ React__default.createElement(Feather, { name: "refresh-cw", color: "#1264A3", size: 16 }), /* @__PURE__ */ React__default.createElement(Text, { color: "#1264A3", style: {
153
135
  fontWeight: "500"
@@ -163,9 +145,10 @@ import {useNavigation,useIsFocused,useFocusEffect}from'@react-navigation/native'
163
145
  color: "#616061",
164
146
  textAlign: "center"
165
147
  } }, "No teams available")));
166
- }, [teamsLoading, error, reFetchTeams]);
148
+ }, [state.error, reFetchTeams]);
167
149
  const ListFooterComponent = useCallback(() => {
168
- return /* @__PURE__ */ React__default.createElement(VStack, null, (teams == null ? void 0 : teams.length) > 10 && /* @__PURE__ */ React__default.createElement(TouchableOpacity, { onPress: () => navigation.navigate(NavigationRoutes.Teams, {
150
+ var _a;
151
+ return /* @__PURE__ */ React__default.createElement(VStack, null, ((_a = state.teams) == null ? void 0 : _a.length) > 10 && /* @__PURE__ */ React__default.createElement(TouchableOpacity, { onPress: () => navigation.navigate(NavigationRoutes.Teams, {
169
152
  orgName
170
153
  }), style: {
171
154
  paddingVertical: 8,
@@ -182,18 +165,20 @@ import {useNavigation,useIsFocused,useFocusEffect}from'@react-navigation/native'
182
165
  fontSize: 16,
183
166
  color: "#616061"
184
167
  } }, "Add Team"))));
185
- }, [teams, orgName, navigation]);
168
+ }, [state.teams, orgName, navigation]);
186
169
  const SectionHeader = useCallback(() => {
187
- return /* @__PURE__ */ React__default.createElement(TouchableOpacity, { style: {
188
- paddingVertical: 8,
189
- paddingHorizontal: 12,
190
- marginBottom: 4
191
- }, onPress: () => setTeamExpendable(!teamExpandable) }, /* @__PURE__ */ React__default.createElement(HStack, { className: "items-center justify-between" }, /* @__PURE__ */ React__default.createElement(Text, { className: "text-gray-900 font-bold text-lg" }, "Teams"), /* @__PURE__ */ React__default.createElement(HStack, { space: "sm", className: "items-center" }, teamsLoading && /* @__PURE__ */ React__default.createElement(Spinner, { size: "small", color: "#4A154B" }), /* @__PURE__ */ React__default.createElement(MaterialIcons, { name: teamExpandable ? "keyboard-arrow-up" : "keyboard-arrow-down", color: "#616061", size: 22 }))));
192
- }, [teamExpandable, teamsLoading]);
193
- return /* @__PURE__ */ React__default.createElement(View, { style: {
194
- flex: 1
195
- } }, /* @__PURE__ */ React__default.createElement(SectionHeader, null), teamExpandable && /* @__PURE__ */ React__default.createElement(FlatList, { data: organizationTeams, renderItem: renderOrganizationTeamItem, keyExtractor: (item) => String(item.id || item._id), ListEmptyComponent, ListFooterComponent, showsVerticalScrollIndicator: false, initialNumToRender: 10, maxToRenderPerBatch: 10, windowSize: 5, contentContainerStyle: {
196
- flexGrow: 1
197
- } }));
198
- };
199
- var Teams$1 = React__default.memo(Teams);export{Teams$1 as default};//# sourceMappingURL=Teams.js.map
170
+ return /* @__PURE__ */ React__default.createElement(TouchableOpacity, { onPress: () => setTeamExpendable(!teamExpandable), style: {
171
+ paddingVertical: 6,
172
+ paddingHorizontal: 16
173
+ } }, /* @__PURE__ */ React__default.createElement(HStack, { className: "justify-between items-center" }, /* @__PURE__ */ React__default.createElement(Text, { className: "font-semibold", style: {
174
+ fontSize: 15,
175
+ color: "#1D1C1D"
176
+ } }, "Teams"), /* @__PURE__ */ React__default.createElement(FontAwesome, { name: teamExpandable ? "chevron-down" : "chevron-left", color: colors.gray[800], size: 12 })));
177
+ }, [teamExpandable]);
178
+ if (!teamExpandable) {
179
+ return /* @__PURE__ */ React__default.createElement(SectionHeader, null);
180
+ }
181
+ return /* @__PURE__ */ React__default.createElement(Box, null, /* @__PURE__ */ React__default.createElement(SectionHeader, null), (organizationTeams == null ? void 0 : organizationTeams.length) > 0 ? /* @__PURE__ */ React__default.createElement(FlatList, { keyExtractor: (item) => ((item == null ? void 0 : item.id) || "team") + "-" + (item == null ? void 0 : item.title), data: organizationTeams, renderItem: renderOrganizationTeamItem, ListFooterComponent, style: {
182
+ marginTop: 6
183
+ }, scrollEnabled: false }) : /* @__PURE__ */ React__default.createElement(Box, null, /* @__PURE__ */ React__default.createElement(ListEmptyComponent, null), /* @__PURE__ */ React__default.createElement(ListFooterComponent, null)));
184
+ };export{Teams as default};//# sourceMappingURL=Teams.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Teams.js","sources":["../../../../../src/screens/Home/Components/Teams/Teams.tsx"],"sourcesContent":["import { useIsFocused, useFocusEffect } from '@react-navigation/native';\nimport React, { useState, useEffect, useCallback, useMemo, useContext } from 'react';\nimport { TouchableOpacity } from 'react-native';\nimport styles from '../../styles';\nimport { View, FlatList, Box, Text, Spinner, HStack, VStack } from '@admin-layout/gluestack-ui-mobile';\nimport { NavigationRoutes } from '../../../../constants/routes';\nimport { userSelector } from '@adminide-stack/user-auth0-client';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport { useNavigation } from '@react-navigation/native';\nimport { orderBy, uniqBy, take } from 'lodash-es';\nimport { useGetOrganizationTeamsQuery } from 'common/graphql';\nimport { useDrawerLayout } from '../../../../hooks';\nimport { FontAwesome, Feather, Octicons, MaterialIcons } from '@expo/vector-icons';\nimport colors from 'tailwindcss/colors';\nimport { teamsXstate } from './workflow/teams-xstate';\nimport { useSafeMachine } from './hooks/useSafeMachine';\nimport { RefetchContext } from '../../HomeScreen';\n\nconst Teams = () => {\n const { orgName, organizationDetail } = useDrawerLayout();\n const navigation = useNavigation<any>();\n const [teamExpandable, setTeamExpendable] = useState(true);\n const user = useSelector(userSelector, shallowEqual);\n const isFocused = useIsFocused();\n const { shouldRefetch } = useContext(RefetchContext);\n\n // Using the safe XState machine hook\n const [state, send] = useSafeMachine(teamsXstate);\n const { teams, loading, teamsLoading, error } = state.context;\n\n const {\n data: orgTeams,\n loading: orgTeamsLoading,\n error: orgTeamsError,\n refetch: reFetchOrgTeams,\n } = useGetOrganizationTeamsQuery({\n variables: { orgName: orgName },\n fetchPolicy: 'cache-and-network',\n nextFetchPolicy: 'cache-first',\n onCompleted(data) {\n if (data?.getOrganizationTeams?.length) {\n send({\n type: 'SET_TEAMS',\n data: { teams: data?.getOrganizationTeams || [] },\n });\n }\n },\n onError(error) {\n // Check specifically for team service errors\n const isTeamServiceError = error.message.includes(\"Service 'TeamService\");\n const errorMessage = isTeamServiceError\n ? 'Team 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: !orgName,\n });\n\n const reFetchTeams = useCallback(() => {\n // Skip refetch if we're already loading\n if (state.context.teamsLoading) {\n console.log('Skipping teams refetch - already in progress');\n return;\n }\n\n if (orgName) {\n console.log('Refetching teams');\n send({ type: 'REFETCH_TEAMS' });\n reFetchOrgTeams({ orgName: orgName })\n .then((res) => {\n if (res?.data?.getOrganizationTeams) {\n send({\n type: 'SET_TEAMS',\n data: { teams: res.data.getOrganizationTeams },\n });\n }\n })\n .catch((error) => {\n // Check specifically for team service errors\n const isTeamServiceError = error.message && error.message.includes(\"Service 'TeamService\");\n const errorMessage = isTeamServiceError\n ? 'Teams are temporarily unavailable. Please try again later.'\n : error.message || 'Failed to fetch teams';\n\n send({\n type: 'ERROR',\n data: { message: errorMessage },\n });\n });\n }\n }, [orgName, send, state.context.teamsLoading, reFetchOrgTeams]);\n\n // Initialize XState with the org name when component mounts or orgName changes\n useEffect(() => {\n if (orgName && !state.context.orgName) {\n console.log('Initializing state with orgName:', orgName);\n send({\n type: 'INITIAL_CONTEXT',\n data: { orgName },\n });\n }\n }, [orgName, state.context.orgName, send]);\n\n // Clean up when unmounting\n useEffect(() => {\n return () => {\n send({ type: 'CLEAR_DATA' });\n };\n }, [send]);\n\n // Use RefetchContext to control when to refetch data\n // useEffect(() => {\n // if (shouldRefetch && orgName) {\n // reFetchTeams();\n // }\n // }, [shouldRefetch, orgName, reFetchTeams]);\n\n // useFocusEffect(\n // useCallback(() => {\n // // Only fetch teams when first focused or when we don't have any teams\n // if (orgName && (!teams || teams.length === 0)) {\n // reFetchTeams();\n // }\n // }, [reFetchTeams, teams, orgName]),\n // );\n\n useFocusEffect(\n useCallback(() => {\n // Only fetch teams when first focused or when we don't have any teams\n if (orgName) {\n reFetchTeams();\n }\n }, [orgName]),\n );\n\n const organizationTeams = useMemo(() => {\n return (\n (teams &&\n teams?.length &&\n take(\n orderBy(\n uniqBy(\n [...teams]?.filter((t: any) => t?.orgName === orgName),\n ({ _id }) => _id,\n ),\n [(ch: any) => ch?.title.toLowerCase()],\n ['asc'],\n ),\n 10,\n )) ||\n []\n );\n }, [teams, orgName]);\n\n const viewTeam = useCallback(\n (item: any) => {\n navigation.navigate(NavigationRoutes.ViewTeam, {\n teamId: item?.id?.toString(),\n teamName: item?.name,\n title: item?.title?.toString(),\n totalMembers: item?.teamMembers?.length,\n orgName: orgName,\n hideTabBar: true,\n });\n },\n [orgName, navigation],\n );\n\n const renderOrganizationTeamItem = useCallback(\n ({ item }) => (\n <TouchableOpacity\n key={item.id}\n onPress={() => viewTeam(item)}\n style={{ paddingVertical: 2, paddingHorizontal: 12 }}\n >\n <HStack space=\"md\" className=\"items-center\">\n <Octicons color={colors.gray[700]} name=\"lock\" size={18} />\n <Text className=\"text-gray-900 flex-1 text-base\">{item.title}</Text>\n </HStack>\n </TouchableOpacity>\n ),\n [viewTeam],\n );\n\n const ListEmptyComponent = useCallback(() => {\n return (\n <Box style={{ padding: 12 }}>\n {teamsLoading ? (\n <Box style={{ alignItems: 'center', paddingVertical: 16 }}>\n <Spinner color=\"#4A154B\" size=\"small\" />\n <Text style={{ marginTop: 8, color: '#616061' }}>Loading teams...</Text>\n </Box>\n ) : error ? (\n <Box style={{ padding: 8, backgroundColor: '#FFF4F4', borderRadius: 4 }}>\n <Text color=\"#E01E5A\" style={{ marginBottom: 8, fontWeight: '500' }}>\n {error}\n </Text>\n <TouchableOpacity onPress={reFetchTeams}>\n <HStack space=\"sm\" style={{ alignItems: 'center' }}>\n <Feather name=\"refresh-cw\" color=\"#1264A3\" size={16} />\n <Text color=\"#1264A3\" style={{ fontWeight: '500' }}>\n Retry\n </Text>\n </HStack>\n </TouchableOpacity>\n </Box>\n ) : (\n <Box style={{ alignItems: 'center', paddingVertical: 16 }}>\n <Box style={{ padding: 12, marginBottom: 8, borderRadius: 24, backgroundColor: '#F8F8F8' }}>\n <Octicons name=\"organization\" color=\"#616061\" size={20} />\n </Box>\n <Text style={{ color: '#616061', textAlign: 'center' }}>No teams available</Text>\n </Box>\n )}\n </Box>\n );\n }, [teamsLoading, error, reFetchTeams]);\n\n const ListFooterComponent = useCallback(() => {\n return (\n <VStack>\n {teams?.length > 10 && (\n <TouchableOpacity\n onPress={() => navigation.navigate(NavigationRoutes.Teams, { orgName })}\n style={{ paddingVertical: 8, paddingHorizontal: 12 }}\n >\n <HStack space=\"md\" className=\"items-center\">\n <MaterialIcons color=\"#616061\" name=\"search\" size={18} />\n <Text style={{ fontSize: 16, color: '#616061' }}>Browse all Teams</Text>\n </HStack>\n </TouchableOpacity>\n )}\n\n <TouchableOpacity\n onPress={() => navigation.navigate(NavigationRoutes.AddTeam, { orgName })}\n style={{ paddingBottom: 5, paddingHorizontal: 12 }}\n >\n <HStack space=\"md\" className=\"items-center\">\n <Feather color=\"#616061\" name=\"plus\" size={18} />\n <Text style={{ fontSize: 16, color: '#616061' }}>Add Team</Text>\n </HStack>\n </TouchableOpacity>\n </VStack>\n );\n }, [teams, orgName, navigation]);\n\n const SectionHeader = useCallback(() => {\n return (\n <TouchableOpacity\n style={{\n paddingVertical: 8,\n paddingHorizontal: 12,\n marginBottom: 4,\n }}\n onPress={() => setTeamExpendable(!teamExpandable)}\n >\n <HStack className=\"items-center justify-between\">\n <Text className=\"text-gray-900 font-bold text-lg\">Teams</Text>\n <HStack space=\"sm\" className=\"items-center\">\n {teamsLoading && <Spinner size=\"small\" color=\"#4A154B\" />}\n <MaterialIcons\n name={teamExpandable ? 'keyboard-arrow-up' : 'keyboard-arrow-down'}\n color=\"#616061\"\n size={22}\n />\n </HStack>\n </HStack>\n </TouchableOpacity>\n );\n }, [teamExpandable, teamsLoading]);\n\n return (\n <View style={{ flex: 1 }}>\n <SectionHeader />\n\n {teamExpandable && (\n <FlatList\n data={organizationTeams}\n renderItem={renderOrganizationTeamItem}\n keyExtractor={(item) => String(item.id || item._id)}\n ListEmptyComponent={ListEmptyComponent}\n ListFooterComponent={ListFooterComponent}\n showsVerticalScrollIndicator={false}\n initialNumToRender={10}\n maxToRenderPerBatch={10}\n windowSize={5}\n contentContainerStyle={{\n flexGrow: 1,\n }}\n />\n )}\n </View>\n );\n};\n\nexport default React.memo(Teams);\n"],"names":["error","React"],"mappings":"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"}
1
+ {"version":3,"file":"Teams.js","sources":["../../../../../src/screens/Home/Components/Teams/Teams.tsx"],"sourcesContent":["import { useIsFocused, useFocusEffect } from '@react-navigation/native';\nimport React, { useState, useEffect, useCallback, useMemo, useContext } from 'react';\nimport { TouchableOpacity } from 'react-native';\nimport styles from '../../styles';\nimport { View, FlatList, Box, Text, HStack, VStack } from '@admin-layout/gluestack-ui-mobile';\nimport { NavigationRoutes } from '../../../../constants/routes';\nimport { userSelector } from '@adminide-stack/user-auth0-client';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport { useNavigation } from '@react-navigation/native';\nimport { orderBy, uniqBy, take } from 'lodash-es';\nimport { useGetOrganizationTeamsQuery } from 'common/graphql';\nimport { useDrawerLayout } from '../../../../hooks';\nimport { FontAwesome, Feather, Octicons, MaterialIcons } from '@expo/vector-icons';\nimport colors from 'tailwindcss/colors';\nimport { RefetchContext } from '../../HomeScreen';\n\nconst Teams = () => {\n const { orgName, organizationDetail } = useDrawerLayout();\n const navigation = useNavigation<any>();\n const [teamExpandable, setTeamExpendable] = useState(true);\n const user = useSelector(userSelector, shallowEqual);\n const isFocused = useIsFocused();\n const { shouldRefetch } = useContext(RefetchContext);\n\n // Local state simplified\n const [state, setState] = useState({\n teams: [],\n error: null,\n });\n\n const { data: orgTeams, refetch: reFetchOrgTeams } = useGetOrganizationTeamsQuery({\n variables: { orgName: orgName },\n fetchPolicy: 'cache-and-network',\n nextFetchPolicy: 'cache-first',\n onCompleted(data) {\n if (data?.getOrganizationTeams?.length) {\n setState((prev) => ({\n ...prev,\n teams: data?.getOrganizationTeams || [],\n }));\n }\n },\n onError(error) {\n // Check specifically for team service errors\n const isTeamServiceError = error.message.includes(\"Service 'TeamService\");\n const errorMessage = isTeamServiceError\n ? 'Team service is temporarily unavailable. Please try again later.'\n : error.message;\n\n // Update state to reflect the error\n setState((prev) => ({\n ...prev,\n error: errorMessage,\n }));\n },\n skip: !orgName,\n });\n\n const reFetchTeams = useCallback(() => {\n if (orgName) {\n reFetchOrgTeams({ orgName: orgName })\n .then((res) => {\n if (res?.data?.getOrganizationTeams) {\n setState((prev) => ({\n ...prev,\n teams: res.data.getOrganizationTeams,\n }));\n }\n })\n .catch((error) => {\n // Check specifically for team service errors\n const isTeamServiceError = error.message && error.message.includes(\"Service 'TeamService\");\n const errorMessage = isTeamServiceError\n ? 'Teams are temporarily unavailable. Please try again later.'\n : error.message || 'Failed to fetch teams';\n\n setState((prev) => ({\n ...prev,\n error: errorMessage,\n }));\n });\n }\n }, [orgName, reFetchOrgTeams]);\n\n // Reset state when unmounting or changing org\n useEffect(() => {\n return () => {\n setState((prev) => ({\n ...prev,\n teams: [],\n }));\n };\n }, [orgName]);\n\n // Use RefetchContext to control when to refetch data\n useEffect(() => {\n if (shouldRefetch && orgName) {\n reFetchTeams();\n }\n }, [shouldRefetch, orgName, reFetchTeams]);\n\n // Initial fetch on focus\n useFocusEffect(\n useCallback(() => {\n if (orgName) {\n reFetchTeams();\n }\n }, [orgName]),\n );\n\n const organizationTeams = useMemo(() => {\n return (\n (state.teams &&\n state.teams?.length &&\n take(\n orderBy(\n uniqBy(\n [...state.teams]?.filter((t: any) => t?.orgName === orgName),\n ({ _id }) => _id,\n ),\n [(ch: any) => ch?.title.toLowerCase()],\n ['asc'],\n ),\n 10,\n )) ||\n []\n );\n }, [state.teams, orgName]);\n\n const viewTeam = useCallback(\n (item: any) => {\n navigation.navigate(NavigationRoutes.ViewTeam, {\n teamId: item?.id?.toString(),\n teamName: item?.name,\n title: item?.title?.toString(),\n totalMembers: item?.teamMembers?.length,\n orgName: orgName,\n hideTabBar: true,\n });\n },\n [orgName, navigation],\n );\n\n const renderOrganizationTeamItem = useCallback(\n ({ item }) => (\n <TouchableOpacity\n key={item.id}\n onPress={() => viewTeam(item)}\n style={{ paddingVertical: 2, paddingHorizontal: 12 }}\n >\n <HStack space=\"md\" className=\"items-center\">\n <Octicons color={colors.gray[700]} name=\"lock\" size={18} />\n <Text className=\"text-gray-900 flex-1 text-base\">{item.title}</Text>\n </HStack>\n </TouchableOpacity>\n ),\n [viewTeam],\n );\n\n const ListEmptyComponent = useCallback(() => {\n return (\n <Box style={{ padding: 12 }}>\n {state.error ? (\n <Box style={{ padding: 8, backgroundColor: '#FFF4F4', borderRadius: 4 }}>\n <Text color=\"#E01E5A\" style={{ marginBottom: 8, fontWeight: '500' }}>\n {state.error}\n </Text>\n <TouchableOpacity onPress={reFetchTeams}>\n <HStack space=\"sm\" style={{ alignItems: 'center' }}>\n <Feather name=\"refresh-cw\" color=\"#1264A3\" size={16} />\n <Text color=\"#1264A3\" style={{ fontWeight: '500' }}>\n Retry\n </Text>\n </HStack>\n </TouchableOpacity>\n </Box>\n ) : (\n <Box style={{ alignItems: 'center', paddingVertical: 16 }}>\n <Box style={{ padding: 12, marginBottom: 8, borderRadius: 24, backgroundColor: '#F8F8F8' }}>\n <Octicons name=\"organization\" color=\"#616061\" size={20} />\n </Box>\n <Text style={{ color: '#616061', textAlign: 'center' }}>No teams available</Text>\n </Box>\n )}\n </Box>\n );\n }, [state.error, reFetchTeams]);\n\n const ListFooterComponent = useCallback(() => {\n return (\n <VStack>\n {state.teams?.length > 10 && (\n <TouchableOpacity\n onPress={() => navigation.navigate(NavigationRoutes.Teams, { orgName })}\n style={{ paddingVertical: 8, paddingHorizontal: 12 }}\n >\n <HStack space=\"md\" className=\"items-center\">\n <MaterialIcons color=\"#616061\" name=\"search\" size={18} />\n <Text style={{ fontSize: 16, color: '#616061' }}>Browse all Teams</Text>\n </HStack>\n </TouchableOpacity>\n )}\n\n <TouchableOpacity\n onPress={() => navigation.navigate(NavigationRoutes.AddTeam, { orgName })}\n style={{ paddingBottom: 5, paddingHorizontal: 12 }}\n >\n <HStack space=\"md\" className=\"items-center\">\n <Feather color=\"#616061\" name=\"plus\" size={18} />\n <Text style={{ fontSize: 16, color: '#616061' }}>Add Team</Text>\n </HStack>\n </TouchableOpacity>\n </VStack>\n );\n }, [state.teams, orgName, navigation]);\n\n const SectionHeader = useCallback(() => {\n return (\n <TouchableOpacity\n onPress={() => setTeamExpendable(!teamExpandable)}\n style={{ paddingVertical: 6, paddingHorizontal: 16 }}\n >\n <HStack className=\"justify-between items-center\">\n <Text className=\"font-semibold\" style={{ fontSize: 15, color: '#1D1C1D' }}>\n Teams\n </Text>\n <FontAwesome\n name={teamExpandable ? 'chevron-down' : 'chevron-left'}\n color={colors.gray[800]}\n size={12}\n />\n </HStack>\n </TouchableOpacity>\n );\n }, [teamExpandable]);\n\n if (!teamExpandable) {\n return <SectionHeader />;\n }\n\n return (\n <Box>\n <SectionHeader />\n {organizationTeams?.length > 0 ? (\n <FlatList\n keyExtractor={(item) => (item?.id || 'team') + '-' + item?.title}\n data={organizationTeams}\n renderItem={renderOrganizationTeamItem}\n ListFooterComponent={ListFooterComponent}\n style={{ marginTop: 6 }}\n scrollEnabled={false}\n />\n ) : (\n <Box>\n <ListEmptyComponent />\n <ListFooterComponent />\n </Box>\n )}\n </Box>\n );\n};\n\nexport default Teams;\n"],"names":["React"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import {Ionicons,AntDesign,MaterialCommunityIcons,FontAwesome5}from'@expo/vector-icons';import {useNavigation,useFocusEffect}from'@react-navigation/native';import React__default,{useState,useMemo,useCallback,createContext}from'react';import {Share,TouchableHighlight,Dimensions}from'react-native';import {useSelector,shallowEqual}from'react-redux';import styles from'./styles.js';import {HStack,Text,Box,Icon,AddIcon,Center,Spinner,VStack,Divider,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 {InviteMembers}from'./Components/InviteMembers/index.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 as ActionSheet}from'../../components/Actionsheet.js';import {config}from'../../config/env-config.js';import colors from'tailwindcss/colors';var __defProp = Object.defineProperty;
1
+ import {Ionicons,AntDesign,MaterialCommunityIcons,FontAwesome5}from'@expo/vector-icons';import {useNavigation,useFocusEffect}from'@react-navigation/native';import React__default,{useState,useMemo,useCallback,createContext}from'react';import {Share,TouchableHighlight,Dimensions}from'react-native';import {useSelector,shallowEqual}from'react-redux';import styles from'./styles.js';import {HStack,Text,Box,Icon,AddIcon,Center,Spinner,Divider,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 DirectChannels from'./Components/DirectChannels/DirectChannels.js';import TopCommonSlider from'./Components/TopCommonSlider/TopCommonSlider.js';import {InviteMembers}from'./Components/InviteMembers/index.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 as 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;
@@ -40,7 +40,6 @@ const HomeScreen = ({
40
40
  expoToken
41
41
  } = useExpoNotification();
42
42
  const [setDeviceTokenMutation] = useSetDeviceTokenMutation();
43
- const [isLoading, setIsLoading] = useState(true);
44
43
  const [shouldRefetch, setShouldRefetch] = useState(false);
45
44
  const refetchContextValue = useMemo(() => ({
46
45
  shouldRefetch,
@@ -123,7 +122,6 @@ const HomeScreen = ({
123
122
  handlerExpoToken();
124
123
  setShouldRefetch(true);
125
124
  const timer = setTimeout(() => {
126
- setIsLoading(false);
127
125
  setShouldRefetch(false);
128
126
  }, 500);
129
127
  return () => {
@@ -151,7 +149,7 @@ const HomeScreen = ({
151
149
  if (!orgName) {
152
150
  return /* @__PURE__ */ React__default.createElement(Center, { className: "flex-1 bg-white" }, /* @__PURE__ */ React__default.createElement(Spinner, { size: "large", color: Colors.primaryBgColor }));
153
151
  }
154
- return /* @__PURE__ */ React__default.createElement(RefetchContext.Provider, { value: refetchContextValue }, /* @__PURE__ */ React__default.createElement(VirtualizedScrollView, { className: "bg-white flex-1" }, /* @__PURE__ */ React__default.createElement(Box, { className: "flex-1 bg-white pb-10" }, isLoading ? /* @__PURE__ */ React__default.createElement(VStack, { space: "md", className: "p-4" }, /* @__PURE__ */ React__default.createElement(Box, { className: "h-12 bg-gray-100 rounded-md animate-pulse" }), /* @__PURE__ */ React__default.createElement(Box, { className: "h-32 bg-gray-100 rounded-md animate-pulse" }), /* @__PURE__ */ React__default.createElement(Box, { className: "h-24 bg-gray-100 rounded-md animate-pulse" }), /* @__PURE__ */ React__default.createElement(Box, { className: "h-40 bg-gray-100 rounded-md animate-pulse" })) : /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(TopCommonSlider, null), /* @__PURE__ */ React__default.createElement(Divider, { style: {
152
+ return /* @__PURE__ */ React__default.createElement(RefetchContext.Provider, { value: refetchContextValue }, /* @__PURE__ */ React__default.createElement(VirtualizedScrollView, { className: "bg-white flex-1" }, /* @__PURE__ */ React__default.createElement(Box, { className: "flex-1 bg-white pb-10" }, /* @__PURE__ */ React__default.createElement(TopCommonSlider, null), /* @__PURE__ */ React__default.createElement(Divider, { style: {
155
153
  marginVertical: 12
156
154
  } }), /* @__PURE__ */ React__default.createElement(Teams, null), /* @__PURE__ */ React__default.createElement(Divider, { style: {
157
155
  marginVertical: 12
@@ -159,7 +157,7 @@ const HomeScreen = ({
159
157
  marginVertical: 12
160
158
  } }), /* @__PURE__ */ React__default.createElement(DirectChannels, null), /* @__PURE__ */ React__default.createElement(Divider, { style: {
161
159
  marginVertical: 12
162
- } }), /* @__PURE__ */ React__default.createElement(InviteMembers, null)))), /* @__PURE__ */ React__default.createElement(Fab, { onPress: () => navigation.navigate(NavigationRoutes.SearchAddChannel, {
160
+ } }), /* @__PURE__ */ React__default.createElement(InviteMembers, null))), /* @__PURE__ */ React__default.createElement(Fab, { onPress: () => navigation.navigate(NavigationRoutes.SearchAddChannel, {
163
161
  orgName
164
162
  }), size: "sm", className: "items-center shadow-lg", style: {
165
163
  backgroundColor: Colors.primaryBgColor,