@messenger-box/platform-mobile 10.0.3-alpha.16 → 10.0.3-alpha.18

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 (31) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/lib/routes.json +14 -1
  3. package/lib/screens/inbox/components/CachedImage/consts.js +1 -1
  4. package/lib/screens/inbox/components/CachedImage/consts.js.map +1 -1
  5. package/lib/screens/inbox/components/CachedImage/index.js +125 -16
  6. package/lib/screens/inbox/components/CachedImage/index.js.map +1 -1
  7. package/lib/screens/inbox/components/SlackMessageContainer/SlackBubble.js +32 -21
  8. package/lib/screens/inbox/components/SlackMessageContainer/SlackBubble.js.map +1 -1
  9. package/lib/screens/inbox/containers/ConversationView.js +1175 -400
  10. package/lib/screens/inbox/containers/ConversationView.js.map +1 -1
  11. package/lib/screens/inbox/containers/Dialogs.js +290 -21
  12. package/lib/screens/inbox/containers/Dialogs.js.map +1 -1
  13. package/lib/screens/inbox/containers/ThreadConversationView.js +858 -351
  14. package/lib/screens/inbox/containers/ThreadConversationView.js.map +1 -1
  15. package/lib/screens/inbox/containers/workflow/conversation-xstate.js +380 -0
  16. package/lib/screens/inbox/containers/workflow/conversation-xstate.js.map +1 -0
  17. package/lib/screens/inbox/containers/workflow/dialogs-xstate.js +235 -0
  18. package/lib/screens/inbox/containers/workflow/dialogs-xstate.js.map +1 -0
  19. package/lib/screens/inbox/containers/workflow/thread-conversation-xstate.js +438 -0
  20. package/lib/screens/inbox/containers/workflow/thread-conversation-xstate.js.map +1 -0
  21. package/package.json +4 -4
  22. package/src/screens/inbox/components/CachedImage/consts.ts +4 -3
  23. package/src/screens/inbox/components/CachedImage/index.tsx +137 -17
  24. package/src/screens/inbox/components/SlackMessageContainer/SlackBubble.tsx +35 -9
  25. package/src/screens/inbox/containers/ConversationView.tsx +1510 -641
  26. package/src/screens/inbox/containers/Dialogs.tsx +415 -123
  27. package/src/screens/inbox/containers/ThreadConversationView.tsx +1053 -288
  28. package/src/screens/inbox/containers/workflow/apollo/handleResult.ts +20 -0
  29. package/src/screens/inbox/containers/workflow/conversation-xstate.ts +313 -0
  30. package/src/screens/inbox/containers/workflow/dialogs-xstate.ts +196 -0
  31. package/src/screens/inbox/containers/workflow/thread-conversation-xstate.ts +401 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadConversationView.js","sources":["../../../../src/screens/inbox/containers/ThreadConversationView.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n Center,\n Avatar,\n AvatarFallbackText,\n AvatarImage,\n Box,\n Button,\n ButtonText,\n VStack,\n HStack,\n Icon,\n Image,\n Spinner,\n Text,\n} from '@admin-layout/gluestack-ui-mobile';\nimport { Platform } from 'react-native';\nimport { useFocusEffect, useNavigation, useRoute } from '@react-navigation/native';\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, MaterialIcons } from '@expo/vector-icons';\nimport { Actions, GiftedChat, IMessage, MessageText, Send } from 'react-native-gifted-chat';\nimport { IPost, IPostThread, PreDefinedRole, IExpoNotificationData, IFileInfo } from 'common';\nimport {\n OnThreadChatMessageAddedDocument as CHAT_MESSAGE_ADDED,\n useCreatePostThreadMutation,\n useOnThreadChatMessageAddedSubscription,\n useSendExpoNotificationOnPostMutation,\n useSendThreadMessageMutation,\n useThreadMessagesLazyQuery,\n useGetPostThreadLazyQuery,\n} from 'common/graphql';\nimport { useUploadFilesNative } from '@messenger-box/platform-client';\nimport { objectId } from '@messenger-box/core';\nimport { format, isToday, isYesterday } from 'date-fns';\nimport { userSelector } from '@adminide-stack/user-auth0-client';\nimport { config } from '../config';\nimport { ImageViewerModal, SlackMessage } from '../components/SlackMessageContainer';\nimport CachedImage from '../components/CachedImage';\nimport colors from 'tailwindcss/colors';\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 IMessageProps extends IMessage {\n type: string;\n propsConfiguration?: any;\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\ninterface IThreadSubscriptionHandlerProps {\n subscribeToNewMessages: () => any;\n channelId: string;\n}\n\nconst ThreadConversationViewComponent = ({ channelId, postParentId, isPostParentIdThread, role }: any) => {\n const { params } = useRoute<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 [loadingOldMessages, setLoadingOldMessages] = useState<boolean>(false);\n const [loadEarlierMsg, setLoadEarlierMsg] = useState(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 [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 [parentId, setParentId] = useState<any>(postParentId);\n const [postThread, setPostThread] = useState<IPostThread>();\n const { startUpload } = useUploadFilesNative();\n const [threadPost, setThreadPost] = useState<any[]>([]);\n const [isScrollToBottom, setIsScrollToBottom] = useState(false);\n const threadMessageListRef = useRef<any>(null);\n\n // const [sendThreadMessage] = useSendThreadMessageMutation();\n const [sendThreadMessage] = useCreatePostThreadMutation();\n const [sendExpoNotificationOnPostMutation] = useSendExpoNotificationOnPostMutation();\n\n const [\n getThreadMessages,\n { data, loading: threadLoading, fetchMore: fetchMoreMessages, refetch: refetchThreadMessages, subscribeToMore },\n ] = useGetPostThreadLazyQuery({ fetchPolicy: 'cache-and-network' });\n\n useFocusEffect(\n React.useCallback(() => {\n // navigation?.setOptions({ title: params?.title ?? 'Thread' });\n\n navigation.setOptions({\n title: params?.title ?? 'Thread',\n headerLeft: (props: any) => (\n <Button className=\"bg-transparent active:bg-gray-200 \" onPress={() => navigation.goBack()}>\n <MaterialIcons size={20} name=\"arrow-back-ios\" color={'black'} />\n </Button>\n ),\n });\n if (postParentId) {\n refetchThreadMessages({\n channelId: channelId?.toString(),\n role: role?.toString(),\n postParentId: postParentId?.toString(),\n selectedFields: 'id channel post replies replyCount lastReplyAt createdAt updatedAt',\n limit: MESSAGES_PER_PAGE,\n });\n }\n setParentId(postParentId);\n\n return () => {\n setTotalCount(0);\n setChannelMessages([]);\n setThreadPost([]);\n };\n }, [postParentId]),\n );\n\n useEffect(() => {\n //if (parentId && parentId == 0) {\n if (channelId && parentId) {\n getThreadMessages({\n variables: {\n channelId: channelId?.toString(),\n role: role?.toString(),\n postParentId: !parentId || parentId == 0 ? null : parentId?.toString(),\n selectedFields: 'id channel post replies replyCount lastReplyAt createdAt updatedAt',\n limit: MESSAGES_PER_PAGE,\n },\n });\n }\n }, [parentId]);\n\n React.useEffect(() => {\n if (data?.getPostThread) {\n const threads: any = data.getPostThread;\n const threadPost = threads?.post ?? [];\n const threadReplies = threads?.replies ?? [];\n const messeageTotalCount = threads?.replyCount ?? 0;\n const messages = [threadPost, ...threadReplies];\n\n if (\n (messages && messages.length > 0 && messeageTotalCount > totalCount) ||\n (messages && messages.length > 0 && channelMessages.length === 0)\n ) {\n setThreadMessages(messages, messeageTotalCount);\n }\n }\n if (isScrollToBottom && channelMessages) scrollToBottom();\n // scrollToBottom();\n // if (!isPostParentIdThread) {\n // // setTotalCount((pc: any) => pc + threadTotalCount);\n // setChannelMessages((oldMessages: any) => uniqBy([...threadMessage, ...oldMessages], ({ id }) => id));\n // }\n }, [data, channelMessages, loadingOldMessages, totalCount, isPostParentIdThread, isScrollToBottom]);\n\n const setThreadMessages = (messages: any, messagesTotalCount: number) => {\n setChannelMessages((oldMessages: any) => uniqBy([...messages, ...oldMessages], ({ id }) => id));\n setTotalCount(messagesTotalCount);\n };\n\n React.useEffect(() => {\n if (selectedImage) setImageLoading(false);\n }, [selectedImage]);\n\n const scrollToBottom = React.useCallback(() => {\n if (threadMessageListRef?.current) {\n setIsScrollToBottom(false);\n threadMessageListRef.current.scrollTop = threadMessageListRef.current.scrollHeight;\n }\n }, [threadMessageListRef]);\n\n const onFetchOld = useCallback(() => {\n if (totalCount > channelMessages.length && !loadingOldMessages) {\n setLoadEarlierMsg(true);\n fetchMoreMessages({\n variables: {\n channelId: channelId?.toString(),\n role: role?.toString(),\n postParentId: parentId?.toString(),\n selectedFields: 'id channel post replies replyCount lastReplyAt createdAt updatedAt',\n limit: MESSAGES_PER_PAGE,\n skip: channelMessages.length - 1,\n },\n })\n .then((res: any) => {\n if (res?.data?.getPostThread) {\n const threads: any = res?.data?.getPostThread;\n const threadReplies = threads?.replies ?? [];\n const messeageTotalCount = threads?.replyCount ?? 0;\n setThreadMessages(threadReplies, messeageTotalCount);\n }\n })\n .finally(() => {\n setLoadEarlierMsg(false);\n setLoadingOldMessages(false);\n })\n .catch((error: any) => {\n setLoadEarlierMsg(false);\n setLoadingOldMessages(false);\n });\n }\n }, [parentId, channelId, 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.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 if (imageSource.canceled) setLoading(false);\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 postId = objectId();\n\n if (images && images.length > 0) {\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 if (uploadResponse.data) {\n setImage('');\n setFiles([]);\n setImages([]);\n //setLoading(false);\n const files = uploadedFiles?.map((f: any) => f.id) ?? null;\n await sendThreadMessage({\n variables: {\n postId,\n channelId,\n postThreadId: postThread && postThread?.id,\n postParentId: !parentId || parentId == 0 ? null : parentId,\n threadMessageInput: {\n content: message,\n files,\n role,\n },\n },\n update: (cache, { data, errors }: any) => {\n if (!data || errors) {\n setLoading(false);\n return;\n }\n setPostThread(data?.createPostThread?.data);\n const lastMessageId = data?.createPostThread?.lastMessage?.id;\n if (!parentId || parentId == 0) {\n setParentId(data?.createPostThread?.lastMessage?.id);\n }\n\n setChannelToTop(channelToTop + 1);\n setLoading(false);\n setMsg('');\n const msg = message == '' ? 'Send a file' : message;\n sendPushNotification(lastMessageId, channelId, parentId, data?.createPostThread?.data?.id);\n },\n });\n }\n } else {\n setLoading(true);\n await sendThreadMessage({\n variables: {\n channelId,\n postThreadId: postThread && postThread?.id,\n postParentId: !parentId || parentId == 0 ? null : parentId,\n threadMessageInput: {\n content: message,\n role,\n },\n },\n update: (cache, { data, errors }: any) => {\n if (!data || errors) {\n setLoading(false);\n return;\n }\n setPostThread(data?.createPostThread.data);\n const lastMessageId = data?.createPostThread?.lastMessage?.id;\n if (!parentId || parentId == 0) {\n setParentId(data?.createPostThread?.lastMessage?.id);\n }\n setChannelToTop(channelToTop + 1);\n setLoading(false);\n setMsg('');\n\n sendPushNotification(lastMessageId, channelId, parentId, data?.createPostThread?.data?.id);\n },\n });\n }\n },\n [setChannelMessages, channelId, images, parentId, expoTokens],\n );\n\n const sendPushNotification = async (messageId: string, channelId: string, parentId: any, threadId: string) => {\n const notificationData: IExpoNotificationData = {\n url: config.THREAD_MESSEGE_PATH,\n params: { channelId, title: params?.title ?? 'Thread', postParentId: parentId, hideTabBar: true },\n screen: 'DialogThreadMessages',\n thread: { id: threadId },\n other: { sound: Platform.OS === 'android' ? undefined : 'default' },\n };\n if (parentId || parentId == 0) {\n await sendExpoNotificationOnPostMutation({\n variables: {\n postId: messageId?.toString(),\n notificationData,\n },\n });\n }\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 (filteredMessages?.length) {\n orderBy(filteredMessages, ['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 ?? auth?.profile?.id,\n name:\n msg?.author?.givenName ??\n auth?.profile?.given_name + ' ' + msg?.author?.familyName ??\n auth?.profile?.family_name,\n avatar: msg?.author?.picture ?? auth?.profile?.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 res.push(message);\n });\n }\n return res?.length > 0 ? uniqBy([...res], ({ _id }: any) => _id) : [];\n //return res;\n }, [channelMessages]);\n\n const renderSend = (props) => {\n return (\n <Send {...props}>\n <Box>\n <MaterialCommunityIcons\n name=\"send-circle\"\n style={{ marginBottom: 5, marginRight: 5 }}\n size={32}\n color=\"#2e64e5\"\n />\n </Box>\n </Send>\n );\n };\n\n const renderMessageText = (props: any) => {\n const { currentMessage } = props;\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 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 // if (attachment?.callToAction?.link?.includes('my-reservation-details')) {\n // action = CALL_TO_ACTION_PATH;\n // actionId = attachment?.callToAction?.link.split('/').pop();\n // }\n\n return (\n <>\n {attachment?.callToAction && action ? (\n <Box className={`bg-[${CALL_TO_ACTION_BOX_BGCOLOR}] rounded-[15] pb-2`}>\n <Button\n variant={'outline'}\n size={'sm'}\n className={`border-[${CALL_TO_ACTION_BUTTON_BORDERCOLOR}]`}\n onPress={() => action && params && navigation.navigate(action, params)}\n //onPress={() => navigation.navigate(action, { reservationId: actionId })}\n >\n <ButtonText className={`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 <MessageText {...props} textStyle={{ left: { marginLeft: 5 } }} />\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 <MessageText {...props} textStyle={{ left: { marginLeft: 5 } }} />;\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 className=\"items-center\">\n <Image\n className=\"ml-3\"\n key={selectedImage}\n alt={'image'}\n source={{ uri: selectedImage }}\n size={'xs'}\n />\n <Button\n variant={'solid'}\n className=\"bg-transparent\"\n onPress={() => {\n setFiles([]);\n setImage('');\n setImages([]);\n }}\n >\n <ButtonText className=\"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 = (props: any) => {\n return <SlackMessage {...props} isShowImageViewer={isShowImageViewer} setImageViewer={setImageViewerObject} />;\n };\n\n let onScroll = false;\n\n const onMomentumScrollBegin = ({ nativeEvent }: any) => {\n onScroll = true;\n console.log('scroll top');\n if (!loadingOldMessages && isCloseToTop(nativeEvent) && totalCount > channelMessages?.length) {\n 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 {(loadingOldMessages || loadEarlierMsg) && <Spinner color={colors.blue[500]} />}\n {/* {loadEarlierMsg && <Spinner />} */}\n {isPostParentIdThread && (\n <>\n {threadPost?.length > 0 && (\n <>\n <VStack className=\"px-2 pt-2 pb-0\" space={'sm'}>\n <HStack space={'sm'} className=\"items-center\">\n <Avatar className=\"bg-transparent\" size={'md'}>\n <AvatarFallbackText>\n {startCase(threadPost[0]?.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: threadPost[0]?.author?.picture,\n }}\n />\n </Avatar>\n <Box>\n <Text className=\"font-bold color-black\">\n {threadPost[0]?.author?.givenName ?? ''}{' '}\n {threadPost[0]?.author?.familyName ?? ''}\n </Text>\n <Text className=\"pl-0 color-gray-500\">\n {createdAtText(threadPost[0]?.createdAt)} at{' '}\n {format(new Date(threadPost[0]?.createdAt), 'hh:ss:a')}\n </Text>\n </Box>\n </HStack>\n <HStack space={'sm'} className=\"px-2 items-center\">\n <Text>{threadPost[0]?.message ?? ''}</Text>\n </HStack>\n </VStack>\n\n <Box className=\"py-4\">\n <Box className=\"px-4 py-2 border-t border-b border-gray-200\">\n <Text className=\"font-bold color-gray-600\">\n {threadPost[0]?.replies?.totalCount}{' '}\n {threadPost[0]?.replies?.totalCount > 0 ? 'replies' : 'reply'}\n </Text>\n </Box>\n </Box>\n </>\n )}\n </>\n )}\n <GiftedChat\n ref={threadMessageListRef}\n wrapInSafeArea={false}\n renderLoading={() => <Spinner color={colors.blue[500]} />}\n messages={messageList}\n listViewProps={{\n onEndReached: onEndReached,\n onEndReachedThreshold: 0.5,\n onMomentumScrollBegin: onMomentumScrollBegin,\n }}\n onSend={(messages) => handleSend(messages[0]?.text ?? ' ')}\n text={msg ? msg : ' '}\n onInputTextChanged={(text) => setMsg(text)}\n renderFooter={() =>\n loading ? (\n <Spinner color={colors.blue[500]} />\n ) : imageLoading ? (\n <Spinner color={colors.blue[500]} />\n ) : (\n ''\n )\n }\n scrollToBottom\n user={{\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 // renderLoadEarlier={() =>\n // !loadEarlierMsg && (\n // <Center py={2}>\n // <Button\n // onPress={() => onFetchOld(channelMessages?.length)}\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={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}\n subscribeToNewMessages={() =>\n subscribeToMore({\n document: CHAT_MESSAGE_ADDED,\n variables: {\n channelId: channelId?.toString(),\n postParentId: !parentId || parentId == 0 ? null : parentId?.toString(),\n },\n updateQuery: (prev, { subscriptionData }: any) => {\n if (!subscriptionData.data) return prev;\n const newMessage: any = subscriptionData?.data?.threadChatMessageAdded;\n const prevReplyCount: any = prev?.getPostThread?.replyCount;\n const newReplyCount = prevReplyCount || 0 + 1;\n const replies = prev?.getPostThread?.replies || [];\n setChannelMessages((oldMessages: any) =>\n uniqBy([...oldMessages, newMessage], ({ id }) => id),\n );\n setTotalCount(newReplyCount);\n return Object.assign({}, prev, {\n getPostThread: {\n ...prev?.getPostThread,\n lastReplyAt: newMessage.createdAt,\n replies: [newMessage, ...replies],\n replyCount: newReplyCount,\n updatedAt: newMessage.createdAt,\n },\n });\n },\n })\n }\n />\n </>\n )}\n messagesContainerStyle={messageList?.length == 0 && { transform: [{ scaleY: -1 }] }}\n renderChatEmpty={() => (\n <>\n {!threadLoading && messageList && messageList?.length == 0 && (\n <Box className=\"p-5\">\n <Center className=\"mt-6\">\n <Ionicons name=\"chatbubbles\" size={30} />\n <Text>You don't have any message yet!</Text>\n </Center>\n </Box>\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 }: IThreadSubscriptionHandlerProps) => {\n useEffect(() => subscribeToNewMessages(), [channelId]);\n return <></>;\n};\n\nexport const ThreadConversationView = ThreadConversationViewComponent;\n// export const ThreadConversationView = React.memo(ThreadConversationViewComponent);\n"],"names":["React","_a","_b","_c","threadPost","_d","atob","files","images","data","_e","_f","_g","channelId","parentId","msg","_h","_i","_j","_k","_l","_m","_n","_o","_p","_q","_r","_s","params","SlackMessage","CHAT_MESSAGE_ADDED"],"mappings":"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"}
1
+ {"version":3,"file":"ThreadConversationView.js","sources":["../../../../src/screens/inbox/containers/ThreadConversationView.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n Center,\n Avatar,\n AvatarFallbackText,\n AvatarImage,\n Box,\n Button,\n ButtonText,\n VStack,\n HStack,\n Icon,\n Image,\n Spinner,\n Text,\n} from '@admin-layout/gluestack-ui-mobile';\nimport { Platform, Linking, SafeAreaView, View, TouchableHighlight } from 'react-native';\nimport { useFocusEffect, useNavigation, useRoute } from '@react-navigation/native';\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, MaterialIcons } from '@expo/vector-icons';\nimport { Actions, GiftedChat, IMessage, MessageText, Send, Composer, InputToolbar } from 'react-native-gifted-chat';\nimport { IPost, IPostThread, PreDefinedRole, IExpoNotificationData, IFileInfo } from 'common';\nimport {\n OnThreadChatMessageAddedDocument as CHAT_MESSAGE_ADDED,\n useCreatePostThreadMutation,\n useOnThreadChatMessageAddedSubscription,\n useSendExpoNotificationOnPostMutation,\n useSendThreadMessageMutation,\n useThreadMessagesLazyQuery,\n useGetPostThreadLazyQuery,\n} from 'common/graphql';\nimport { useUploadFilesNative } from '@messenger-box/platform-client';\nimport { objectId } from '@messenger-box/core';\nimport { format, isToday, isYesterday } from 'date-fns';\nimport { userSelector } from '@adminide-stack/user-auth0-client';\nimport { config } from '../config';\nimport { ImageViewerModal, SlackMessage } from '../components/SlackMessageContainer';\nimport CachedImage from '../components/CachedImage';\nimport colors from 'tailwindcss/colors';\nimport {\n threadConversationXstate,\n Actions as ThreadActions,\n BaseState,\n MainState,\n} from './workflow/thread-conversation-xstate';\n\n// Define an extended interface for ImagePickerAsset with url property\ninterface ExtendedImagePickerAsset extends ImagePicker.ImagePickerAsset {\n url?: string;\n fileName?: string;\n mimeType?: string;\n}\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\n// Create a safer version of useMachine to handle potential errors\nfunction useSafeMachine(machine) {\n // Define the state type\n interface SafeStateType {\n context: {\n channelId: any;\n postParentId: any;\n role: any;\n threadMessages: any[];\n totalCount: number;\n skip: number;\n loading: boolean;\n loadingOldMessages: boolean;\n error: any;\n selectedImage: string;\n files: any[];\n images: any[];\n messageText: string;\n imageLoading: boolean;\n postThread: any;\n threadPost: any[];\n isScrollToBottom: boolean;\n };\n value: string;\n matches?: (stateValue: string) => boolean;\n }\n\n // Initialize with default state\n const [state, setState] = useState<SafeStateType>({\n context: {\n channelId: null,\n postParentId: null,\n role: null,\n threadMessages: [],\n totalCount: 0,\n skip: 0,\n loading: false,\n loadingOldMessages: false,\n error: null,\n selectedImage: '',\n files: [],\n images: [],\n messageText: '',\n imageLoading: false,\n postThread: null,\n threadPost: [],\n isScrollToBottom: false,\n },\n value: 'idle',\n });\n\n // Create a safe send function\n const send = useCallback((event) => {\n try {\n // Log event for debugging\n console.log('Thread Event received:', event.type);\n\n // Handle specific events manually\n if (event.type === ThreadActions.INITIAL_CONTEXT) {\n setState((prev) => ({\n ...prev,\n context: {\n ...prev.context,\n channelId: event.data?.channelId || null,\n postParentId: event.data?.postParentId || null,\n role: event.data?.role || null,\n },\n value: BaseState.FetchThreadMessages,\n }));\n } else if (event.type === ThreadActions.SET_THREAD_MESSAGES) {\n setState((prev) => ({\n ...prev,\n context: {\n ...prev.context,\n threadMessages: event.data?.messages || [],\n totalCount: event.data?.totalCount || 0,\n loading: false,\n loadingOldMessages: false,\n threadPost: event.data?.threadPost || [],\n postThread: event.data?.postThread || null,\n },\n value: 'active',\n }));\n } else if (event.type === ThreadActions.CLEAR_MESSAGES) {\n setState((prev) => ({\n ...prev,\n context: {\n ...prev.context,\n threadMessages: [],\n totalCount: 0,\n },\n }));\n } else if (event.type === ThreadActions.SET_MESSAGE_TEXT) {\n setState((prev) => ({\n ...prev,\n context: {\n ...prev.context,\n messageText: event.data?.messageText || '',\n },\n }));\n } else if (event.type === ThreadActions.FETCH_MORE_MESSAGES) {\n setState((prev) => ({\n ...prev,\n context: {\n ...prev.context,\n loadingOldMessages: true,\n },\n value: MainState.FetchMoreMessages,\n }));\n } else if (event.type === ThreadActions.SET_IMAGE) {\n setState((prev) => ({\n ...prev,\n context: {\n ...prev.context,\n selectedImage: event.data?.image || '',\n images: event.data?.images || [],\n files: event.data?.files || [],\n imageLoading: false,\n },\n }));\n } else if (event.type === ThreadActions.CLEAR_IMAGE) {\n setState((prev) => ({\n ...prev,\n context: {\n ...prev.context,\n selectedImage: '',\n images: [],\n files: [],\n },\n }));\n } else if (event.type === ThreadActions.START_LOADING) {\n setState((prev) => ({\n ...prev,\n context: {\n ...prev.context,\n loading: true,\n },\n }));\n } else if (event.type === ThreadActions.STOP_LOADING) {\n setState((prev) => ({\n ...prev,\n context: {\n ...prev.context,\n loading: false,\n },\n }));\n } else if (event.type === ThreadActions.SEND_THREAD_MESSAGE) {\n console.log('Sending message event with text:', event.data?.messageText);\n setState((prev) => ({\n ...prev,\n context: {\n ...prev.context,\n loading: true,\n // Keep the message text until we're done sending\n messageText: event.data?.messageText || prev.context.messageText,\n },\n value: MainState.SendThreadMessage,\n }));\n } else if (event.type === ThreadActions.SEND_THREAD_MESSAGE_WITH_FILE) {\n console.log('Sending message with file event, text:', event.data?.messageText);\n setState((prev) => ({\n ...prev,\n context: {\n ...prev.context,\n loading: true,\n // Keep the message text until we're done sending\n messageText: event.data?.messageText || prev.context.messageText,\n },\n value: MainState.SendThreadMessageWithFile,\n }));\n } else if (\n event.type === 'SEND_THREAD_MESSAGE_SUCCESS' ||\n event.type === 'SEND_THREAD_MESSAGE_WITH_FILE_SUCCESS'\n ) {\n console.log('Handling send success event:', event.type, 'with message:', event.data?.message?.id);\n setState((prev) => {\n // Make sure we have the message data\n if (!event.data?.message) {\n console.warn('Send success event without message data');\n return {\n ...prev,\n context: {\n ...prev.context,\n loading: false,\n messageText: '', // Clear input\n images: [],\n selectedImage: '',\n files: [],\n },\n value: 'active',\n };\n }\n\n // Add the new message to our threadMessages\n const newMessage = event.data.message;\n const updatedMessages = [newMessage, ...prev.context.threadMessages];\n\n console.log('Updated thread messages list after send, now has', updatedMessages.length, 'messages');\n\n return {\n ...prev,\n context: {\n ...prev.context,\n loading: false,\n messageText: '', // Always clear input text after sending\n images: [],\n selectedImage: '',\n files: [],\n threadMessages: updatedMessages,\n totalCount: prev.context.totalCount + 1,\n },\n value: 'active',\n };\n });\n } else if (event.type === 'FETCH_MORE_MESSAGES_SUCCESS') {\n setState((prev) => {\n const newMessages = event.data?.messages || [];\n return {\n ...prev,\n context: {\n ...prev.context,\n loadingOldMessages: false,\n threadMessages: uniqBy([...prev.context.threadMessages, ...newMessages], ({ id }) => id),\n },\n value: 'active',\n };\n });\n } else if (event.type === 'ERROR') {\n setState((prev) => ({\n ...prev,\n context: {\n ...prev.context,\n loading: false,\n loadingOldMessages: false,\n error: event.data?.message || 'Unknown error',\n },\n value: 'error',\n }));\n }\n } catch (error) {\n console.error('Error in thread conversation send function:', error);\n }\n }, []);\n\n // Add a custom matches function to the state\n const stateWithMatches = useMemo(() => {\n return {\n ...state,\n matches: (checkState) => {\n return state.value === checkState;\n },\n };\n }, [state]);\n\n // Return as a tuple to match useMachine API\n return [stateWithMatches, send] as const;\n}\n\ninterface IMessageProps extends IMessage {\n type: string;\n propsConfiguration?: any;\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\ninterface IThreadSubscriptionHandlerProps {\n subscribeToNewMessages: () => any;\n channelId: string;\n}\n\nconst ThreadConversationViewComponent = ({ channelId, postParentId, isPostParentIdThread, role }: any): JSX.Element => {\n const { params } = useRoute<any>();\n const [channelToTop, setChannelToTop] = useState(0);\n\n // Create a ref to track if component is mounted\n const isMountedRef = useRef(true);\n\n // Use our safer custom implementation instead of the problematic useMachine\n const [state, send] = useSafeMachine(threadConversationXstate);\n\n // Define safe functions first to avoid \"used before declaration\" errors\n const safeContext = useCallback(() => {\n try {\n return state?.context || {};\n } catch (error) {\n console.error('Error accessing state.context:', error);\n return {};\n }\n }, [state]);\n\n const safeContextProperty = useCallback(\n (property, defaultValue = null) => {\n try {\n return state?.context?.[property] ?? defaultValue;\n } catch (error) {\n console.error(`Error accessing state.context.${property}:`, error);\n return defaultValue;\n }\n },\n [state],\n );\n\n const safeMatches = useCallback(\n (stateValue) => {\n try {\n return state?.matches?.(stateValue) || false;\n } catch (error) {\n console.error(`Error calling state.matches with ${stateValue}:`, error);\n return false;\n }\n },\n [state],\n );\n\n const safeSend = useCallback(\n (event) => {\n try {\n send(event);\n } catch (error) {\n console.error('Error sending event to state machine:', error, event);\n }\n },\n [send],\n );\n\n // Use a ref to track the current machine snapshot for safer access\n const stateRef = useRef(state);\n\n // Keep the ref updated with the latest snapshot\n useEffect(() => {\n stateRef.current = state;\n }, [state]);\n\n const auth: any = useSelector(userSelector);\n const [selectedImage, setImage] = useState<string>('');\n const navigation = useNavigation<any>();\n const [files, setFiles] = useState<File[]>([]);\n const [images, setImages] = useState<ImagePicker.ImagePickerAsset[]>([]);\n const [isShowImageViewer, setImageViewer] = useState<boolean>(false);\n const [imageObject, setImageObject] = useState<any>({});\n const [parentId, setParentId] = useState<any>(postParentId);\n const [expoTokens, setExpoTokens] = useState<any[]>([]);\n const threadMessageListRef = useRef<any>(null);\n\n // const [sendThreadMessage] = useSendThreadMessageMutation();\n const [sendThreadMessage] = useCreatePostThreadMutation();\n const [sendExpoNotificationOnPostMutation] = useSendExpoNotificationOnPostMutation();\n const { startUpload } = useUploadFilesNative();\n\n const [\n getThreadMessages,\n { data, loading: threadLoading, fetchMore: fetchMoreMessages, refetch: refetchThreadMessages, subscribeToMore },\n ] = useGetPostThreadLazyQuery({ fetchPolicy: 'cache-and-network' });\n\n useFocusEffect(\n React.useCallback(() => {\n // navigation?.setOptions({ title: params?.title ?? 'Thread' });\n\n navigation.setOptions({\n title: params?.title ?? 'Thread',\n headerLeft: (props: any) => (\n <Button className=\"bg-transparent active:bg-gray-200 \" onPress={() => navigation.goBack()}>\n <MaterialIcons size={20} name=\"arrow-back-ios\" color={'black'} />\n </Button>\n ),\n });\n\n // Set initial context when focused\n if (channelId && postParentId) {\n safeSend({\n type: ThreadActions.INITIAL_CONTEXT,\n data: {\n channelId,\n postParentId,\n role,\n },\n });\n }\n\n setParentId(postParentId);\n\n return () => {\n safeSend({ type: ThreadActions.CLEAR_MESSAGES });\n };\n }, [postParentId]),\n );\n\n // Effect for when in FetchThreadMessages state\n useEffect(() => {\n if (safeMatches(BaseState.FetchThreadMessages)) {\n fetchThreadMessages();\n }\n }, [state.value]);\n\n // Effect for when in FetchMoreMessages state\n useEffect(() => {\n if (safeMatches(MainState.FetchMoreMessages)) {\n onFetchOld();\n }\n }, [state.value]);\n\n // Effect for when in SendThreadMessage state\n useEffect(() => {\n if (safeMatches(MainState.SendThreadMessage)) {\n const messageText = safeContextProperty('messageText', '');\n console.log('Sending message from state transition, text:', messageText);\n sendThreadMessageHandler(messageText);\n }\n }, [state.value]);\n\n // Effect for when in SendThreadMessageWithFile state\n useEffect(() => {\n if (safeMatches(MainState.SendThreadMessageWithFile)) {\n const messageText = safeContextProperty('messageText', '');\n const images = safeContextProperty('images', []);\n sendThreadMessageWithFileHandler(messageText, images);\n }\n }, [state.value]);\n\n // Fetch thread messages function\n const fetchThreadMessages = useCallback(() => {\n if (channelId && parentId) {\n getThreadMessages({\n variables: {\n channelId: channelId?.toString(),\n role: role?.toString(),\n postParentId: !parentId || parentId == 0 ? null : parentId?.toString(),\n selectedFields: 'id channel post replies replyCount lastReplyAt createdAt updatedAt',\n limit: MESSAGES_PER_PAGE,\n },\n })\n .then(({ data }) => {\n if (data?.getPostThread) {\n const threads: any = data.getPostThread;\n const threadPost = threads?.post ?? [];\n const threadReplies = threads?.replies ?? [];\n const messageTotalCount = threads?.replyCount ?? 0;\n const messages = [...threadReplies];\n\n safeSend({\n type: ThreadActions.SET_THREAD_MESSAGES,\n data: {\n messages,\n totalCount: messageTotalCount,\n threadPost: threadPost,\n postThread: threads,\n },\n });\n }\n })\n .catch((error) => {\n safeSend({\n type: 'ERROR',\n data: { message: error.message },\n });\n });\n }\n }, [channelId, parentId, role]);\n\n React.useEffect(() => {\n if (data?.getPostThread) {\n const threads: any = data.getPostThread;\n const threadPost = threads?.post ?? [];\n const threadReplies = threads?.replies ?? [];\n const messeageTotalCount = threads?.replyCount ?? 0;\n const messages = [...threadReplies];\n\n safeSend({\n type: ThreadActions.SET_THREAD_MESSAGES,\n data: {\n messages,\n totalCount: messeageTotalCount,\n threadPost: threadPost,\n postThread: threads,\n },\n });\n }\n }, [data]);\n\n React.useEffect(() => {\n if (safeContextProperty('selectedImage')) {\n safeSend({ type: ThreadActions.STOP_LOADING });\n }\n }, [safeContextProperty('selectedImage')]);\n\n const scrollToBottom = React.useCallback(() => {\n if (threadMessageListRef?.current) {\n threadMessageListRef.current.scrollToBottom();\n }\n }, [threadMessageListRef]);\n\n const onFetchOld = useCallback(() => {\n const totalCount = safeContextProperty('totalCount', 0);\n const threadMessages = safeContextProperty('threadMessages', []);\n\n if (totalCount > threadMessages.length && !safeContextProperty('loadingOldMessages', false)) {\n console.log('Loading more messages - current count:', threadMessages.length, 'of', totalCount);\n\n // Set the loading state specifically for old messages\n safeSend({\n type: ThreadActions.START_LOADING,\n data: { loadingOldMessages: true },\n });\n\n fetchMoreMessages({\n variables: {\n channelId: channelId?.toString(),\n role: role?.toString(),\n postParentId: parentId?.toString(),\n selectedFields: 'id channel post replies replyCount lastReplyAt createdAt updatedAt',\n limit: MESSAGES_PER_PAGE,\n skip: threadMessages.length,\n },\n })\n .then((res: any) => {\n if (res?.data?.getPostThread) {\n const threads: any = res?.data?.getPostThread;\n const threadReplies = threads?.replies ?? [];\n\n console.log('Successfully loaded more messages:', threadReplies.length);\n\n safeSend({\n type: 'FETCH_MORE_MESSAGES_SUCCESS',\n data: {\n messages: threadReplies,\n loadingOldMessages: false,\n },\n });\n } else {\n console.log('No thread data returned when loading more messages');\n safeSend({\n type: ThreadActions.STOP_LOADING,\n data: { loadingOldMessages: false },\n });\n }\n })\n .catch((error: any) => {\n console.error('Error fetching more messages:', error);\n safeSend({\n type: 'ERROR',\n data: {\n message: error.message,\n loadingOldMessages: false,\n },\n });\n });\n } else {\n console.log('No more messages to load or already loading');\n }\n }, [parentId, channelId, state.context]);\n\n let onScroll = false;\n\n const handleScrollToTop = ({ nativeEvent }: any) => {\n // Check if we're near the top of the list\n if (isCloseToTop(nativeEvent)) {\n if (\n !safeContextProperty('loadingOldMessages', false) &&\n safeContextProperty('totalCount', 0) > safeContextProperty('threadMessages', []).length\n ) {\n console.log('Near top of list - loading older messages');\n safeSend({ type: ThreadActions.FETCH_MORE_MESSAGES });\n }\n }\n };\n\n const handleEndReached = () => {\n // This triggers when scrolled to the bottom\n console.log('Reached end of message list');\n };\n\n const isCloseToTop = ({ layoutMeasurement, contentOffset, contentSize }) => {\n const paddingToTop = 80;\n return contentOffset.y <= paddingToTop;\n };\n\n const onSelectImages = async () => {\n try {\n safeSend({ type: ThreadActions.START_LOADING });\n\n const imageSource = await ImagePicker.launchImageLibraryAsync({\n mediaTypes: ImagePicker.MediaTypeOptions.Images,\n allowsEditing: true,\n aspect: [4, 3],\n quality: 0.8, // Reduced from 1 for better performance\n base64: true,\n allowsMultipleSelection: false, // Set to true if you want to support multiple images\n });\n\n if (imageSource.canceled) {\n console.log('Image selection was canceled');\n safeSend({ type: ThreadActions.STOP_LOADING });\n return;\n }\n\n if (!imageSource.assets || imageSource.assets.length === 0 || !imageSource.assets[0]?.base64) {\n console.error('No valid image data received');\n safeSend({\n type: 'ERROR',\n data: { message: 'No valid image data received' },\n });\n return;\n }\n\n // Get the first asset\n const asset = imageSource.assets[0];\n\n // Derive file extension from mime type or default to jpg\n const fileExtension = asset.mimeType ? asset.mimeType.split('/').pop() || 'jpg' : 'jpg';\n\n // Create a more descriptive filename with timestamp\n const filename = `image_${Date.now()}.${fileExtension}`;\n\n // Create data URL with proper mime type\n const mimeType = asset.mimeType || 'image/jpeg';\n const image = `data:${mimeType};base64,${asset.base64}`;\n\n // Create file-like object suitable for React Native\n const fileData = {\n uri: asset.uri,\n type: mimeType,\n name: filename,\n base64: asset.base64,\n };\n\n console.log(`Selected image: ${filename}, type: ${mimeType}`);\n\n safeSend({\n type: ThreadActions.SET_IMAGE,\n data: {\n image,\n files: [fileData],\n images: [asset as ImagePicker.ImagePickerAsset],\n },\n });\n } catch (error) {\n console.error('Error selecting image:', error);\n safeSend({\n type: 'ERROR',\n data: { message: error.message || 'Failed to select image' },\n });\n }\n };\n\n // Define message sending handlers\n const sendThreadMessageHandler = useCallback(\n async (message: string) => {\n console.log('Sending message:', message);\n\n if (!channelId) {\n console.error('No channelId provided');\n return;\n }\n\n // Allow empty messages with spaces or blank content - GiftedChat sometimes sends these\n // But use the actual message if available\n const messageContent = message?.trim() || ' ';\n console.log('Using message content for sending:', messageContent);\n\n const postId = objectId();\n console.log('Generated postId:', postId);\n\n safeSend({ type: ThreadActions.START_LOADING });\n\n try {\n console.log('Sending mutation with variables:', {\n channelId,\n postThreadId: safeContextProperty('postThread')?.id,\n postParentId: !parentId || parentId == 0 ? null : parentId,\n message: messageContent,\n });\n\n const result = await sendThreadMessage({\n variables: {\n channelId,\n postThreadId: safeContextProperty('postThread') && safeContextProperty('postThread')?.id,\n postParentId: !parentId || parentId == 0 ? null : parentId,\n threadMessageInput: {\n content: messageContent,\n role,\n },\n },\n update: (cache, { data, errors }: any) => {\n console.log('Send message update callback - data:', data, 'errors:', errors);\n\n if (!data || errors) {\n console.error('Send message failed:', errors);\n safeSend({ type: ThreadActions.STOP_LOADING });\n return;\n }\n\n console.log('Message sent successfully:', data?.createPostThread?.lastMessage);\n\n // Add the new message to our local state\n const newMessage = data?.createPostThread?.lastMessage;\n\n // Reset the message text and add the new message\n safeSend({\n type: 'SEND_THREAD_MESSAGE_SUCCESS',\n data: {\n message: newMessage,\n messageText: '', // Clear the message text now\n },\n });\n\n if (!parentId || parentId == 0) {\n console.log('Setting new parentId:', data?.createPostThread?.lastMessage?.id);\n setParentId(data?.createPostThread?.lastMessage?.id);\n }\n\n setChannelToTop(channelToTop + 1);\n\n const lastMessageId = data?.createPostThread?.lastMessage?.id;\n sendPushNotification(lastMessageId, channelId, parentId, data?.createPostThread?.data?.id);\n },\n });\n\n console.log('Send mutation result:', result);\n } catch (error) {\n console.error('Error sending message:', error);\n safeSend({\n type: 'ERROR',\n data: { message: error.message || 'Failed to send message' },\n });\n }\n },\n [channelId, parentId, state.context, role],\n );\n\n const sendThreadMessageWithFileHandler = useCallback(\n async (message: string, images: any[]) => {\n console.log('Sending message with file:', message, 'Images:', images.length);\n\n if (!channelId) {\n console.error('No channelId provided');\n return;\n }\n\n if (images.length === 0) {\n console.error('No images to send');\n return;\n }\n\n // Allow empty message content for file uploads\n // But use the actual message if available\n const messageContent = message?.trim() || ' ';\n console.log('Using message content for file send:', messageContent);\n\n const postId = objectId();\n console.log('Generated postId for file upload:', postId);\n\n try {\n // Prepare image assets in the format expected by the upload service\n const preparedImages = images.map((img) => ({\n uri: img.uri,\n type: img.mimeType || 'image/jpeg',\n name: img.fileName || `image_${Date.now()}.jpg`,\n base64: img.base64,\n width: img.width || 0,\n height: img.height || 0,\n })) as ImagePicker.ImagePickerAsset[];\n\n console.log('Starting file upload with prepared images:', preparedImages.length);\n\n const uploadResponse = await startUpload({\n file: preparedImages,\n saveUploadedFile: {\n variables: {\n postId,\n },\n },\n createUploadLink: {\n variables: {\n postId,\n },\n },\n });\n\n if (uploadResponse?.error) {\n console.error('File upload failed:', uploadResponse.error);\n safeSend({ type: ThreadActions.STOP_LOADING });\n return;\n }\n\n const uploadedFiles = uploadResponse.data as unknown as IFileInfo[];\n console.log('Files uploaded successfully:', uploadedFiles?.length);\n\n if (uploadResponse.data) {\n const files = uploadedFiles?.map((f: any) => f.id) ?? null;\n console.log('File IDs for message:', files);\n\n console.log('Sending message with attached files');\n const result = await sendThreadMessage({\n variables: {\n postId,\n channelId,\n postThreadId: safeContextProperty('postThread') && safeContextProperty('postThread')?.id,\n postParentId: !parentId || parentId == 0 ? null : parentId,\n threadMessageInput: {\n content: messageContent,\n files,\n role,\n },\n },\n update: (cache, { data, errors }: any) => {\n console.log('Send message with file update callback - data:', data, 'errors:', errors);\n\n if (!data || errors) {\n console.error('Send message with file failed:', errors);\n safeSend({ type: ThreadActions.STOP_LOADING });\n return;\n }\n\n console.log('Message with file sent successfully:', data?.createPostThread?.lastMessage);\n\n // Add the new message to our local state\n const newMessage = data?.createPostThread?.lastMessage;\n\n safeSend({\n type: 'SEND_THREAD_MESSAGE_WITH_FILE_SUCCESS',\n data: {\n message: newMessage,\n messageText: '', // Clear the message text now\n },\n });\n\n if (!parentId || parentId == 0) {\n console.log('Setting new parentId:', data?.createPostThread?.lastMessage?.id);\n setParentId(data?.createPostThread?.lastMessage?.id);\n }\n\n setChannelToTop(channelToTop + 1);\n\n const lastMessageId = data?.createPostThread?.lastMessage?.id;\n sendPushNotification(lastMessageId, channelId, parentId, data?.createPostThread?.data?.id);\n },\n });\n\n console.log('Send with file mutation result:', result);\n }\n } catch (error) {\n console.error('Error sending message with file:', error);\n safeSend({\n type: 'ERROR',\n data: { message: error.message || 'Failed to send message with file' },\n });\n }\n },\n [channelId, parentId, state.context, role, startUpload],\n );\n\n const sendPushNotification = async (messageId: string, channelId: string, parentId: any, threadId: string) => {\n const notificationData: IExpoNotificationData = {\n url: config.THREAD_MESSEGE_PATH,\n params: { channelId, title: params?.title ?? 'Thread', postParentId: parentId, hideTabBar: true },\n screen: 'DialogThreadMessages',\n thread: { id: threadId },\n other: { sound: Platform.OS === 'android' ? undefined : 'default' },\n };\n if (parentId || parentId == 0) {\n await sendExpoNotificationOnPostMutation({\n variables: {\n postId: messageId?.toString(),\n notificationData,\n },\n });\n }\n };\n\n const messageList = useMemo(() => {\n const threadMessages = safeContextProperty('threadMessages', []);\n console.log(`Creating message list from ${threadMessages.length} thread messages`);\n\n let res: any = [];\n if (threadMessages?.length) {\n // We need to convert the threadMessages into the format expected by GiftedChat\n // Use a Set to track IDs and prevent duplicates\n const messageIds = new Set();\n\n res = threadMessages\n .filter((msg) => {\n // Skip duplicate IDs\n if (!msg.id || messageIds.has(msg.id)) {\n console.log('Skipping duplicate message ID:', msg.id);\n return false;\n }\n messageIds.add(msg.id);\n return true;\n })\n .map((msg) => {\n // Generate a unique _id if needed by combining id and createdAt\n const uniqueId = msg.id || `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n\n let message: IMessageProps = {\n _id: uniqueId,\n text: msg.message || '',\n createdAt: new Date(msg.createdAt),\n user: {\n _id: msg?.author?.id ?? auth?.profile?.id,\n name:\n msg?.author?.givenName ??\n auth?.profile?.given_name + ' ' + msg?.author?.familyName ??\n auth?.profile?.family_name,\n avatar: msg?.author?.picture ?? auth?.profile?.picture,\n },\n type: msg?.type || '',\n image: msg?.files?.data?.[0]?.url,\n sent: msg?.isDelivered || true,\n received: msg?.isRead || false,\n propsConfiguration: msg?.propsConfiguration,\n };\n return message;\n });\n }\n\n // Sort messages by date (newest first as required by GiftedChat)\n const sortedMessages = res.sort((a, b) => b.createdAt - a.createdAt);\n return sortedMessages;\n }, [safeContextProperty('threadMessages'), auth]);\n\n const renderSend = (props) => {\n // Check if there's an image selected\n const hasImage = safeContextProperty('selectedImage', '') !== '';\n\n // Enable send button if there's text OR an image\n const isDisabled = !hasImage && (!props.text || props.text.trim().length === 0);\n\n return (\n <Send\n {...props}\n containerStyle={{\n alignItems: 'center',\n justifyContent: 'center',\n marginHorizontal: 4,\n marginBottom: 0,\n }}\n disabled={isDisabled}\n >\n <Box\n style={{\n width: 32,\n height: 32,\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <MaterialCommunityIcons\n name=\"send-circle\"\n size={30}\n color={isDisabled ? colors.gray[400] : colors.blue[500]}\n />\n </Box>\n </Send>\n );\n };\n\n const renderMessageText = (props: any) => {\n const { currentMessage } = props;\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 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 className={`bg-[${CALL_TO_ACTION_BOX_BGCOLOR}] rounded-[15] pb-2`}>\n <Button\n variant={'outline'}\n size={'sm'}\n className={`border-[${CALL_TO_ACTION_BUTTON_BORDERCOLOR}]`}\n onPress={() => action && params && navigation.navigate(action, params)}\n >\n <ButtonText className={`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 <MessageText {...props} textStyle={{ left: { marginLeft: 5 } }} />\n )}\n </>\n );\n } else {\n return <MessageText {...props} textStyle={{ left: { marginLeft: 5 } }} />;\n }\n };\n\n const renderActions = (props) => {\n return (\n <Actions\n {...props}\n options={{\n ['Choose from Library']: onSelectImages,\n ['Cancel']: () => {}, // Add this option to make the sheet dismissible\n }}\n optionTintColor=\"#000000\"\n cancelButtonIndex={1} // Set the Cancel option as the cancel button\n icon={() => (\n <Box\n style={{\n width: 32,\n height: 32,\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <Ionicons name=\"image\" size={24} color={colors.blue[500]} />\n </Box>\n )}\n containerStyle={{\n alignItems: 'center',\n justifyContent: 'center',\n marginLeft: 8,\n marginBottom: 0,\n }}\n />\n );\n };\n\n const renderAccessory = (props) => {\n const selectedImage = safeContextProperty('selectedImage', '');\n\n if (!selectedImage) {\n return null;\n }\n\n return (\n <View\n style={{\n height: 80,\n padding: 10,\n backgroundColor: 'white',\n borderTopWidth: 1,\n borderTopColor: '#e0e0e0',\n flexDirection: 'row',\n alignItems: 'center',\n }}\n >\n <View\n style={{\n flex: 1,\n flexDirection: 'row',\n alignItems: 'center',\n // justifyContent: 'space-between',\n paddingHorizontal: 20,\n }}\n >\n <Image\n key={state?.context?.selectedImage}\n alt={'selected image'}\n source={{ uri: state?.context?.selectedImage }}\n size={'xs'}\n style={{\n width: 5,\n height: 5,\n borderRadius: 5,\n marginRight: 20,\n }}\n />\n\n <TouchableHighlight\n underlayColor=\"#dddddd\"\n onPress={() => safeSend({ type: ThreadActions.CLEAR_IMAGE })}\n style={{\n backgroundColor: '#f44336',\n paddingVertical: 2,\n paddingHorizontal: 5,\n borderRadius: 5,\n marginLeft: 10,\n elevation: 3,\n shadowColor: '#000',\n shadowOffset: { width: 0, height: 1 },\n shadowOpacity: 0.3,\n shadowRadius: 2,\n }}\n >\n <Text style={{ color: 'white', fontWeight: 'bold' }}>X</Text>\n </TouchableHighlight>\n </View>\n </View>\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}-slack-bubble-imageKey`}\n source={{\n uri: image,\n expiresIn: 86400,\n }}\n alt={'image'}\n />\n );\n }, [imageObject]);\n\n const renderMessage = (props: any) => {\n return <SlackMessage {...props} isShowImageViewer={isShowImageViewer} setImageViewer={setImageViewerObject} />;\n };\n\n // Define a memo that provides the current message text from state\n const currentMessageText = useMemo(() => {\n const text = safeContextProperty('messageText', '') || ' ';\n return text;\n }, [safeContextProperty('messageText')]);\n\n // Define a custom renderInputToolbar function\n const renderInputToolbar = (props) => {\n return (\n <InputToolbar\n {...props}\n containerStyle={{\n backgroundColor: 'white',\n borderTopWidth: 1,\n borderTopColor: colors.gray[200],\n paddingHorizontal: 4,\n paddingVertical: 4,\n }}\n primaryStyle={{\n alignItems: 'center',\n }}\n />\n );\n };\n\n return (\n <SafeAreaView style={{ flex: 1 }}>\n {safeContextProperty('loadingOldMessages', false) && (\n <Box className=\"absolute top-10 left-0 right-0 z-10 items-center\">\n <Box className=\"bg-blue-500/20 rounded-full px-4 py-2 flex-row items-center\">\n <Spinner color={colors.blue[500]} size=\"small\" />\n <Text className=\"text-sm font-medium color-blue-600 ml-2\">Loading messages...</Text>\n </Box>\n </Box>\n )}\n {isPostParentIdThread && (\n <>\n {safeContextProperty('threadPost', [])?.length > 0 && (\n <>\n <VStack className=\"px-2 pt-2 pb-0\" space={'sm'}>\n <HStack space={'sm'} className=\"items-center\">\n <Avatar className=\"bg-transparent\" size={'md'}>\n <AvatarFallbackText>\n {startCase(\n safeContextProperty('threadPost')[0]?.author?.username?.charAt(0),\n )}\n </AvatarFallbackText>\n <AvatarImage\n alt=\"image\"\n style={{\n borderRadius: 6,\n borderWidth: 2,\n borderColor: '#fff',\n }}\n source={{\n uri: safeContextProperty('threadPost')[0]?.author?.picture,\n }}\n />\n </Avatar>\n <Box>\n <Text className=\"font-bold color-black\">\n {safeContextProperty('threadPost')[0]?.author?.givenName ?? ''}{' '}\n {safeContextProperty('threadPost')[0]?.author?.familyName ?? ''}\n </Text>\n <Text className=\"pl-0 color-gray-500\">\n {createdAtText(safeContextProperty('threadPost')[0]?.createdAt)} at{' '}\n {format(\n new Date(safeContextProperty('threadPost')[0]?.createdAt),\n 'hh:ss:a',\n )}\n </Text>\n </Box>\n </HStack>\n <HStack space={'sm'} className=\"px-2 items-center\">\n <Text>{safeContextProperty('threadPost')[0]?.message ?? ''}</Text>\n </HStack>\n </VStack>\n\n <Box className=\"py-4\">\n <Box className=\"px-4 py-2 border-t border-b border-gray-200\">\n <Text className=\"font-bold color-gray-600\">\n {safeContextProperty('threadPost')[0]?.replies?.totalCount}{' '}\n {safeContextProperty('threadPost')[0]?.replies?.totalCount > 0\n ? 'replies'\n : 'reply'}\n </Text>\n </Box>\n </Box>\n </>\n )}\n </>\n )}\n <GiftedChat\n ref={threadMessageListRef}\n wrapInSafeArea={false}\n renderLoading={() => <Spinner color={colors.blue[500]} />}\n messages={messageList}\n listViewProps={{\n onScroll: handleScrollToTop,\n onEndReached: handleEndReached,\n onEndReachedThreshold: 0.2,\n contentContainerStyle: {\n paddingBottom: 10,\n },\n maintainVisibleContentPosition: {\n minIndexForVisible: 0,\n autoscrollToTopThreshold: 100,\n },\n scrollEventThrottle: 100,\n keyboardDismissMode: 'on-drag',\n keyboardShouldPersistTaps: 'handled',\n }}\n onSend={(messages) => {\n if (!messages || messages.length === 0) {\n console.log('No messages to send');\n return;\n }\n\n // Use the actual message text from the state, not the one from GiftedChat\n // GiftedChat sometimes sends blank messages even when there's text in the input\n const currentInputText = currentMessageText;\n const messageToSend = currentInputText?.trim() || messages[0]?.text?.trim() || ' ';\n\n console.log('GiftedChat onSend triggered with text from state:', messageToSend);\n\n // Make sure we update the message text in state\n safeSend({\n type: ThreadActions.SET_MESSAGE_TEXT,\n data: { messageText: '' },\n });\n\n // Then send the message\n if (safeContextProperty('images', []).length > 0) {\n console.log(\n 'Sending message with file:',\n messageToSend,\n 'Images:',\n safeContextProperty('images', []).length,\n );\n safeSend({\n type: ThreadActions.SEND_THREAD_MESSAGE_WITH_FILE,\n data: { messageText: messageToSend },\n });\n } else {\n console.log('Sending text message:', messageToSend);\n safeSend({\n type: ThreadActions.SEND_THREAD_MESSAGE,\n data: { messageText: messageToSend },\n });\n }\n }}\n text={currentMessageText}\n onInputTextChanged={(text) => {\n // Don't log every keystroke to reduce console spam\n if (text.length % 5 === 0 || text.length < 5) {\n console.log('Input text changed:', text);\n }\n\n // Set the text in the state\n safeSend({\n type: ThreadActions.SET_MESSAGE_TEXT,\n data: { messageText: text },\n });\n }}\n renderFooter={() =>\n safeContextProperty('loading', false) && !safeContextProperty('loadingOldMessages', false) ? (\n <Box className=\"w-full py-2 items-center\">\n <Spinner color={colors.blue[500]} />\n </Box>\n ) : safeContextProperty('imageLoading', false) ? (\n <Box className=\"w-full py-2 items-center\">\n <Spinner color={colors.blue[500]} />\n </Box>\n ) : (\n <></>\n )\n }\n scrollToBottom\n loadEarlier={false}\n isLoadingEarlier={false}\n user={{\n _id: auth?.id || '',\n }}\n isTyping={true}\n alwaysShowSend={safeContextProperty('loading', false) ? false : true}\n infiniteScroll={true}\n renderSend={renderSend}\n renderInputToolbar={renderInputToolbar}\n minInputToolbarHeight={50}\n renderActions={renderActions}\n renderAccessory={!!state?.context?.selectedImage ? renderAccessory : undefined}\n renderMessage={renderMessage}\n maxInputLength={1000}\n placeholder=\"Type a message...\"\n showUserAvatar={true}\n showAvatarForEveryMessage={false}\n inverted={true}\n parsePatterns={(linkStyle) => [\n {\n type: 'url',\n style: { ...linkStyle, color: colors.blue[500] },\n onPress: (url) => Linking.openURL(url),\n },\n {\n type: 'phone',\n style: { ...linkStyle, color: colors.blue[500] },\n onPress: (phone) => Linking.openURL(`tel:${phone}`),\n },\n {\n type: 'email',\n style: { ...linkStyle, color: colors.blue[500] },\n onPress: (email) => Linking.openURL(`mailto:${email}`),\n },\n ]}\n textInputProps={{\n style: {\n borderWidth: 1,\n borderColor: colors.gray[300],\n backgroundColor: '#f8f8f8',\n borderRadius: 20,\n minHeight: 40,\n maxHeight: 80,\n color: '#000',\n padding: 10,\n paddingHorizontal: 20,\n fontSize: 16,\n flex: 1,\n },\n multiline: true,\n returnKeyType: 'default',\n enablesReturnKeyAutomatically: true,\n placeholderTextColor: colors.gray[400],\n }}\n minComposerHeight={44}\n isKeyboardInternallyHandled={true}\n bottomOffset={Platform.OS === 'ios' ? 20 : 0}\n renderChatFooter={() => (\n <>\n <ImageViewerModal\n isVisible={isShowImageViewer}\n setVisible={setImageViewer}\n modalContent={modalContent}\n />\n <SubscriptionHandler\n channelId={channelId}\n subscribeToNewMessages={() =>\n subscribeToMore({\n document: CHAT_MESSAGE_ADDED,\n variables: {\n channelId: channelId?.toString(),\n postParentId: !parentId || parentId == 0 ? null : parentId?.toString(),\n },\n updateQuery: (prev, { subscriptionData }: any) => {\n if (!subscriptionData.data) return prev;\n const newMessage: any = subscriptionData?.data?.threadChatMessageAdded;\n const prevReplyCount: any = prev?.getPostThread?.replyCount;\n const newReplyCount = prevReplyCount || 0 + 1;\n const replies = prev?.getPostThread?.replies || [];\n\n safeSend({\n type: ThreadActions.SET_THREAD_MESSAGES,\n data: {\n messages: uniqBy(\n [...safeContextProperty('threadMessages', []), newMessage],\n ({ id }) => id,\n ),\n totalCount: newReplyCount,\n threadPost: safeContextProperty('threadPost', []),\n postThread: safeContextProperty('postThread', null),\n },\n });\n\n return Object.assign({}, prev, {\n getPostThread: {\n ...prev?.getPostThread,\n lastReplyAt: newMessage.createdAt,\n replies: [newMessage, ...replies],\n replyCount: newReplyCount,\n updatedAt: newMessage.createdAt,\n },\n });\n },\n })\n }\n />\n </>\n )}\n messagesContainerStyle={messageList?.length == 0 && { transform: [{ scaleY: -1 }] }}\n renderChatEmpty={() => (\n <>\n {!threadLoading && messageList && messageList?.length == 0 && (\n <Box className=\"p-5\">\n <Center className=\"mt-6\">\n <Ionicons name=\"chatbubbles\" size={30} />\n <Text>You don't have any message yet!</Text>\n </Center>\n </Box>\n )}\n </>\n )}\n lightboxProps={{\n underlayColor: 'transparent',\n springConfig: { tension: 90000, friction: 90000 },\n disabled: true,\n }}\n />\n </SafeAreaView>\n );\n};\n\nconst SubscriptionHandler = ({ subscribeToNewMessages, channelId }: IThreadSubscriptionHandlerProps) => {\n useEffect(() => subscribeToNewMessages(), [channelId]);\n return <></>;\n};\n\nexport const ThreadConversationView = React.memo(ThreadConversationViewComponent);\n// export const ThreadConversationView = ThreadConversationViewComponent;\n"],"names":["ThreadActions","_a","_b","_c","_d","React","images","data","_e","_f","_g","_h","_i","_j","files","channelId","parentId","_k","_l","_m","_n","_o","Actions","selectedImage","SlackMessage","CHAT_MESSAGE_ADDED"],"mappings":"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"}