@messenger-box/platform-mobile 10.0.3-alpha.0 → 10.0.3-alpha.5
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/CHANGELOG.md +4 -0
- package/lib/module.js +1 -1
- package/lib/screens/inbox/DialogMessages.js +1 -1
- package/lib/screens/inbox/DialogMessages.js.map +1 -1
- package/lib/screens/inbox/DialogThreadMessages.js +1 -1
- package/lib/screens/inbox/DialogThreadMessages.js.map +1 -1
- package/lib/screens/inbox/DialogThreads.js.map +1 -1
- package/lib/screens/inbox/components/DialogsListItem.js +5 -1
- package/lib/screens/inbox/components/DialogsListItem.js.map +1 -1
- package/lib/screens/inbox/components/ServiceDialogsListItem.js.map +1 -1
- package/lib/screens/inbox/components/SlackMessageContainer/ImageViewerModal.js +1 -1
- package/lib/screens/inbox/components/SlackMessageContainer/SlackBubble.js +13 -4
- package/lib/screens/inbox/components/SlackMessageContainer/SlackBubble.js.map +1 -1
- package/lib/screens/inbox/components/SlackMessageContainer/SlackMessage.js +4 -2
- package/lib/screens/inbox/components/SlackMessageContainer/SlackMessage.js.map +1 -1
- package/lib/screens/inbox/components/ThreadsViewItem.js.map +1 -1
- package/lib/screens/inbox/config/config.js +1 -1
- package/lib/screens/inbox/containers/ConversationView.js +2 -2
- package/lib/screens/inbox/containers/ConversationView.js.map +1 -1
- package/lib/screens/inbox/containers/Dialogs.js.map +1 -1
- package/lib/screens/inbox/containers/ThreadConversationView.js +2 -2
- package/lib/screens/inbox/containers/ThreadConversationView.js.map +1 -1
- package/lib/screens/inbox/containers/ThreadsView.js +1 -1
- package/lib/screens/inbox/containers/ThreadsView.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThreadsViewItem.js","sources":["../../../../src/screens/inbox/components/ThreadsViewItem.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport {\n VStack,\n Text,\n Image,\n Pressable,\n HStack,\n Box,\n AvatarGroup,\n Avatar,\n AvatarFallbackText,\n AvatarImage,\n AvatarBadge,\n View,\n Button,\n ButtonText,\n} from '@admin-layout/gluestack-ui-mobile';\nimport { format, isToday, isYesterday } from 'date-fns';\nimport { useFocusEffect } from '@react-navigation/native';\nimport { IChannel, IUserAccount } from 'common';\nimport {\n useThreadMessagesQuery,\n useMessagesQuery,\n useUserAccountQuery,\n useOnThreadChatMessageAddedSubscription,\n useOnThreadCreatedUpdatedSubscription,\n} from 'common/lib/generated/generated.js';\nimport { startCase } from 'lodash-es';\n\nconst createdAtText = (value: string) => {\n if (!value) return '';\n let date = new Date(value);\n if (isToday(date)) return 'Today';\n if (isYesterday(date)) return 'Yesterday';\n return format(new Date(value), 'MMM dd, yyyy');\n};\n\nexport interface IDialogListChannel extends IChannel {\n users: IUserAccount[];\n}\n\nexport interface IDialogListItemProps {\n currentUser?: any;\n users?: any;\n thread?: any;\n onOpen: (id: any, title: any, postParentId?: any) => void;\n role?: any;\n setData?: any;\n}\n\n/**\n * TODO:\n * - Get Reservation info: reservation date, status\n * - Add ability to get property information: name, logo\n */\nexport const ThreadViewItemComponent: React.FC<IDialogListItemProps> = function DialogsListItem({\n currentUser,\n // users,\n thread,\n onOpen,\n role,\n setData,\n}) {\n // const { data: threadCreatedUpdated } = useOnThreadCreatedUpdatedSubscription({\n // variables: {\n // channelId: thread?.channel?.id?.toString(),\n // postParentId: thread?.post?.id?.toString(),\n // },\n // });\n\n useFocusEffect(\n React.useCallback(() => {\n // Do something when the screen is focused\n return () => {\n // Do something when the screen is unfocused\n // Useful for cleanup functions\n };\n }, []),\n );\n\n const threadPostReply = React.useMemo(() => {\n if (!thread?.replies) return null;\n return thread?.replies;\n }, [thread]);\n\n // React.useEffect(() => {\n // if (threadCreatedUpdated?.threadCreatedUpdated?.data) setData(threadCreatedUpdated?.threadCreatedUpdated?.data);\n // }, [threadCreatedUpdated?.threadCreatedUpdated]);\n\n // const threadPostReply = React.useMemo(() => {\n // if (!thread?.replies) return null;\n // if (threadCreatedUpdated?.threadCreatedUpdated?.data?.replies?.length) {\n // return threadCreatedUpdated?.threadCreatedUpdated?.data?.replies;\n // } else return thread?.replies;\n // }, [thread, threadCreatedUpdated]);\n\n // const lastMessage = useMemo(() => {\n // if (!threadPost) {\n // return null;\n // }\n // const replies = threadPost?.replies?.filter((p: any) => p?.message !== '') ?? [];\n // if (replies?.length) {\n // return replies[0];\n // // return replies[replies.length - 1];\n // } else {\n // const post = threadPost?.post ?? null;\n // return post ? post?.post : null;\n // }\n // }, [threadPost]);\n\n // const participants: any = React.useMemo(() => {\n // if (!thread?.participants?.length) return null;\n // return thread?.participants?.filter((u: any) => u?.user?.id !== currentUser?.id) ?? [];\n // }, [thread]);\n\n // const allParticipantsNames: any = React.useMemo(() => {\n // if (!participants?.length) return null;\n // return (\n // participants\n // ?.map((p: any) => {\n // return p?.user?.givenName + ' ' + p?.user?.familyName ?? '';\n // })\n // ?.join(', ') ?? ''\n // );\n // }, [participants]);\n\n if (!threadPostReply || threadPostReply?.length == 0) {\n return <></>;\n }\n\n return (\n <VStack\n space={'sm'}\n py={'$2'}\n px={'$2'}\n borderWidth={'$1'}\n borderRadius={'$md'}\n borderColor={'$trueGray200'}\n flex={1}\n $dark-borderColor=\"$white\"\n $dark-backgroundColor=\"$white\"\n $light-backgroundColor=\"$white\"\n >\n <HStack\n // px={2}\n // pl={3}\n py={'$2'}\n space={'sm'}\n w={'100%'}\n flex={1}\n justifyContent={'space-between'}\n alignItems={'center'}\n >\n <Box flex={1}>\n {/* <HStack flex={1} space={5} py={2} alignItems={'baseline'}>\n <Box>\n <Avatar.Badge size={4} left={0} zIndex={1} bg=\"green.800\" />\n </Box>\n <Box>\n <Text color=\"gray.600\" fontSize=\"lg\" flexWrap={'wrap'} fontWeight=\"semibold\">\n {allParticipantsNames || ''}\n </Text>\n </Box>\n </HStack> */}\n <HStack space={'sm'} flex={1} justifyContent={'center'} alignItems={'center'}>\n <Box flex={1}>\n {/* <HStack space={2} py={2}>\n <Box>\n <Avatar\n bg={'transparent'}\n size={8}\n _image={{ borderRadius: 6, borderWidth: 2, borderColor: '#fff' }}\n source={{\n uri: thread?.post?.author?.picture,\n }}\n >\n {startCase(thread?.post?.author?.username?.charAt(0))}\n </Avatar>\n </Box>\n <Box>\n <HStack space={4}>\n <Text>\n {thread?.post?.author?.givenName + ' ' + thread?.post?.author?.familyName ??\n ''}\n </Text>\n <Text color=\"gray.500\">\n {thread?.post ? createdAtText(thread?.post?.createdAt) : ''}\n </Text>\n </HStack>\n <Text color=\"gray.600\" noOfLines={2}>\n {thread?.post?.message ?? ''}\n </Text>\n {!thread?.replies?.length && (\n <Button\n size={'xs'}\n w={150}\n variant={'outline'}\n _text={{ fontSize: 12, color: '#000' }}\n onPress={() =>\n onOpen(thread?.channel?.id, thread?.channel?.title, thread?.post?.id)\n }\n >\n Reply\n </Button>\n )}\n </Box>\n </HStack> */}\n {threadPostReply?.length > 0 && (\n <>\n {threadPostReply\n ?.slice(0, 2)\n ?.reverse()\n ?.map((reply: any, index: any) => (\n <HStack key={index} space={'sm'} pb={'$2'} pt={'$1'}>\n <Box>\n <Avatar\n key={'thread-view-key-' + index}\n bg={'transparent'}\n size={'md'}\n top={'$0'}\n right={'$0'}\n zIndex={1}\n >\n <AvatarFallbackText>\n {' '}\n {startCase(reply?.author?.username?.charAt(0))}\n </AvatarFallbackText>\n <AvatarImage\n alt=\"image\"\n style={{\n borderRadius: 6,\n borderWidth: 2,\n borderColor: '#fff',\n }}\n source={{\n uri: reply?.author?.picture,\n }}\n />\n </Avatar>\n </Box>\n <Box>\n <HStack space={'md'}>\n <Text>\n {reply?.author?.givenName ?? '' ?? ''}{' '}\n {reply?.author?.familyName ?? '' ?? ''}\n {/* {lastMessage?.author?.givenName +\n ' ' +\n lastMessage?.author?.familyName ?? ''} */}\n </Text>\n <Text color=\"$trueGray500\">\n {reply?.createdAt ? createdAtText(reply?.createdAt) : ''}\n {/* {lastMessage ? createdAtText(lastMessage?.createdAt) : ''} */}\n </Text>\n </HStack>\n <VStack space={'sm'}>\n {reply?.message && (\n <Text color=\"$trueGray600\" numberOfLines={2}>\n {reply?.message.length < 70\n ? `${reply?.message}`\n : `${reply?.message.substring(0, 68)}....`}\n </Text>\n )}\n {/* <Text color=\"gray.600\" noOfLines={2}>\n {reply?.message\n ? reply?.message.length < 70\n ? `${reply?.message}`\n : `${reply?.message.substring(0, 68)}....`\n : ''}\n </Text> */}\n\n <>\n {reply?.files?.data?.length > 0 &&\n reply?.files?.data?.map((f: any, index: any) => (\n <Box>\n <Avatar\n key={'thread-view-other-key-' + index}\n bg={'transparent'}\n size={'md'}\n >\n <AvatarFallbackText> I</AvatarFallbackText>\n <AvatarImage\n alt=\"image\"\n style={{\n borderRadius: 6,\n borderWidth: 2,\n borderColor: '#fff',\n }}\n source={{\n uri: f?.url,\n }}\n />\n </Avatar>\n </Box>\n ))}\n </>\n </VStack>\n\n {(threadPostReply?.length == 1 || index !== 0) && (\n <Button\n size={'xs'}\n w={150}\n variant={'outline'}\n onPress={() =>\n onOpen(\n thread?.channel?.id,\n thread?.channel?.title,\n thread?.post?.id,\n )\n }\n >\n <ButtonText style={{ fontSize: 12, color: '#000' }}>\n Reply\n </ButtonText>\n </Button>\n )}\n </Box>\n </HStack>\n ))}\n </>\n )}\n </Box>\n </HStack>\n </Box>\n </HStack>\n {/* <HStack>\n <Box flex={0.06} alignItems={'flex-start'}></Box>\n <Button\n size={'xs'}\n variant={'outline'}\n _text={{ fontSize: 12, color: '#000' }}\n onPress={() => onOpen(thread?.channel?.id, thread?.channel?.title, postParentId)}\n >\n Reply\n </Button>\n </HStack> */}\n </VStack>\n );\n};\n\nexport const ThreadViewItem = React.memo(ThreadViewItemComponent);\n"],"names":["React","_a","_b","index","_c"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ThreadsViewItem.js","sources":["../../../../src/screens/inbox/components/ThreadsViewItem.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport {\n VStack,\n Text,\n Image,\n Pressable,\n HStack,\n Box,\n AvatarGroup,\n Avatar,\n AvatarFallbackText,\n AvatarImage,\n AvatarBadge,\n View,\n Button,\n ButtonText,\n} from '@admin-layout/gluestack-ui-mobile';\nimport { format, isToday, isYesterday } from 'date-fns';\nimport { useFocusEffect } from '@react-navigation/native';\nimport { IChannel, IUserAccount } from 'common';\nimport {\n useThreadMessagesQuery,\n useMessagesQuery,\n useUserAccountQuery,\n useOnThreadChatMessageAddedSubscription,\n useOnThreadCreatedUpdatedSubscription,\n} from 'common/lib/generated/generated.js';\nimport { startCase } from 'lodash-es';\n\nconst createdAtText = (value: string) => {\n if (!value) return '';\n let date = new Date(value);\n if (isToday(date)) return 'Today';\n if (isYesterday(date)) return 'Yesterday';\n return format(new Date(value), 'MMM dd, yyyy');\n};\n\nexport interface IDialogListChannel extends IChannel {\n users: IUserAccount[];\n}\n\nexport interface IDialogListItemProps {\n currentUser?: any;\n users?: any;\n thread?: any;\n onOpen: (id: any, title: any, postParentId?: any) => void;\n role?: any;\n setData?: any;\n}\n\n/**\n * TODO:\n * - Get Reservation info: reservation date, status\n * - Add ability to get property information: name, logo\n */\nexport const ThreadViewItemComponent: React.FC<IDialogListItemProps> = function DialogsListItem({\n currentUser,\n // users,\n thread,\n onOpen,\n role,\n setData,\n}) {\n // const { data: threadCreatedUpdated } = useOnThreadCreatedUpdatedSubscription({\n // variables: {\n // channelId: thread?.channel?.id?.toString(),\n // postParentId: thread?.post?.id?.toString(),\n // },\n // });\n\n useFocusEffect(\n React.useCallback(() => {\n // Do something when the screen is focused\n return () => {\n // Do something when the screen is unfocused\n // Useful for cleanup functions\n };\n }, []),\n );\n\n const threadPostReply = React.useMemo(() => {\n if (!thread?.replies) return null;\n return thread?.replies;\n }, [thread]);\n\n // React.useEffect(() => {\n // if (threadCreatedUpdated?.threadCreatedUpdated?.data) setData(threadCreatedUpdated?.threadCreatedUpdated?.data);\n // }, [threadCreatedUpdated?.threadCreatedUpdated]);\n\n // const threadPostReply = React.useMemo(() => {\n // if (!thread?.replies) return null;\n // if (threadCreatedUpdated?.threadCreatedUpdated?.data?.replies?.length) {\n // return threadCreatedUpdated?.threadCreatedUpdated?.data?.replies;\n // } else return thread?.replies;\n // }, [thread, threadCreatedUpdated]);\n\n // const lastMessage = useMemo(() => {\n // if (!threadPost) {\n // return null;\n // }\n // const replies = threadPost?.replies?.filter((p: any) => p?.message !== '') ?? [];\n // if (replies?.length) {\n // return replies[0];\n // // return replies[replies.length - 1];\n // } else {\n // const post = threadPost?.post ?? null;\n // return post ? post?.post : null;\n // }\n // }, [threadPost]);\n\n // const participants: any = React.useMemo(() => {\n // if (!thread?.participants?.length) return null;\n // return thread?.participants?.filter((u: any) => u?.user?.id !== currentUser?.id) ?? [];\n // }, [thread]);\n\n // const allParticipantsNames: any = React.useMemo(() => {\n // if (!participants?.length) return null;\n // return (\n // participants\n // ?.map((p: any) => {\n // return p?.user?.givenName + ' ' + p?.user?.familyName ?? '';\n // })\n // ?.join(', ') ?? ''\n // );\n // }, [participants]);\n\n if (!threadPostReply || threadPostReply?.length == 0) {\n return <></>;\n }\n\n return (\n <VStack\n space={'sm'}\n py={'$2'}\n px={'$2'}\n borderWidth={'$1'}\n borderRadius={'$md'}\n borderColor={'$trueGray200'}\n flex={1}\n $dark-borderColor=\"$white\"\n $dark-backgroundColor=\"$white\"\n $light-backgroundColor=\"$white\"\n >\n <HStack\n // px={2}\n // pl={3}\n py={'$2'}\n space={'sm'}\n w={'100%'}\n flex={1}\n justifyContent={'space-between'}\n alignItems={'center'}\n >\n <Box flex={1}>\n {/* <HStack flex={1} space={5} py={2} alignItems={'baseline'}>\n <Box>\n <Avatar.Badge size={4} left={0} zIndex={1} bg=\"green.800\" />\n </Box>\n <Box>\n <Text color=\"gray.600\" fontSize=\"lg\" flexWrap={'wrap'} fontWeight=\"semibold\">\n {allParticipantsNames || ''}\n </Text>\n </Box>\n </HStack> */}\n <HStack space={'sm'} flex={1} justifyContent={'center'} alignItems={'center'}>\n <Box flex={1}>\n {/* <HStack space={2} py={2}>\n <Box>\n <Avatar\n bg={'transparent'}\n size={8}\n _image={{ borderRadius: 6, borderWidth: 2, borderColor: '#fff' }}\n source={{\n uri: thread?.post?.author?.picture,\n }}\n >\n {startCase(thread?.post?.author?.username?.charAt(0))}\n </Avatar>\n </Box>\n <Box>\n <HStack space={4}>\n <Text>\n {thread?.post?.author?.givenName + ' ' + thread?.post?.author?.familyName ??\n ''}\n </Text>\n <Text color=\"gray.500\">\n {thread?.post ? createdAtText(thread?.post?.createdAt) : ''}\n </Text>\n </HStack>\n <Text color=\"gray.600\" noOfLines={2}>\n {thread?.post?.message ?? ''}\n </Text>\n {!thread?.replies?.length && (\n <Button\n size={'xs'}\n w={150}\n variant={'outline'}\n _text={{ fontSize: 12, color: '#000' }}\n onPress={() =>\n onOpen(thread?.channel?.id, thread?.channel?.title, thread?.post?.id)\n }\n >\n Reply\n </Button>\n )}\n </Box>\n </HStack> */}\n {threadPostReply?.length > 0 && (\n <>\n {threadPostReply\n ?.slice(0, 2)\n ?.reverse()\n ?.map((reply: any, index: any) => (\n <HStack key={index} space={'sm'} pb={'$2'} pt={'$1'}>\n <Box>\n <Avatar\n key={'thread-view-key-' + index}\n bg={'transparent'}\n size={'md'}\n top={'$0'}\n right={'$0'}\n zIndex={1}\n >\n <AvatarFallbackText>\n {' '}\n {startCase(reply?.author?.username?.charAt(0))}\n </AvatarFallbackText>\n <AvatarImage\n alt=\"image\"\n style={{\n borderRadius: 6,\n borderWidth: 2,\n borderColor: '#fff',\n }}\n source={{\n uri: reply?.author?.picture,\n }}\n />\n </Avatar>\n </Box>\n <Box>\n <HStack space={'md'}>\n <Text>\n {reply?.author?.givenName ?? '' ?? ''}{' '}\n {reply?.author?.familyName ?? '' ?? ''}\n {/* {lastMessage?.author?.givenName +\n ' ' +\n lastMessage?.author?.familyName ?? ''} */}\n </Text>\n <Text color=\"$trueGray500\">\n {reply?.createdAt ? createdAtText(reply?.createdAt) : ''}\n {/* {lastMessage ? createdAtText(lastMessage?.createdAt) : ''} */}\n </Text>\n </HStack>\n <VStack space={'sm'}>\n {reply?.message && (\n <Text color=\"$trueGray600\" numberOfLines={2}>\n {reply?.message.length < 70\n ? `${reply?.message}`\n : `${reply?.message.substring(0, 68)}....`}\n </Text>\n )}\n {/* <Text color=\"gray.600\" noOfLines={2}>\n {reply?.message\n ? reply?.message.length < 70\n ? `${reply?.message}`\n : `${reply?.message.substring(0, 68)}....`\n : ''}\n </Text> */}\n\n <>\n {reply?.files?.data?.length > 0 &&\n reply?.files?.data?.map((f: any, index: any) => (\n <Box>\n <Avatar\n key={'thread-view-other-key-' + index}\n bg={'transparent'}\n size={'md'}\n >\n <AvatarFallbackText> I</AvatarFallbackText>\n <AvatarImage\n alt=\"image\"\n style={{\n borderRadius: 6,\n borderWidth: 2,\n borderColor: '#fff',\n }}\n source={{\n uri: f?.url,\n }}\n />\n </Avatar>\n </Box>\n ))}\n </>\n </VStack>\n\n {(threadPostReply?.length == 1 || index !== 0) && (\n <Button\n size={'xs'}\n w={150}\n variant={'outline'}\n onPress={() =>\n onOpen(\n thread?.channel?.id,\n thread?.channel?.title,\n thread?.post?.id,\n )\n }\n >\n <ButtonText style={{ fontSize: 12, color: '#000' }}>\n Reply\n </ButtonText>\n </Button>\n )}\n </Box>\n </HStack>\n ))}\n </>\n )}\n </Box>\n </HStack>\n </Box>\n </HStack>\n {/* <HStack>\n <Box flex={0.06} alignItems={'flex-start'}></Box>\n <Button\n size={'xs'}\n variant={'outline'}\n _text={{ fontSize: 12, color: '#000' }}\n onPress={() => onOpen(thread?.channel?.id, thread?.channel?.title, postParentId)}\n >\n Reply\n </Button>\n </HStack> */}\n </VStack>\n );\n};\n\nexport const ThreadViewItem = React.memo(ThreadViewItemComponent);\n"],"names":["React","_a","_b","index","_c"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React__default,{useState,useRef,useEffect,useCallback,useMemo}from'react';import {Spinner,Box,Button,ButtonText,
|
|
1
|
+
import React__default,{useState,useRef,useEffect,useCallback,useMemo}from'react';import {Spinner,Box,HStack,Image,Button,ButtonText,Avatar,AvatarFallbackText,AvatarImage,Text}from'@admin-layout/gluestack-ui-mobile';import {Platform,TouchableHighlight}from'react-native';import {useNavigation,useIsFocused,useFocusEffect}from'@react-navigation/native';import {navigationRef}from'@common-stack/client-react';import {useSelector}from'react-redux';import {uniqBy,orderBy,startCase}from'lodash-es';import*as ImagePicker from'expo-image-picker';import {encode}from'base-64';import {Ionicons,MaterialCommunityIcons}from'@expo/vector-icons';import {GiftedChat,Actions,MessageText,Send}from'react-native-gifted-chat';import {RoomType,PreDefinedRole}from'common';import {useAddDirectChannelMutation,useSendMessagesMutation,useSendExpoNotificationOnPostMutation,useMessagesQuery,OnChatMessageAddedDocument}from'common/lib/generated/generated.js';import {useUploadFilesNative}from'@messenger-box/platform-client';import {objectId}from'@messenger-box/core';import {userSelector}from'@adminide-stack/user-auth0-client';import {isToday,isYesterday,format}from'date-fns';import Message from'../components/SlackMessageContainer/SlackMessage.js';import ImageViewerModal from'../components/SlackMessageContainer/ImageViewerModal.js';import CachedImage from'../components/CachedImage/index.js';import {config}from'../config/config.js';var __defProp = Object.defineProperty;
|
|
2
2
|
var __defProps = Object.defineProperties;
|
|
3
3
|
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
4
|
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
@@ -85,7 +85,7 @@ const ConversationViewComponent = (_a) => {
|
|
|
85
85
|
startUpload
|
|
86
86
|
} = useUploadFilesNative();
|
|
87
87
|
const [sendMsg] = useSendMessagesMutation();
|
|
88
|
-
useSendExpoNotificationOnPostMutation();
|
|
88
|
+
const [sendExpoNotificationOnPostMutation] = useSendExpoNotificationOnPostMutation();
|
|
89
89
|
const {
|
|
90
90
|
data,
|
|
91
91
|
loading: messageLoading,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConversationView.js","sources":["../../../../src/screens/inbox/containers/ConversationView.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n Avatar,\n AvatarFallbackText,\n AvatarImage,\n Box,\n Button,\n ButtonText,\n HStack,\n Icon,\n Image,\n Spinner,\n Text,\n} from '@admin-layout/gluestack-ui-mobile';\nimport { Platform, TouchableHighlight } from 'react-native';\nimport { useFocusEffect, useIsFocused, useNavigation } from '@react-navigation/native';\nimport { navigationRef } from '@common-stack/client-react';\nimport { useSelector } from 'react-redux';\nimport { orderBy, startCase, uniqBy } from 'lodash-es';\nimport * as ImagePicker from 'expo-image-picker';\nimport { encode as atob } from 'base-64';\nimport { Ionicons, MaterialCommunityIcons } from '@expo/vector-icons';\nimport { Actions, GiftedChat, IMessage, MessageText, Send } from 'react-native-gifted-chat';\nimport { PreDefinedRole, RoomType, IExpoNotificationData, IFileInfo } from 'common';\nimport {\n OnChatMessageAddedDocument as CHAT_MESSAGE_ADDED,\n useMessagesQuery,\n useSendExpoNotificationOnPostMutation,\n useSendMessagesMutation,\n useViewChannelDetailQuery,\n useAddDirectChannelMutation,\n} from 'common/lib/generated/generated.js';\nimport { useUploadFilesNative } from '@messenger-box/platform-client';\nimport { objectId } from '@messenger-box/core';\nimport { userSelector } from '@adminide-stack/user-auth0-client';\nimport { format, isToday, isYesterday } from 'date-fns';\nimport { ImageViewerModal, SlackMessage } from '../components/SlackMessageContainer';\nimport CachedImage from '../components/CachedImage';\nimport { config } from '../config';\n\nconst {\n MESSAGES_PER_PAGE,\n CALL_TO_ACTION_BOX_BGCOLOR,\n CALL_TO_ACTION_PATH,\n CALL_TO_ACTION_BUTTON_BORDERCOLOR,\n CALL_TO_ACTION_TEXT_COLOR,\n} = config;\n\nconst createdAtText = (value: string) => {\n if (!value) return '';\n let date = new Date(value);\n if (isToday(date)) return 'Today';\n if (isYesterday(date)) return 'Yesterday';\n return format(new Date(value), 'MMM dd, yyyy');\n};\n\ninterface ISubscriptionHandlerProps {\n subscribeToNewMessages: () => any;\n channelId: string;\n}\n\ninterface IMessageProps extends IMessage {\n type: string;\n propsConfiguration?: any;\n replies?: any;\n isShowThreadMessage?: boolean;\n}\n\nexport interface AlertMessageAttachmentsInterface {\n title: string;\n isTitleHtml: boolean;\n icon: string;\n callToAction: {\n title: string;\n link: string;\n };\n}\n\nconst ConversationViewComponent = ({ channelId: ChannelId, role, isShowThreadMessage, ...rest }: any) => {\n const [channelToTop, setChannelToTop] = useState(0);\n const [channelMessages, setChannelMessages] = useState<any>([]);\n const auth: any = useSelector(userSelector);\n const [totalCount, setTotalCount] = useState<any>(0);\n const [selectedImage, setImage] = useState<string>('');\n const currentRoute = navigationRef.isReady() ? navigationRef?.getCurrentRoute() : null;\n const [channelId, setChannelId] = useState<any>(rest?.isCreateNewChannel ? null : ChannelId);\n const [loadingOldMessages, setLoadingOldMessages] = useState<boolean>(false);\n const navigation = useNavigation<any>();\n const [files, setFiles] = useState<File[]>([]);\n const [images, setImages] = useState<ImagePicker.ImagePickerAsset[]>([]);\n const [msg, setMsg] = useState<string>('');\n const [loading, setLoading] = useState(false);\n const [loadEarlierMsg, setLoadEarlierMsg] = useState(false);\n const [imageLoading, setImageLoading] = useState(false);\n const [expoTokens, setExpoTokens] = useState<any[]>([]);\n const [isShowImageViewer, setImageViewer] = useState<boolean>(false);\n const [imageObject, setImageObject] = useState<any>({});\n const [skip, setSkip] = useState(0);\n const messageRootListRef = useRef<any>(null);\n const isFocused = useIsFocused();\n\n const [addDirectChannel, { loading: addDirectChannaleLoading }] = useAddDirectChannelMutation();\n\n const { startUpload } = useUploadFilesNative();\n\n const [sendMsg] = useSendMessagesMutation();\n\n const [sendExpoNotificationOnPostMutation] = useSendExpoNotificationOnPostMutation();\n\n const {\n data,\n loading: messageLoading,\n refetch,\n fetchMore: fetchMoreMessages,\n subscribeToMore,\n }: any = useMessagesQuery({\n variables: {\n channelId: channelId?.toString(),\n parentId: null,\n limit: MESSAGES_PER_PAGE,\n skip: skip,\n },\n skip: !channelId,\n fetchPolicy: 'cache-and-network',\n nextFetchPolicy: 'cache-first',\n refetchWritePolicy: 'merge',\n });\n\n // const {\n // data: channelsDetail,\n // loading: channelLoading,\n // refetch: refetchChannelDetail,\n // } = useViewChannelDetailQuery({\n // variables: {\n // id: channelId?.toString(),\n // },\n // });\n // const { data: users } = useGetAllUsersQuery();\n\n React.useEffect(() => {\n return () => {\n setChannelMessages([]);\n };\n }, []);\n\n useFocusEffect(\n React.useCallback(() => {\n // Do something when the screen is focused\n setSkip(0);\n // refetchChannelDetail({ id: channelId?.toString() });\n if (channelId) {\n refetch({\n channelId: channelId?.toString(),\n parentId: null,\n limit: MESSAGES_PER_PAGE,\n skip: 0,\n }).then(({ data }) => {\n if (!data?.messages) {\n return;\n }\n const { data: messages, totalCount }: any = data.messages;\n setTotalCount(totalCount);\n setChannelMessages(messages);\n });\n }\n return () => {\n // Do something when the screen is unfocused\n // Useful for cleanup functions\n setChannelId(null);\n setTotalCount(0);\n setSkip(0);\n };\n }, [channelId, isFocused]),\n );\n\n React.useEffect(() => {\n const currentChannelId = ChannelId || currentRoute?.params?.channelId;\n setChannelId(currentChannelId);\n }, [ChannelId, currentRoute]);\n\n React.useEffect(() => {\n if (selectedImage) setImageLoading(false);\n }, [selectedImage]);\n\n useEffect(() => {\n if (data?.messages?.data) {\n const { data: messages, totalCount: messeageTotalCount } = data.messages;\n console.log('messeageTotalCount', messeageTotalCount, ' totalCount=', totalCount);\n\n if (\n (messages && messages.length > 0 && messeageTotalCount > totalCount) ||\n (messages && messages.length > 0 && (loadingOldMessages || channelMessages.length === 0))\n ) {\n setChannelMessages((oldMessages: any) => uniqBy([...messages, ...oldMessages], ({ id }) => id));\n setTotalCount(messeageTotalCount);\n }\n\n if (loadingOldMessages && channelMessages) setLoadingOldMessages(false);\n }\n }, [data, loadingOldMessages, channelMessages, totalCount]);\n\n const onFetchOld = useCallback(async () => {\n if (totalCount > channelMessages.length && !loadingOldMessages) {\n setLoadEarlierMsg(true);\n try {\n const response = await fetchMoreMessages({\n variables: {\n channelId: channelId?.toString(),\n parentId: null,\n skip: channelMessages.length,\n },\n });\n if (response?.data) {\n setSkip(channelMessages.length);\n setLoadEarlierMsg(false);\n setLoadingOldMessages(true);\n }\n } catch (error: any) {\n setLoadEarlierMsg(false);\n }\n\n // ?.then((res: any) => {\n // setLoadingOldMessages(true);\n // });\n }\n }, [totalCount, channelMessages]);\n\n // const isCloseToTop = ({ layoutMeasurement, contentOffset, contentSize }) => {\n // return contentOffset.y <= 100; // 100px from top\n // };\n\n const isCloseToTop = ({ layoutMeasurement, contentOffset, contentSize }) => {\n const paddingToTop = 60;\n return contentSize.height - layoutMeasurement.height - paddingToTop <= contentOffset.y;\n };\n\n const dataURLtoFile = (dataurl: any, filename: any) => {\n var arr = dataurl.split(','),\n mime = arr[0].match(/:(.*?);/)[1],\n bstr = atob(arr[1]),\n n = bstr.length,\n u8arr = new Uint8Array(n);\n while (n--) {\n u8arr[n] = bstr.charCodeAt(n);\n }\n return new File([u8arr], filename, { type: mime });\n };\n\n const onSelectImages = async () => {\n setImageLoading(true);\n let imageSource: any = await ImagePicker.launchImageLibraryAsync({\n mediaTypes: ImagePicker.MediaTypeOptions.Images,\n allowsEditing: true,\n aspect: [4, 3],\n quality: 1,\n base64: true,\n });\n // if (!imageSource.cancelled) {\n // const image = 'data:image/jpeg;base64,' + imageSource?.base64;\n // setImage(image);\n // const file = dataURLtoFile(image, 'inputImage.jpg');\n // setFiles((files) => files.concat(file));\n // setImages((images) => images.concat(imageSource as ImagePicker.ImageInfo));\n // }\n // if (imageSource.cancelled) setLoading(false);\n\n if (!imageSource.canceled) {\n const image = 'data:image/jpeg;base64,' + imageSource?.assets[0]?.base64;\n setImage(image);\n const file = dataURLtoFile(image, 'inputImage.jpg');\n setFiles((files) => files.concat(file));\n setImages((images) => images.concat(imageSource?.assets[0] as ImagePicker.ImagePickerAsset));\n }\n\n if (imageSource.canceled) setLoading(false);\n };\n\n const createDirectChannel = useCallback(\n (msg: string) => {\n if (\n rest?.isCreateNewChannel &&\n rest?.newChannelData?.type === RoomType?.Direct &&\n rest?.newChannelData?.userIds?.length > 0\n ) {\n addDirectChannel({\n variables: {\n receiver: [...(rest?.newChannelData?.userIds ?? [])],\n displayName: 'DIRECT CHANNEL',\n },\n })\n ?.then(async (res) => {\n if (res?.data?.createDirectChannel?.id) {\n setChannelId(res?.data?.createDirectChannel?.id);\n const notificationData: IExpoNotificationData = {\n url: config.INBOX_MESSEGE_PATH,\n params: { channelId: res?.data?.createDirectChannel?.id, hideTabBar: true },\n screen: 'DialogMessages',\n other: { sound: Platform.OS === 'android' ? undefined : 'default' },\n };\n setLoading(true);\n await sendMsg({\n variables: {\n channelId: res?.data?.createDirectChannel?.id,\n content: msg,\n notificationParams: notificationData,\n },\n update: (cache, { data, errors }: any) => {\n if (!data || errors) {\n setLoading(false);\n return;\n }\n setChannelToTop(channelToTop + 1);\n setLoading(false);\n setMsg('');\n },\n });\n }\n })\n ?.catch((e: any) => console.log('error', JSON.stringify(e)));\n }\n },\n [rest],\n );\n\n const handleSend = useCallback(\n async (message: string) => {\n if (!channelId) return;\n if (!message && message != ' ' && images.length == 0) return;\n\n const notificationData: IExpoNotificationData = {\n url: config.INBOX_MESSEGE_PATH,\n params: { channelId, hideTabBar: true },\n screen: 'DialogMessages',\n other: { sound: Platform.OS === 'android' ? undefined : 'default' },\n };\n\n if (images && images.length > 0) {\n const postId = objectId();\n\n setLoading(true);\n const uploadResponse = await startUpload({\n file: images,\n saveUploadedFile: {\n variables: {\n postId,\n },\n },\n createUploadLink: {\n variables: {\n postId,\n },\n },\n });\n if (uploadResponse?.error) setLoading(false);\n const uploadedFiles = uploadResponse.data as unknown as IFileInfo[];\n\n if (uploadResponse.data) {\n setImage('');\n setFiles([]);\n setImages([]);\n //setLoading(false);\n const files = uploadedFiles?.map((f: any) => f.id) ?? null;\n await sendMsg({\n variables: {\n postId,\n channelId,\n content: message,\n files,\n notificationParams: notificationData,\n },\n update: (cache, { data, errors }: any) => {\n if (!data || errors) {\n setLoading(false);\n return;\n }\n //Temporary fix.....//\n const newMessage: any = data?.sendMessage;\n setChannelMessages((oldMessages: any) =>\n uniqBy([...oldMessages, newMessage], ({ id }) => id),\n );\n setTotalCount((t) => t + 1);\n //Temporary fix.....//\n\n setChannelToTop(channelToTop + 1);\n setLoading(false);\n setMsg('');\n },\n });\n }\n } else {\n setLoading(true);\n await sendMsg({\n variables: {\n channelId,\n content: message,\n notificationParams: notificationData,\n },\n update: (cache, { data, errors }: any) => {\n if (!data || errors) {\n setLoading(false);\n return;\n }\n //Temporary fix.....//\n const newMessage: any = data?.sendMessage;\n setChannelMessages((oldMessages: any) => uniqBy([...oldMessages, newMessage], ({ id }) => id));\n setTotalCount((t) => t + 1);\n //Temporary fix.....//\n\n setChannelToTop(channelToTop + 1);\n setLoading(false);\n setMsg('');\n },\n });\n }\n },\n [setChannelMessages, channelId, images, channelToTop, expoTokens],\n );\n\n const messageList = useMemo(() => {\n let currentDate = '';\n let res: any = [];\n const filteredMessages =\n channelMessages && channelMessages?.length > 0 ? uniqBy([...channelMessages], ({ id }: any) => id) : [];\n if (channelId && filteredMessages?.length > 0) {\n orderBy(channelMessages, ['createdAt'], ['desc']).map((msg) => {\n let message: IMessageProps = {\n _id: '',\n text: '',\n createdAt: 0,\n user: {\n _id: '',\n name: '',\n avatar: '',\n },\n type: '',\n };\n const date = new Date(msg.createdAt);\n message._id = msg.id;\n message.text = msg.message;\n message.createdAt = date;\n (message.user = {\n _id: msg.author.id,\n name: msg.author.givenName + ' ' + msg.author.familyName,\n avatar: msg.author?.picture,\n }),\n (message.image = msg.files?.data[0]?.url),\n (message.sent = msg?.isDelivered),\n (message.received = msg?.isRead);\n message.type = msg?.type;\n message.propsConfiguration = msg?.propsConfiguration;\n message.replies = msg?.replies ?? [];\n message.isShowThreadMessage = isShowThreadMessage;\n res.push(message);\n });\n }\n return res?.length > 0 ? uniqBy([...res], ({ _id }: any) => _id) : [];\n //return res;\n }, [channelMessages, channelId]);\n\n const renderSend = (props) => {\n return (\n <Send {...props} disabled={channelId || rest?.isCreateNewChannel ? false : true}>\n <Box>\n <MaterialCommunityIcons\n name=\"send-circle\"\n style={{ marginBottom: 5, marginRight: 5 }}\n size={32}\n color={channelId || rest?.isCreateNewChannel ? '#2e64e5' : '#b8b2b2'}\n />\n </Box>\n </Send>\n );\n };\n\n const renderMessageText = (props: any) => {\n const { currentMessage } = props;\n const lastReply: any = currentMessage?.replies?.data?.length > 0 ? currentMessage?.replies?.data?.[0] : null;\n\n if (currentMessage.type === 'ALERT') {\n const attachment = currentMessage?.propsConfiguration?.contents?.attachment;\n let action: string = '';\n let actionId: any = '';\n let params: any = {};\n\n if (attachment?.callToAction?.extraParams) {\n const extraParams: any = attachment?.callToAction?.extraParams;\n const route: any = extraParams?.route ?? null;\n let path: any = null;\n let param: any = null;\n if (role && role == PreDefinedRole.Guest) {\n path = route?.guest?.name ? route?.guest?.name ?? null : null;\n param = route?.guest?.params ? route?.guest?.params ?? null : null;\n } else if (role && role == PreDefinedRole.Owner) {\n path = route?.host?.name ? route?.host?.name ?? null : null;\n param = route?.host?.params ? route?.host?.params ?? null : null;\n } else {\n path = route?.host?.name ? route?.host?.name ?? null : null;\n param = route?.host?.params ? route?.host?.params ?? null : null;\n }\n\n action = path;\n params = { ...param };\n } else if (attachment?.callToAction?.link) {\n action = CALL_TO_ACTION_PATH;\n actionId = attachment?.callToAction?.link.split('/').pop();\n params = { reservationId: actionId };\n }\n\n return (\n <>\n {attachment?.callToAction && action ? (\n <Box bg={CALL_TO_ACTION_BOX_BGCOLOR} borderRadius={15} pb={'$2'}>\n <Button\n variant={'outline'}\n size={'sm'}\n borderColor={CALL_TO_ACTION_BUTTON_BORDERCOLOR}\n onPress={() => action && params && navigation.navigate(action, params)}\n // onPress={() => navigation.navigate(action, { reservationId: actionId })}\n >\n <ButtonText color={CALL_TO_ACTION_TEXT_COLOR}>\n {attachment.callToAction.title}\n </ButtonText>\n </Button>\n <MessageText\n {...props}\n textStyle={{\n left: { marginLeft: 5, color: CALL_TO_ACTION_TEXT_COLOR, paddingHorizontal: 2 },\n }}\n />\n </Box>\n ) : (\n <TouchableHighlight\n underlayColor={'#c0c0c0'}\n style={{ width: '100%' }}\n onPress={() => {\n if (currentMessage?.isShowThreadMessage)\n navigation.navigate(config.THREAD_MESSEGE_PATH, {\n channelId: channelId,\n title: 'Message',\n postParentId: currentMessage?._id,\n isPostParentIdThread: true,\n });\n }}\n >\n <>\n <MessageText {...props} textStyle={{ left: { marginLeft: 5 } }} />\n {currentMessage?.replies?.data?.length > 0 && (\n <HStack space={'sm'} px={'$1'} alignItems={'center'}>\n <HStack>\n {currentMessage?.replies?.data\n ?.filter(\n (v: any, i: any, a: any) =>\n a.findIndex((t: any) => t?.author?.id === v?.author?.id) === i,\n )\n ?.slice(0, 2)\n ?.reverse()\n ?.map((p: any, i: Number) => (\n <Avatar\n key={'conversations-view-key-' + i}\n bg={'transparent'}\n size={'sm'}\n >\n <AvatarFallbackText>\n {startCase(p?.author?.username?.charAt(0))}\n </AvatarFallbackText>\n <AvatarImage\n alt=\"user image\"\n style={{\n borderRadius: 6,\n borderWidth: 2,\n borderColor: '#fff',\n }}\n source={{\n uri: p?.author?.picture,\n }}\n />\n </Avatar>\n ))}\n </HStack>\n <Text style={{ fontSize: 12 }} fontWeight={'$bold'} color={'$blue800'}>\n {currentMessage?.replies?.totalCount}{' '}\n {currentMessage?.replies?.totalCount == 1 ? 'reply' : 'replies'}\n </Text>\n <Text style={{ fontSize: 12 }} fontWeight={'$bold'} color={'$trueGray500'}>\n {lastReply ? createdAtText(lastReply?.createdAt) : ''}\n </Text>\n </HStack>\n )}\n </>\n </TouchableHighlight>\n )}\n {/* <MessageText\n {...props}\n textStyle={{ left: { marginLeft: 5, color: CALL_TO_ACTION_TEXT_COLOR, paddingHorizontal: 2 } }}\n /> */}\n </>\n );\n } else {\n return (\n <TouchableHighlight\n underlayColor={'#c0c0c0'}\n style={{ width: '100%' }}\n onPress={() => {\n if (currentMessage?.isShowThreadMessage)\n navigation.navigate(config.THREAD_MESSEGE_PATH, {\n channelId: channelId,\n title: 'Message',\n postParentId: currentMessage?._id,\n isPostParentIdThread: true,\n });\n }}\n >\n <>\n <MessageText {...props} textStyle={{ left: { marginLeft: 5 } }} />\n {currentMessage?.replies?.data?.length > 0 && (\n <HStack space={'sm'} px={'$1'} alignItems={'center'}>\n <HStack>\n {currentMessage?.replies?.data\n ?.filter(\n (v: any, i: any, a: any) =>\n a.findIndex((t: any) => t?.author?.id === v?.author?.id) === i,\n )\n ?.slice(0, 2)\n ?.reverse()\n ?.map((p: any, i: Number) => (\n <Avatar\n key={'conversation-replies-key-' + i}\n bg={'transparent'}\n size={'sm'}\n >\n <AvatarFallbackText>\n {startCase(p?.author?.username?.charAt(0))}\n </AvatarFallbackText>\n <AvatarImage\n alt=\"user image\"\n style={{ borderRadius: 6, borderWidth: 2, borderColor: '#fff' }}\n source={{\n uri: p?.author?.picture,\n }}\n />\n </Avatar>\n ))}\n </HStack>\n <Text style={{ fontSize: 12 }} fontWeight={'$bold'} color={'$blue800'}>\n {currentMessage?.replies?.totalCount}{' '}\n {currentMessage?.replies?.totalCount == 1 ? 'reply' : 'replies'}\n </Text>\n <Text style={{ fontSize: 12 }} fontWeight={'$bold'} color={'$trueGray500'}>\n {lastReply ? createdAtText(lastReply?.createdAt) : ''}\n </Text>\n </HStack>\n )}\n </>\n </TouchableHighlight>\n );\n }\n };\n\n const renderActions = (props) => {\n return (\n <Actions\n {...props}\n icon={() => <Ionicons name={'image'} size={30} color={'black'} onPress={onSelectImages} />}\n />\n );\n };\n\n const renderAccessory = (props) => {\n return (\n <Box>\n {selectedImage !== '' ? (\n <HStack alignItems={'center'}>\n <Image\n ml={'$3'}\n key={selectedImage}\n alt={'image'}\n source={{ uri: selectedImage }}\n size={'xs'}\n />\n <Button\n variant={'solid'}\n bg={'transparent'}\n //colorScheme={'secondary'}\n onPress={() => {\n setFiles([]);\n setImage('');\n setImages([]);\n }}\n >\n <ButtonText color={'$black'}>Cancel</ButtonText>\n </Button>\n </HStack>\n ) : null}\n </Box>\n );\n };\n\n const setImageViewerObject = (obj: any, v: boolean) => {\n setImageObject(obj);\n setImageViewer(v);\n };\n\n const modalContent = React.useMemo(() => {\n if (!imageObject) return <></>;\n const { image, _id } = imageObject;\n return (\n <CachedImage\n style={{ width: '100%', height: '100%' }}\n resizeMode={'cover'}\n // cacheKey={`${_id}-conversation-modal-image-key`}\n cacheKey={`${_id}-slack-bubble-imageKey`}\n source={{\n uri: image,\n //headers: `Authorization: Bearer ${token}`,\n expiresIn: 86400,\n }}\n alt={'image'}\n />\n );\n }, [imageObject]);\n\n const renderMessage = useCallback(\n (props: any) => {\n // const {\n // currentMessage: { text: currText },\n // } = props;\n\n //let messageTextStyle: any;\n\n // Make \"pure emoji\" messages much bigger than plain text.\n // if (currText && emojiUtils.isPureEmojiString(currText)) {\n // messageTextStyle = {\n // fontSize: 28,\n // // Emoji get clipped if lineHeight isn't increased; make it consistent across platforms.\n // lineHeight: Platform.OS === 'android' ? 34 : 30,\n // }\n // }\n\n // return <SlackMessage {...props} messageTextStyle={messageTextStyle} />;\n return (\n <SlackMessage {...props} isShowImageViewer={isShowImageViewer} setImageViewer={setImageViewerObject} />\n );\n },\n [isShowImageViewer],\n );\n\n // const renderMessage = (props: any) => {\n // // const {\n // // currentMessage: { text: currText },\n // // } = props;\n\n // //let messageTextStyle: any;\n\n // // Make \"pure emoji\" messages much bigger than plain text.\n // // if (currText && emojiUtils.isPureEmojiString(currText)) {\n // // messageTextStyle = {\n // // fontSize: 28,\n // // // Emoji get clipped if lineHeight isn't increased; make it consistent across platforms.\n // // lineHeight: Platform.OS === 'android' ? 34 : 30,\n // // }\n // // }\n\n // // return <SlackMessage {...props} messageTextStyle={messageTextStyle} />;\n // return <SlackMessage {...props} isShowImageViewer={isShowImageViewer} setImageViewer={setImageViewerObject} />;\n // };\n\n let onScroll = false;\n\n const onMomentumScrollBegin = async ({ nativeEvent }: any) => {\n onScroll = true;\n console.log('scroll top');\n if (!loadingOldMessages && isCloseToTop(nativeEvent) && totalCount > channelMessages?.length) {\n await onFetchOld();\n }\n };\n\n const onEndReached = () => {\n console.log('on end reached');\n if (!onScroll) return;\n // load messages, show ActivityIndicator\n onScroll = false;\n // setLoadingOldMessages(true);\n };\n\n return (\n <>\n {loadEarlierMsg && <Spinner color={'$blue500'} />}\n\n <GiftedChat\n ref={messageRootListRef}\n wrapInSafeArea={false}\n renderLoading={() => <Spinner color={'$blue500'} />}\n messages={messageList}\n listViewProps={{\n onEndReached: onEndReached,\n onEndReachedThreshold: 0.5,\n onMomentumScrollBegin: onMomentumScrollBegin,\n }}\n // listViewProps={{\n // scrollEventThrottle: 400,\n // onScroll: ({ nativeEvent }) => { console.log('scroll')\n // if (!loadingOldMessages && isCloseToTop(nativeEvent)) {\n // onFetchOld();\n // }\n // }\n // }}\n onSend={(messages) =>\n rest?.isCreateNewChannel && !channelId\n ? rest?.newChannelData?.type === RoomType?.Direct\n ? createDirectChannel(messages[0]?.text ?? ' ')\n : null\n : channelId && handleSend(messages[0]?.text ?? ' ')\n }\n text={msg ? msg : ' '}\n onInputTextChanged={(text) => setMsg(text)}\n renderFooter={() =>\n loading ? <Spinner color={'$blue500'} /> : imageLoading ? <Spinner color={'$blue500'} /> : ''\n }\n scrollToBottom\n user={{\n // _id: currentUser?.id || '',\n _id: auth?.id || '',\n }}\n isTyping={true}\n alwaysShowSend={loading ? false : true}\n //onLoadEarlier={onFetchOld}\n //infiniteScroll={true}\n renderSend={renderSend}\n // loadEarlier={data?.messages?.totalCount > channelMessages.length}\n //isLoadingEarlier={loadEarlierMsg}\n //extraData={{ isLoadingEarlier: loadingOldMessages }}\n // renderLoadEarlier={() =>\n // !loadEarlierMsg && (\n // <Center py={2}>\n // <Button\n // onPress={() => onFetchOld()}\n // variant={'outline'}\n // _text={{ color: 'black', fontSize: 15, fontWeight: 'bold' }}\n // >\n // Load earlier messages\n // </Button>\n // </Center>\n // )\n // }\n renderMessageText={renderMessageText}\n minInputToolbarHeight={50}\n renderActions={channelId && renderActions}\n renderAccessory={renderAccessory}\n renderMessage={renderMessage}\n renderChatFooter={() => (\n <>\n <ImageViewerModal\n isVisible={isShowImageViewer}\n setVisible={setImageViewer}\n modalContent={modalContent}\n />\n <SubscriptionHandler\n channelId={channelId?.toString()}\n subscribeToNewMessages={() =>\n subscribeToMore({\n document: CHAT_MESSAGE_ADDED,\n variables: {\n channelId: channelId?.toString(),\n },\n updateQuery: (prev, { subscriptionData }: any) => {\n if (!subscriptionData.data) return prev;\n setSkip(0);\n const newMessage: any = subscriptionData?.data?.chatMessageAdded;\n const previousData = prev?.messages?.data\n ? [...prev.messages.data, newMessage]\n : [];\n const totalMsgCount = prev?.messages?.totalCount + 1;\n setChannelMessages((oldMessages: any) =>\n uniqBy([...oldMessages, newMessage], ({ id }) => id),\n );\n setTotalCount(totalMsgCount);\n const merged = {\n ...prev,\n messages: {\n ...prev?.messages,\n data: [...(prev?.messages?.data ?? []), newMessage],\n totalCount: totalMsgCount,\n },\n };\n return merged;\n // return Object.assign({}, prev, {\n // messages: {\n // data: [...prev.messages.data, newMessage],\n // totalCount: prev.messages.totalCount + 1,\n // },\n // });\n },\n })\n }\n />\n </>\n )}\n lightboxProps={{\n underlayColor: 'transparent',\n springConfig: { tension: 90000, friction: 90000 },\n disabled: true,\n }}\n />\n </>\n );\n};\n\nconst SubscriptionHandler = ({ subscribeToNewMessages, channelId }: ISubscriptionHandlerProps) => {\n useEffect(() => subscribeToNewMessages(), [channelId]);\n return <></>;\n};\n\nexport const ConversationView = React.memo(ConversationViewComponent);\n"],"names":["_a","React","data","totalCount","atob","files","images","msg","_b","_c","_d","_e","_f","_g","_h","SlackMessage","CHAT_MESSAGE_ADDED"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ConversationView.js","sources":["../../../../src/screens/inbox/containers/ConversationView.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n Avatar,\n AvatarFallbackText,\n AvatarImage,\n Box,\n Button,\n ButtonText,\n HStack,\n Icon,\n Image,\n Spinner,\n Text,\n} from '@admin-layout/gluestack-ui-mobile';\nimport { Platform, TouchableHighlight } from 'react-native';\nimport { useFocusEffect, useIsFocused, useNavigation } from '@react-navigation/native';\nimport { navigationRef } from '@common-stack/client-react';\nimport { useSelector } from 'react-redux';\nimport { orderBy, startCase, uniqBy } from 'lodash-es';\nimport * as ImagePicker from 'expo-image-picker';\nimport { encode as atob } from 'base-64';\nimport { Ionicons, MaterialCommunityIcons } from '@expo/vector-icons';\nimport { Actions, GiftedChat, IMessage, MessageText, Send } from 'react-native-gifted-chat';\nimport { PreDefinedRole, RoomType, IExpoNotificationData, IFileInfo } from 'common';\nimport {\n OnChatMessageAddedDocument as CHAT_MESSAGE_ADDED,\n useMessagesQuery,\n useSendExpoNotificationOnPostMutation,\n useSendMessagesMutation,\n useViewChannelDetailQuery,\n useAddDirectChannelMutation,\n} from 'common/lib/generated/generated.js';\nimport { useUploadFilesNative } from '@messenger-box/platform-client';\nimport { objectId } from '@messenger-box/core';\nimport { userSelector } from '@adminide-stack/user-auth0-client';\nimport { format, isToday, isYesterday } from 'date-fns';\nimport { ImageViewerModal, SlackMessage } from '../components/SlackMessageContainer';\nimport CachedImage from '../components/CachedImage';\nimport { config } from '../config';\n\nconst {\n MESSAGES_PER_PAGE,\n CALL_TO_ACTION_BOX_BGCOLOR,\n CALL_TO_ACTION_PATH,\n CALL_TO_ACTION_BUTTON_BORDERCOLOR,\n CALL_TO_ACTION_TEXT_COLOR,\n} = config;\n\nconst createdAtText = (value: string) => {\n if (!value) return '';\n let date = new Date(value);\n if (isToday(date)) return 'Today';\n if (isYesterday(date)) return 'Yesterday';\n return format(new Date(value), 'MMM dd, yyyy');\n};\n\ninterface ISubscriptionHandlerProps {\n subscribeToNewMessages: () => any;\n channelId: string;\n}\n\ninterface IMessageProps extends IMessage {\n type: string;\n propsConfiguration?: any;\n replies?: any;\n isShowThreadMessage?: boolean;\n}\n\nexport interface AlertMessageAttachmentsInterface {\n title: string;\n isTitleHtml: boolean;\n icon: string;\n callToAction: {\n title: string;\n link: string;\n };\n}\n\nconst ConversationViewComponent = ({ channelId: ChannelId, role, isShowThreadMessage, ...rest }: any) => {\n const [channelToTop, setChannelToTop] = useState(0);\n const [channelMessages, setChannelMessages] = useState<any>([]);\n const auth: any = useSelector(userSelector);\n const [totalCount, setTotalCount] = useState<any>(0);\n const [selectedImage, setImage] = useState<string>('');\n const currentRoute = navigationRef.isReady() ? navigationRef?.getCurrentRoute() : null;\n const [channelId, setChannelId] = useState<any>(rest?.isCreateNewChannel ? null : ChannelId);\n const [loadingOldMessages, setLoadingOldMessages] = useState<boolean>(false);\n const navigation = useNavigation<any>();\n const [files, setFiles] = useState<File[]>([]);\n const [images, setImages] = useState<ImagePicker.ImagePickerAsset[]>([]);\n const [msg, setMsg] = useState<string>('');\n const [loading, setLoading] = useState(false);\n const [loadEarlierMsg, setLoadEarlierMsg] = useState(false);\n const [imageLoading, setImageLoading] = useState(false);\n const [expoTokens, setExpoTokens] = useState<any[]>([]);\n const [isShowImageViewer, setImageViewer] = useState<boolean>(false);\n const [imageObject, setImageObject] = useState<any>({});\n const [skip, setSkip] = useState(0);\n const messageRootListRef = useRef<any>(null);\n const isFocused = useIsFocused();\n\n const [addDirectChannel, { loading: addDirectChannaleLoading }] = useAddDirectChannelMutation();\n\n const { startUpload } = useUploadFilesNative();\n\n const [sendMsg] = useSendMessagesMutation();\n\n const [sendExpoNotificationOnPostMutation] = useSendExpoNotificationOnPostMutation();\n\n const {\n data,\n loading: messageLoading,\n refetch,\n fetchMore: fetchMoreMessages,\n subscribeToMore,\n }: any = useMessagesQuery({\n variables: {\n channelId: channelId?.toString(),\n parentId: null,\n limit: MESSAGES_PER_PAGE,\n skip: skip,\n },\n skip: !channelId,\n fetchPolicy: 'cache-and-network',\n nextFetchPolicy: 'cache-first',\n refetchWritePolicy: 'merge',\n });\n\n // const {\n // data: channelsDetail,\n // loading: channelLoading,\n // refetch: refetchChannelDetail,\n // } = useViewChannelDetailQuery({\n // variables: {\n // id: channelId?.toString(),\n // },\n // });\n // const { data: users } = useGetAllUsersQuery();\n\n React.useEffect(() => {\n return () => {\n setChannelMessages([]);\n };\n }, []);\n\n useFocusEffect(\n React.useCallback(() => {\n // Do something when the screen is focused\n setSkip(0);\n // refetchChannelDetail({ id: channelId?.toString() });\n if (channelId) {\n refetch({\n channelId: channelId?.toString(),\n parentId: null,\n limit: MESSAGES_PER_PAGE,\n skip: 0,\n }).then(({ data }) => {\n if (!data?.messages) {\n return;\n }\n const { data: messages, totalCount }: any = data.messages;\n setTotalCount(totalCount);\n setChannelMessages(messages);\n });\n }\n return () => {\n // Do something when the screen is unfocused\n // Useful for cleanup functions\n setChannelId(null);\n setTotalCount(0);\n setSkip(0);\n };\n }, [channelId, isFocused]),\n );\n\n React.useEffect(() => {\n const currentChannelId = ChannelId || currentRoute?.params?.channelId;\n setChannelId(currentChannelId);\n }, [ChannelId, currentRoute]);\n\n React.useEffect(() => {\n if (selectedImage) setImageLoading(false);\n }, [selectedImage]);\n\n useEffect(() => {\n if (data?.messages?.data) {\n const { data: messages, totalCount: messeageTotalCount } = data.messages;\n console.log('messeageTotalCount', messeageTotalCount, ' totalCount=', totalCount);\n\n if (\n (messages && messages.length > 0 && messeageTotalCount > totalCount) ||\n (messages && messages.length > 0 && (loadingOldMessages || channelMessages.length === 0))\n ) {\n setChannelMessages((oldMessages: any) => uniqBy([...messages, ...oldMessages], ({ id }) => id));\n setTotalCount(messeageTotalCount);\n }\n\n if (loadingOldMessages && channelMessages) setLoadingOldMessages(false);\n }\n }, [data, loadingOldMessages, channelMessages, totalCount]);\n\n const onFetchOld = useCallback(async () => {\n if (totalCount > channelMessages.length && !loadingOldMessages) {\n setLoadEarlierMsg(true);\n try {\n const response = await fetchMoreMessages({\n variables: {\n channelId: channelId?.toString(),\n parentId: null,\n skip: channelMessages.length,\n },\n });\n if (response?.data) {\n setSkip(channelMessages.length);\n setLoadEarlierMsg(false);\n setLoadingOldMessages(true);\n }\n } catch (error: any) {\n setLoadEarlierMsg(false);\n }\n\n // ?.then((res: any) => {\n // setLoadingOldMessages(true);\n // });\n }\n }, [totalCount, channelMessages]);\n\n // const isCloseToTop = ({ layoutMeasurement, contentOffset, contentSize }) => {\n // return contentOffset.y <= 100; // 100px from top\n // };\n\n const isCloseToTop = ({ layoutMeasurement, contentOffset, contentSize }) => {\n const paddingToTop = 60;\n return contentSize.height - layoutMeasurement.height - paddingToTop <= contentOffset.y;\n };\n\n const dataURLtoFile = (dataurl: any, filename: any) => {\n var arr = dataurl.split(','),\n mime = arr[0].match(/:(.*?);/)[1],\n bstr = atob(arr[1]),\n n = bstr.length,\n u8arr = new Uint8Array(n);\n while (n--) {\n u8arr[n] = bstr.charCodeAt(n);\n }\n return new File([u8arr], filename, { type: mime });\n };\n\n const onSelectImages = async () => {\n setImageLoading(true);\n let imageSource: any = await ImagePicker.launchImageLibraryAsync({\n mediaTypes: ImagePicker.MediaTypeOptions.Images,\n allowsEditing: true,\n aspect: [4, 3],\n quality: 1,\n base64: true,\n });\n // if (!imageSource.cancelled) {\n // const image = 'data:image/jpeg;base64,' + imageSource?.base64;\n // setImage(image);\n // const file = dataURLtoFile(image, 'inputImage.jpg');\n // setFiles((files) => files.concat(file));\n // setImages((images) => images.concat(imageSource as ImagePicker.ImageInfo));\n // }\n // if (imageSource.cancelled) setLoading(false);\n\n if (!imageSource.canceled) {\n const image = 'data:image/jpeg;base64,' + imageSource?.assets[0]?.base64;\n setImage(image);\n const file = dataURLtoFile(image, 'inputImage.jpg');\n setFiles((files) => files.concat(file));\n setImages((images) => images.concat(imageSource?.assets[0] as ImagePicker.ImagePickerAsset));\n }\n\n if (imageSource.canceled) setLoading(false);\n };\n\n const createDirectChannel = useCallback(\n (msg: string) => {\n if (\n rest?.isCreateNewChannel &&\n rest?.newChannelData?.type === RoomType?.Direct &&\n rest?.newChannelData?.userIds?.length > 0\n ) {\n addDirectChannel({\n variables: {\n receiver: [...(rest?.newChannelData?.userIds ?? [])],\n displayName: 'DIRECT CHANNEL',\n },\n })\n ?.then(async (res) => {\n if (res?.data?.createDirectChannel?.id) {\n setChannelId(res?.data?.createDirectChannel?.id);\n const notificationData: IExpoNotificationData = {\n url: config.INBOX_MESSEGE_PATH,\n params: { channelId: res?.data?.createDirectChannel?.id, hideTabBar: true },\n screen: 'DialogMessages',\n other: { sound: Platform.OS === 'android' ? undefined : 'default' },\n };\n setLoading(true);\n await sendMsg({\n variables: {\n channelId: res?.data?.createDirectChannel?.id,\n content: msg,\n notificationParams: notificationData,\n },\n update: (cache, { data, errors }: any) => {\n if (!data || errors) {\n setLoading(false);\n return;\n }\n setChannelToTop(channelToTop + 1);\n setLoading(false);\n setMsg('');\n },\n });\n }\n })\n ?.catch((e: any) => console.log('error', JSON.stringify(e)));\n }\n },\n [rest],\n );\n\n const handleSend = useCallback(\n async (message: string) => {\n if (!channelId) return;\n if (!message && message != ' ' && images.length == 0) return;\n\n const notificationData: IExpoNotificationData = {\n url: config.INBOX_MESSEGE_PATH,\n params: { channelId, hideTabBar: true },\n screen: 'DialogMessages',\n other: { sound: Platform.OS === 'android' ? undefined : 'default' },\n };\n\n if (images && images.length > 0) {\n const postId = objectId();\n\n setLoading(true);\n const uploadResponse = await startUpload({\n file: images,\n saveUploadedFile: {\n variables: {\n postId,\n },\n },\n createUploadLink: {\n variables: {\n postId,\n },\n },\n });\n if (uploadResponse?.error) setLoading(false);\n const uploadedFiles = uploadResponse.data as unknown as IFileInfo[];\n\n if (uploadResponse.data) {\n setImage('');\n setFiles([]);\n setImages([]);\n //setLoading(false);\n const files = uploadedFiles?.map((f: any) => f.id) ?? null;\n await sendMsg({\n variables: {\n postId,\n channelId,\n content: message,\n files,\n notificationParams: notificationData,\n },\n update: (cache, { data, errors }: any) => {\n if (!data || errors) {\n setLoading(false);\n return;\n }\n //Temporary fix.....//\n const newMessage: any = data?.sendMessage;\n setChannelMessages((oldMessages: any) =>\n uniqBy([...oldMessages, newMessage], ({ id }) => id),\n );\n setTotalCount((t) => t + 1);\n //Temporary fix.....//\n\n setChannelToTop(channelToTop + 1);\n setLoading(false);\n setMsg('');\n },\n });\n }\n } else {\n setLoading(true);\n await sendMsg({\n variables: {\n channelId,\n content: message,\n notificationParams: notificationData,\n },\n update: (cache, { data, errors }: any) => {\n if (!data || errors) {\n setLoading(false);\n return;\n }\n //Temporary fix.....//\n const newMessage: any = data?.sendMessage;\n setChannelMessages((oldMessages: any) => uniqBy([...oldMessages, newMessage], ({ id }) => id));\n setTotalCount((t) => t + 1);\n //Temporary fix.....//\n\n setChannelToTop(channelToTop + 1);\n setLoading(false);\n setMsg('');\n },\n });\n }\n },\n [setChannelMessages, channelId, images, channelToTop, expoTokens],\n );\n\n const messageList = useMemo(() => {\n let currentDate = '';\n let res: any = [];\n const filteredMessages =\n channelMessages && channelMessages?.length > 0 ? uniqBy([...channelMessages], ({ id }: any) => id) : [];\n if (channelId && filteredMessages?.length > 0) {\n orderBy(channelMessages, ['createdAt'], ['desc']).map((msg) => {\n let message: IMessageProps = {\n _id: '',\n text: '',\n createdAt: 0,\n user: {\n _id: '',\n name: '',\n avatar: '',\n },\n type: '',\n };\n const date = new Date(msg.createdAt);\n message._id = msg.id;\n message.text = msg.message;\n message.createdAt = date;\n (message.user = {\n _id: msg.author.id,\n name: msg.author.givenName + ' ' + msg.author.familyName,\n avatar: msg.author?.picture,\n }),\n (message.image = msg.files?.data[0]?.url),\n (message.sent = msg?.isDelivered),\n (message.received = msg?.isRead);\n message.type = msg?.type;\n message.propsConfiguration = msg?.propsConfiguration;\n message.replies = msg?.replies ?? [];\n message.isShowThreadMessage = isShowThreadMessage;\n res.push(message);\n });\n }\n return res?.length > 0 ? uniqBy([...res], ({ _id }: any) => _id) : [];\n //return res;\n }, [channelMessages, channelId]);\n\n const renderSend = (props) => {\n return (\n <Send {...props} disabled={channelId || rest?.isCreateNewChannel ? false : true}>\n <Box>\n <MaterialCommunityIcons\n name=\"send-circle\"\n style={{ marginBottom: 5, marginRight: 5 }}\n size={32}\n color={channelId || rest?.isCreateNewChannel ? '#2e64e5' : '#b8b2b2'}\n />\n </Box>\n </Send>\n );\n };\n\n const renderMessageText = (props: any) => {\n const { currentMessage } = props;\n const lastReply: any = currentMessage?.replies?.data?.length > 0 ? currentMessage?.replies?.data?.[0] : null;\n\n if (currentMessage.type === 'ALERT') {\n const attachment = currentMessage?.propsConfiguration?.contents?.attachment;\n let action: string = '';\n let actionId: any = '';\n let params: any = {};\n\n if (attachment?.callToAction?.extraParams) {\n const extraParams: any = attachment?.callToAction?.extraParams;\n const route: any = extraParams?.route ?? null;\n let path: any = null;\n let param: any = null;\n if (role && role == PreDefinedRole.Guest) {\n path = route?.guest?.name ? route?.guest?.name ?? null : null;\n param = route?.guest?.params ? route?.guest?.params ?? null : null;\n } else if (role && role == PreDefinedRole.Owner) {\n path = route?.host?.name ? route?.host?.name ?? null : null;\n param = route?.host?.params ? route?.host?.params ?? null : null;\n } else {\n path = route?.host?.name ? route?.host?.name ?? null : null;\n param = route?.host?.params ? route?.host?.params ?? null : null;\n }\n\n action = path;\n params = { ...param };\n } else if (attachment?.callToAction?.link) {\n action = CALL_TO_ACTION_PATH;\n actionId = attachment?.callToAction?.link.split('/').pop();\n params = { reservationId: actionId };\n }\n\n return (\n <>\n {attachment?.callToAction && action ? (\n <Box bg={CALL_TO_ACTION_BOX_BGCOLOR} borderRadius={15} pb={'$2'}>\n <Button\n variant={'outline'}\n size={'sm'}\n borderColor={CALL_TO_ACTION_BUTTON_BORDERCOLOR}\n onPress={() => action && params && navigation.navigate(action, params)}\n // onPress={() => navigation.navigate(action, { reservationId: actionId })}\n >\n <ButtonText color={CALL_TO_ACTION_TEXT_COLOR}>\n {attachment.callToAction.title}\n </ButtonText>\n </Button>\n <MessageText\n {...props}\n textStyle={{\n left: { marginLeft: 5, color: CALL_TO_ACTION_TEXT_COLOR, paddingHorizontal: 2 },\n }}\n />\n </Box>\n ) : (\n <TouchableHighlight\n underlayColor={'#c0c0c0'}\n style={{ width: '100%' }}\n onPress={() => {\n if (currentMessage?.isShowThreadMessage)\n navigation.navigate(config.THREAD_MESSEGE_PATH, {\n channelId: channelId,\n title: 'Message',\n postParentId: currentMessage?._id,\n isPostParentIdThread: true,\n });\n }}\n >\n <>\n <MessageText {...props} textStyle={{ left: { marginLeft: 5 } }} />\n {currentMessage?.replies?.data?.length > 0 && (\n <HStack space={'sm'} px={'$1'} alignItems={'center'}>\n <HStack>\n {currentMessage?.replies?.data\n ?.filter(\n (v: any, i: any, a: any) =>\n a.findIndex((t: any) => t?.author?.id === v?.author?.id) === i,\n )\n ?.slice(0, 2)\n ?.reverse()\n ?.map((p: any, i: Number) => (\n <Avatar\n key={'conversations-view-key-' + i}\n bg={'transparent'}\n size={'sm'}\n >\n <AvatarFallbackText>\n {startCase(p?.author?.username?.charAt(0))}\n </AvatarFallbackText>\n <AvatarImage\n alt=\"user image\"\n style={{\n borderRadius: 6,\n borderWidth: 2,\n borderColor: '#fff',\n }}\n source={{\n uri: p?.author?.picture,\n }}\n />\n </Avatar>\n ))}\n </HStack>\n <Text style={{ fontSize: 12 }} fontWeight={'$bold'} color={'$blue800'}>\n {currentMessage?.replies?.totalCount}{' '}\n {currentMessage?.replies?.totalCount == 1 ? 'reply' : 'replies'}\n </Text>\n <Text style={{ fontSize: 12 }} fontWeight={'$bold'} color={'$trueGray500'}>\n {lastReply ? createdAtText(lastReply?.createdAt) : ''}\n </Text>\n </HStack>\n )}\n </>\n </TouchableHighlight>\n )}\n {/* <MessageText\n {...props}\n textStyle={{ left: { marginLeft: 5, color: CALL_TO_ACTION_TEXT_COLOR, paddingHorizontal: 2 } }}\n /> */}\n </>\n );\n } else {\n return (\n <TouchableHighlight\n underlayColor={'#c0c0c0'}\n style={{ width: '100%' }}\n onPress={() => {\n if (currentMessage?.isShowThreadMessage)\n navigation.navigate(config.THREAD_MESSEGE_PATH, {\n channelId: channelId,\n title: 'Message',\n postParentId: currentMessage?._id,\n isPostParentIdThread: true,\n });\n }}\n >\n <>\n <MessageText {...props} textStyle={{ left: { marginLeft: 5 } }} />\n {currentMessage?.replies?.data?.length > 0 && (\n <HStack space={'sm'} px={'$1'} alignItems={'center'}>\n <HStack>\n {currentMessage?.replies?.data\n ?.filter(\n (v: any, i: any, a: any) =>\n a.findIndex((t: any) => t?.author?.id === v?.author?.id) === i,\n )\n ?.slice(0, 2)\n ?.reverse()\n ?.map((p: any, i: Number) => (\n <Avatar\n key={'conversation-replies-key-' + i}\n bg={'transparent'}\n size={'sm'}\n >\n <AvatarFallbackText>\n {startCase(p?.author?.username?.charAt(0))}\n </AvatarFallbackText>\n <AvatarImage\n alt=\"user image\"\n style={{ borderRadius: 6, borderWidth: 2, borderColor: '#fff' }}\n source={{\n uri: p?.author?.picture,\n }}\n />\n </Avatar>\n ))}\n </HStack>\n <Text style={{ fontSize: 12 }} fontWeight={'$bold'} color={'$blue800'}>\n {currentMessage?.replies?.totalCount}{' '}\n {currentMessage?.replies?.totalCount == 1 ? 'reply' : 'replies'}\n </Text>\n <Text style={{ fontSize: 12 }} fontWeight={'$bold'} color={'$trueGray500'}>\n {lastReply ? createdAtText(lastReply?.createdAt) : ''}\n </Text>\n </HStack>\n )}\n </>\n </TouchableHighlight>\n );\n }\n };\n\n const renderActions = (props) => {\n return (\n <Actions\n {...props}\n icon={() => <Ionicons name={'image'} size={30} color={'black'} onPress={onSelectImages} />}\n />\n );\n };\n\n const renderAccessory = (props) => {\n return (\n <Box>\n {selectedImage !== '' ? (\n <HStack alignItems={'center'}>\n <Image\n ml={'$3'}\n key={selectedImage}\n alt={'image'}\n source={{ uri: selectedImage }}\n size={'xs'}\n />\n <Button\n variant={'solid'}\n bg={'transparent'}\n //colorScheme={'secondary'}\n onPress={() => {\n setFiles([]);\n setImage('');\n setImages([]);\n }}\n >\n <ButtonText color={'$black'}>Cancel</ButtonText>\n </Button>\n </HStack>\n ) : null}\n </Box>\n );\n };\n\n const setImageViewerObject = (obj: any, v: boolean) => {\n setImageObject(obj);\n setImageViewer(v);\n };\n\n const modalContent = React.useMemo(() => {\n if (!imageObject) return <></>;\n const { image, _id } = imageObject;\n return (\n <CachedImage\n style={{ width: '100%', height: '100%' }}\n resizeMode={'cover'}\n // cacheKey={`${_id}-conversation-modal-image-key`}\n cacheKey={`${_id}-slack-bubble-imageKey`}\n source={{\n uri: image,\n //headers: `Authorization: Bearer ${token}`,\n expiresIn: 86400,\n }}\n alt={'image'}\n />\n );\n }, [imageObject]);\n\n const renderMessage = useCallback(\n (props: any) => {\n // const {\n // currentMessage: { text: currText },\n // } = props;\n\n //let messageTextStyle: any;\n\n // Make \"pure emoji\" messages much bigger than plain text.\n // if (currText && emojiUtils.isPureEmojiString(currText)) {\n // messageTextStyle = {\n // fontSize: 28,\n // // Emoji get clipped if lineHeight isn't increased; make it consistent across platforms.\n // lineHeight: Platform.OS === 'android' ? 34 : 30,\n // }\n // }\n\n // return <SlackMessage {...props} messageTextStyle={messageTextStyle} />;\n return (\n <SlackMessage {...props} isShowImageViewer={isShowImageViewer} setImageViewer={setImageViewerObject} />\n );\n },\n [isShowImageViewer],\n );\n\n // const renderMessage = (props: any) => {\n // // const {\n // // currentMessage: { text: currText },\n // // } = props;\n\n // //let messageTextStyle: any;\n\n // // Make \"pure emoji\" messages much bigger than plain text.\n // // if (currText && emojiUtils.isPureEmojiString(currText)) {\n // // messageTextStyle = {\n // // fontSize: 28,\n // // // Emoji get clipped if lineHeight isn't increased; make it consistent across platforms.\n // // lineHeight: Platform.OS === 'android' ? 34 : 30,\n // // }\n // // }\n\n // // return <SlackMessage {...props} messageTextStyle={messageTextStyle} />;\n // return <SlackMessage {...props} isShowImageViewer={isShowImageViewer} setImageViewer={setImageViewerObject} />;\n // };\n\n let onScroll = false;\n\n const onMomentumScrollBegin = async ({ nativeEvent }: any) => {\n onScroll = true;\n console.log('scroll top');\n if (!loadingOldMessages && isCloseToTop(nativeEvent) && totalCount > channelMessages?.length) {\n await onFetchOld();\n }\n };\n\n const onEndReached = () => {\n console.log('on end reached');\n if (!onScroll) return;\n // load messages, show ActivityIndicator\n onScroll = false;\n // setLoadingOldMessages(true);\n };\n\n return (\n <>\n {loadEarlierMsg && <Spinner color={'$blue500'} />}\n\n <GiftedChat\n ref={messageRootListRef}\n wrapInSafeArea={false}\n renderLoading={() => <Spinner color={'$blue500'} />}\n messages={messageList}\n listViewProps={{\n onEndReached: onEndReached,\n onEndReachedThreshold: 0.5,\n onMomentumScrollBegin: onMomentumScrollBegin,\n }}\n // listViewProps={{\n // scrollEventThrottle: 400,\n // onScroll: ({ nativeEvent }) => { console.log('scroll')\n // if (!loadingOldMessages && isCloseToTop(nativeEvent)) {\n // onFetchOld();\n // }\n // }\n // }}\n onSend={(messages) =>\n rest?.isCreateNewChannel && !channelId\n ? rest?.newChannelData?.type === RoomType?.Direct\n ? createDirectChannel(messages[0]?.text ?? ' ')\n : null\n : channelId && handleSend(messages[0]?.text ?? ' ')\n }\n text={msg ? msg : ' '}\n onInputTextChanged={(text) => setMsg(text)}\n renderFooter={() =>\n loading ? <Spinner color={'$blue500'} /> : imageLoading ? <Spinner color={'$blue500'} /> : ''\n }\n scrollToBottom\n user={{\n // _id: currentUser?.id || '',\n _id: auth?.id || '',\n }}\n isTyping={true}\n alwaysShowSend={loading ? false : true}\n //onLoadEarlier={onFetchOld}\n //infiniteScroll={true}\n renderSend={renderSend}\n // loadEarlier={data?.messages?.totalCount > channelMessages.length}\n //isLoadingEarlier={loadEarlierMsg}\n //extraData={{ isLoadingEarlier: loadingOldMessages }}\n // renderLoadEarlier={() =>\n // !loadEarlierMsg && (\n // <Center py={2}>\n // <Button\n // onPress={() => onFetchOld()}\n // variant={'outline'}\n // _text={{ color: 'black', fontSize: 15, fontWeight: 'bold' }}\n // >\n // Load earlier messages\n // </Button>\n // </Center>\n // )\n // }\n renderMessageText={renderMessageText}\n minInputToolbarHeight={50}\n renderActions={channelId && renderActions}\n renderAccessory={renderAccessory}\n renderMessage={renderMessage}\n renderChatFooter={() => (\n <>\n <ImageViewerModal\n isVisible={isShowImageViewer}\n setVisible={setImageViewer}\n modalContent={modalContent}\n />\n <SubscriptionHandler\n channelId={channelId?.toString()}\n subscribeToNewMessages={() =>\n subscribeToMore({\n document: CHAT_MESSAGE_ADDED,\n variables: {\n channelId: channelId?.toString(),\n },\n updateQuery: (prev, { subscriptionData }: any) => {\n if (!subscriptionData.data) return prev;\n setSkip(0);\n const newMessage: any = subscriptionData?.data?.chatMessageAdded;\n const previousData = prev?.messages?.data\n ? [...prev.messages.data, newMessage]\n : [];\n const totalMsgCount = prev?.messages?.totalCount + 1;\n setChannelMessages((oldMessages: any) =>\n uniqBy([...oldMessages, newMessage], ({ id }) => id),\n );\n setTotalCount(totalMsgCount);\n const merged = {\n ...prev,\n messages: {\n ...prev?.messages,\n data: [...(prev?.messages?.data ?? []), newMessage],\n totalCount: totalMsgCount,\n },\n };\n return merged;\n // return Object.assign({}, prev, {\n // messages: {\n // data: [...prev.messages.data, newMessage],\n // totalCount: prev.messages.totalCount + 1,\n // },\n // });\n },\n })\n }\n />\n </>\n )}\n lightboxProps={{\n underlayColor: 'transparent',\n springConfig: { tension: 90000, friction: 90000 },\n disabled: true,\n }}\n />\n </>\n );\n};\n\nconst SubscriptionHandler = ({ subscribeToNewMessages, channelId }: ISubscriptionHandlerProps) => {\n useEffect(() => subscribeToNewMessages(), [channelId]);\n return <></>;\n};\n\nexport const ConversationView = React.memo(ConversationViewComponent);\n"],"names":["_a","React","data","totalCount","atob","files","images","msg","_b","_c","_d","_e","_f","_g","_h","SlackMessage","CHAT_MESSAGE_ADDED"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dialogs.js","sources":["../../../../src/screens/inbox/containers/Dialogs.tsx"],"sourcesContent":["import React, { useCallback, useMemo, useEffect, useState } from 'react';\nimport {\n FlatList,\n Box,\n Heading,\n Input,\n InputField,\n Text,\n Icon,\n Center,\n Spinner,\n} from '@admin-layout/gluestack-ui-mobile';\nimport { Ionicons } from '@expo/vector-icons';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useNavigation, useRoute, useIsFocused, useFocusEffect } from '@react-navigation/native';\nimport { orderBy, uniqBy, startCase } from 'lodash-es';\nimport { DialogsListItem } from '../components/DialogsListItem';\nimport { ServiceDialogsListItem } from '../components/ServiceDialogsListItem';\nimport {\n useGetChannelsByUserQuery,\n useGetChannelsByUserWithServiceChannelsQuery,\n} from 'common/lib/generated/generated.js';\nimport { RoomType } from 'common';\nimport { userSelector } from '@adminide-stack/user-auth0-client';\nimport { CHANGE_SETTINGS_ACTION } from '@admin-layout/client';\nimport { config } from '../config';\n\nexport interface InboxProps {\n channelFilters?: Record<string, unknown>;\n channelRole?: string;\n supportServices: boolean;\n}\n\nconst DialogsComponent = (props: InboxProps) => {\n const { channelFilters: channelFilterProp, channelRole, supportServices } = props;\n const channelFilters = { ...channelFilterProp };\n channelFilters.type = channelFilters?.type ?? RoomType.Direct;\n const { params } = useRoute<any>();\n const auth = useSelector(userSelector);\n const dispatch = useDispatch();\n const navigation = useNavigation<any>();\n const isFocused = useIsFocused();\n const [refreshing, setRefresh] = useState<boolean>(false);\n // const [userDirectChannel, setUserDirectChannel] = useState<any>([]);\n\n const {\n data: userChannels,\n loading: userChannelsLoading,\n refetch: getChannelsRefetch,\n } = useGetChannelsByUserWithServiceChannelsQuery({\n variables: {\n role: channelRole,\n criteria: channelFilters,\n supportServices: supportServices ? true : false,\n supportServiceCriteria: {\n type: RoomType.Service,\n },\n },\n });\n\n // const {\n // data: userChannels,\n // loading: userChannelsLoading,\n // refetch: getChannelsRefetch,\n // } = useGetChannelsByUserQuery({\n // variables: {\n // role: channelRole,\n // criteria: channelFilters,\n // },\n // onCompleted: (data: any) => {\n // setRefresh(false);\n // },\n // });\n\n useFocusEffect(\n React.useCallback(() => {\n // Do something when the screen is focused\n setRefresh(false);\n //getChannelsRefetch({ role: channelRole, criteria: channelFilters });\n getChannelsRefetch({\n role: channelRole,\n criteria: channelFilters,\n supportServices: supportServices ? true : false,\n supportServiceCriteria: {\n type: RoomType.Service,\n },\n });\n return () => {\n // Do something when the screen is unfocused\n // Useful for cleanup functions\n };\n }, [channelFilters]),\n );\n\n // const channels = React.useMemo(() => {\n // if (!userChannels?.channelsByUser?.length) return null;\n // let uChannels: any =\n // userChannels?.channelsByUser?.filter((c: any) =>\n // c.members.some((u: any) => u !== null && u?.user?.id != auth?.id && u.user.__typename == 'UserAccount'),\n // ) ?? [];\n // return (uChannels && orderBy(uChannels, ['updatedAt'], ['desc'])) || [];\n // }, [userChannels]);\n\n const channels = React.useMemo(() => {\n const allChannels = [...(userChannels?.supportServiceChannels ?? []), ...(userChannels?.channelsByUser ?? [])];\n let uChannels: any =\n allChannels?.filter((c: any) =>\n c.members.some((u: any) => u !== null && u?.user?.id != auth?.id && u.user.__typename == 'UserAccount'),\n ) ?? [];\n return (uChannels && orderBy(uChannels, ['updatedAt'], ['desc'])) || [];\n }, [userChannels]);\n\n // useEffect(() => {\n // setTimeout(() => {\n // dispatch({\n // type: CHANGE_SETTINGS_ACTION,\n // payload: {\n // footerRender: false,\n // },\n // } as any);\n // }, 0);\n // return () => {\n // dispatch({\n // type: CHANGE_SETTINGS_ACTION,\n // payload: {\n // footerRender: true,\n // },\n // } as any);\n // };\n // }, []);\n\n // useEffect(() => {\n // if (userChannels?.channelsByUser) {\n // if (userChannels?.channelsByUser?.length == 0) {\n // setUserDirectChannel([]);\n // }\n // //Direct channel\n // let userDirectChannels: any =\n // userChannels?.channelsByUser\n // ?.filter((i: any) => i.type == 'DIRECT')\n // ?.filter((c: any) =>\n // c.members.some((u: any) => u?.user?.id != auth?.id && u.user.__typename == 'UserAccount'),\n // ) ?? [];\n\n // if (userDirectChannels?.length > 0) setUserDirectChannel(userDirectChannels);\n // }\n // }, [userChannels?.channelsByUser]);\n\n const handleSelectChannel = useCallback((id: any, title: any) => {\n if (params?.channelId) {\n navigation.navigate(config.INBOX_MESSEGE_PATH as any, {\n channelId: params?.channelId,\n role: params?.role,\n title: params?.title ?? null,\n hideTabBar: true,\n });\n } else {\n navigation.navigate(config.INBOX_MESSEGE_PATH as any, {\n channelId: id,\n role: channelRole,\n title: title,\n hideTabBar: true,\n });\n }\n }, []);\n\n const handleSelectServiceChannel = useCallback((id: any, title: any, postParentId: any) => {\n if (params?.channelId) {\n navigation.navigate(\n params?.postParentId || params?.postParentId == 0\n ? config.THREAD_MESSEGE_PATH\n : (config.THREADS_PATH as any),\n {\n channelId: params?.channelId,\n role: params?.role,\n title: params?.title ?? null,\n postParentId: params?.postParentId,\n hideTabBar: true,\n },\n );\n } else {\n navigation.navigate(\n postParentId || postParentId == 0 ? config.THREAD_MESSEGE_PATH : (config.THREADS_PATH as any),\n {\n channelId: id,\n role: channelRole,\n title: title,\n postParentId: postParentId,\n hideTabBar: true,\n },\n );\n }\n }, []);\n\n const handleRefresh = useCallback(() => {\n //if(userChannels?.channelsByUser?.length != channels?.length)setRefresh(true);\n setRefresh(true);\n getChannelsRefetch({ role: channelRole, criteria: channelFilters })?.finally(() => setRefresh(false));\n }, []);\n\n return (\n <Box p={'$2'}>\n <FlatList\n data={channels && channels?.length > 0 ? channels : []}\n onRefresh={handleRefresh}\n refreshing={refreshing}\n contentContainerStyle={{ minHeight: '100%' }}\n ItemSeparatorComponent={() => <Box height=\"$0.5\" backgroundColor=\"$gray200\" />}\n renderItem={({ item: channel }: any) =>\n channel?.type === RoomType.Service ? (\n <ServiceDialogsListItem\n onOpen={handleSelectServiceChannel}\n currentUser={auth}\n channel={channel}\n refreshing={refreshing}\n selectedChannelId={params?.channelId}\n role={channelRole}\n />\n ) : (\n <DialogsListItem\n onOpen={handleSelectChannel}\n currentUser={auth}\n channel={channel}\n selectedChannelId={params?.channelId}\n />\n )\n }\n ListEmptyComponent={() => (\n <>\n {userChannelsLoading ? (\n <Center flex={1} justifyContent=\"center\" alignItems=\"center\">\n <Spinner color={'$blue500'} />\n </Center>\n ) : (\n <Box p={'$5'}>\n <Heading>Chat</Heading>\n <Input\n height={50}\n mt={'$3'}\n borderRadius={50}\n borderColor={'$trueGray200'}\n borderWidth={'$1'}\n >\n <InputField placeholder=\"Search\" />\n </Input>\n <Center mt={'$6'}>\n <Ionicons name=\"chatbubbles\" size={50} />\n <Text>You don't have any messages yet!</Text>\n </Center>\n </Box>\n )}\n </>\n )}\n keyExtractor={(item, index) => 'key' + index}\n />\n </Box>\n );\n};\n\nexport const Dialogs = React.memo(DialogsComponent);\n"],"names":["React","_a"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Dialogs.js","sources":["../../../../src/screens/inbox/containers/Dialogs.tsx"],"sourcesContent":["import React, { useCallback, useMemo, useEffect, useState } from 'react';\nimport {\n FlatList,\n Box,\n Heading,\n Input,\n InputField,\n Text,\n Icon,\n Center,\n Spinner,\n} from '@admin-layout/gluestack-ui-mobile';\nimport { Ionicons } from '@expo/vector-icons';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useNavigation, useRoute, useIsFocused, useFocusEffect } from '@react-navigation/native';\nimport { orderBy, uniqBy, startCase } from 'lodash-es';\nimport { DialogsListItem } from '../components/DialogsListItem';\nimport { ServiceDialogsListItem } from '../components/ServiceDialogsListItem';\nimport {\n useGetChannelsByUserQuery,\n useGetChannelsByUserWithServiceChannelsQuery,\n} from 'common/lib/generated/generated.js';\nimport { RoomType } from 'common';\nimport { userSelector } from '@adminide-stack/user-auth0-client';\nimport { CHANGE_SETTINGS_ACTION } from '@admin-layout/client';\nimport { config } from '../config';\n\nexport interface InboxProps {\n channelFilters?: Record<string, unknown>;\n channelRole?: string;\n supportServices: boolean;\n}\n\nconst DialogsComponent = (props: InboxProps) => {\n const { channelFilters: channelFilterProp, channelRole, supportServices } = props;\n const channelFilters = { ...channelFilterProp };\n channelFilters.type = channelFilters?.type ?? RoomType.Direct;\n const { params } = useRoute<any>();\n const auth = useSelector(userSelector);\n const dispatch = useDispatch();\n const navigation = useNavigation<any>();\n const isFocused = useIsFocused();\n const [refreshing, setRefresh] = useState<boolean>(false);\n // const [userDirectChannel, setUserDirectChannel] = useState<any>([]);\n\n const {\n data: userChannels,\n loading: userChannelsLoading,\n refetch: getChannelsRefetch,\n } = useGetChannelsByUserWithServiceChannelsQuery({\n variables: {\n role: channelRole,\n criteria: channelFilters,\n supportServices: supportServices ? true : false,\n supportServiceCriteria: {\n type: RoomType.Service,\n },\n },\n });\n\n // const {\n // data: userChannels,\n // loading: userChannelsLoading,\n // refetch: getChannelsRefetch,\n // } = useGetChannelsByUserQuery({\n // variables: {\n // role: channelRole,\n // criteria: channelFilters,\n // },\n // onCompleted: (data: any) => {\n // setRefresh(false);\n // },\n // });\n\n useFocusEffect(\n React.useCallback(() => {\n // Do something when the screen is focused\n setRefresh(false);\n //getChannelsRefetch({ role: channelRole, criteria: channelFilters });\n getChannelsRefetch({\n role: channelRole,\n criteria: channelFilters,\n supportServices: supportServices ? true : false,\n supportServiceCriteria: {\n type: RoomType.Service,\n },\n });\n return () => {\n // Do something when the screen is unfocused\n // Useful for cleanup functions\n };\n }, [channelFilters]),\n );\n\n // const channels = React.useMemo(() => {\n // if (!userChannels?.channelsByUser?.length) return null;\n // let uChannels: any =\n // userChannels?.channelsByUser?.filter((c: any) =>\n // c.members.some((u: any) => u !== null && u?.user?.id != auth?.id && u.user.__typename == 'UserAccount'),\n // ) ?? [];\n // return (uChannels && orderBy(uChannels, ['updatedAt'], ['desc'])) || [];\n // }, [userChannels]);\n\n const channels = React.useMemo(() => {\n const allChannels = [...(userChannels?.supportServiceChannels ?? []), ...(userChannels?.channelsByUser ?? [])];\n let uChannels: any =\n allChannels?.filter((c: any) =>\n c.members.some((u: any) => u !== null && u?.user?.id != auth?.id && u.user.__typename == 'UserAccount'),\n ) ?? [];\n return (uChannels && orderBy(uChannels, ['updatedAt'], ['desc'])) || [];\n }, [userChannels]);\n\n // useEffect(() => {\n // setTimeout(() => {\n // dispatch({\n // type: CHANGE_SETTINGS_ACTION,\n // payload: {\n // footerRender: false,\n // },\n // } as any);\n // }, 0);\n // return () => {\n // dispatch({\n // type: CHANGE_SETTINGS_ACTION,\n // payload: {\n // footerRender: true,\n // },\n // } as any);\n // };\n // }, []);\n\n // useEffect(() => {\n // if (userChannels?.channelsByUser) {\n // if (userChannels?.channelsByUser?.length == 0) {\n // setUserDirectChannel([]);\n // }\n // //Direct channel\n // let userDirectChannels: any =\n // userChannels?.channelsByUser\n // ?.filter((i: any) => i.type == 'DIRECT')\n // ?.filter((c: any) =>\n // c.members.some((u: any) => u?.user?.id != auth?.id && u.user.__typename == 'UserAccount'),\n // ) ?? [];\n\n // if (userDirectChannels?.length > 0) setUserDirectChannel(userDirectChannels);\n // }\n // }, [userChannels?.channelsByUser]);\n\n const handleSelectChannel = useCallback((id: any, title: any) => {\n if (params?.channelId) {\n navigation.navigate(config.INBOX_MESSEGE_PATH as any, {\n channelId: params?.channelId,\n role: params?.role,\n title: params?.title ?? null,\n hideTabBar: true,\n });\n } else {\n navigation.navigate(config.INBOX_MESSEGE_PATH as any, {\n channelId: id,\n role: channelRole,\n title: title,\n hideTabBar: true,\n });\n }\n }, []);\n\n const handleSelectServiceChannel = useCallback((id: any, title: any, postParentId: any) => {\n if (params?.channelId) {\n navigation.navigate(\n params?.postParentId || params?.postParentId == 0\n ? config.THREAD_MESSEGE_PATH\n : (config.THREADS_PATH as any),\n {\n channelId: params?.channelId,\n role: params?.role,\n title: params?.title ?? null,\n postParentId: params?.postParentId,\n hideTabBar: true,\n },\n );\n } else {\n navigation.navigate(\n postParentId || postParentId == 0 ? config.THREAD_MESSEGE_PATH : (config.THREADS_PATH as any),\n {\n channelId: id,\n role: channelRole,\n title: title,\n postParentId: postParentId,\n hideTabBar: true,\n },\n );\n }\n }, []);\n\n const handleRefresh = useCallback(() => {\n //if(userChannels?.channelsByUser?.length != channels?.length)setRefresh(true);\n setRefresh(true);\n getChannelsRefetch({ role: channelRole, criteria: channelFilters })?.finally(() => setRefresh(false));\n }, []);\n\n return (\n <Box p={'$2'}>\n <FlatList\n data={channels && channels?.length > 0 ? channels : []}\n onRefresh={handleRefresh}\n refreshing={refreshing}\n contentContainerStyle={{ minHeight: '100%' }}\n ItemSeparatorComponent={() => <Box height=\"$0.5\" backgroundColor=\"$gray200\" />}\n renderItem={({ item: channel }: any) =>\n channel?.type === RoomType.Service ? (\n <ServiceDialogsListItem\n onOpen={handleSelectServiceChannel}\n currentUser={auth}\n channel={channel}\n refreshing={refreshing}\n selectedChannelId={params?.channelId}\n role={channelRole}\n />\n ) : (\n <DialogsListItem\n onOpen={handleSelectChannel}\n currentUser={auth}\n channel={channel}\n selectedChannelId={params?.channelId}\n />\n )\n }\n ListEmptyComponent={() => (\n <>\n {userChannelsLoading ? (\n <Center flex={1} justifyContent=\"center\" alignItems=\"center\">\n <Spinner color={'$blue500'} />\n </Center>\n ) : (\n <Box p={'$5'}>\n <Heading>Chat</Heading>\n <Input\n height={50}\n mt={'$3'}\n borderRadius={50}\n borderColor={'$trueGray200'}\n borderWidth={'$1'}\n >\n <InputField placeholder=\"Search\" />\n </Input>\n <Center mt={'$6'}>\n <Ionicons name=\"chatbubbles\" size={50} />\n <Text>You don't have any messages yet!</Text>\n </Center>\n </Box>\n )}\n </>\n )}\n keyExtractor={(item, index) => 'key' + index}\n />\n </Box>\n );\n};\n\nexport const Dialogs = React.memo(DialogsComponent);\n"],"names":["React","_a"],"mappings":"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"}
|