@messenger-box/platform-mobile 10.0.3-alpha.23 → 10.0.3-alpha.232
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/messages-container-ui/BuildModeView.js +428 -0
- package/lib/components/messages-container-ui/BuildModeView.js.map +1 -0
- package/lib/components/messages-container-ui/MessagesContainerUI.js +55 -0
- package/lib/components/messages-container-ui/MessagesContainerUI.js.map +1 -0
- package/lib/components/messages-container-ui/PlanModeView.js +336 -0
- package/lib/components/messages-container-ui/PlanModeView.js.map +1 -0
- package/lib/compute.js +2 -3
- package/lib/compute.js.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/module.js.map +1 -1
- package/lib/queries/inboxQueries.js +62 -0
- package/lib/queries/inboxQueries.js.map +1 -0
- package/lib/routes.json +2 -3
- package/lib/screens/inbox/DialogMessages.js +8 -3
- package/lib/screens/inbox/DialogMessages.js.map +1 -1
- package/lib/screens/inbox/DialogThreadMessages.js +6 -11
- package/lib/screens/inbox/DialogThreadMessages.js.map +1 -1
- package/lib/screens/inbox/DialogThreads.js +9 -11
- package/lib/screens/inbox/DialogThreads.js.map +1 -1
- package/lib/screens/inbox/Inbox.js.map +1 -1
- package/lib/screens/inbox/components/CachedImage/consts.js +1 -1
- package/lib/screens/inbox/components/CachedImage/consts.js.map +1 -1
- package/lib/screens/inbox/components/CachedImage/index.js +125 -96
- package/lib/screens/inbox/components/CachedImage/index.js.map +1 -1
- package/lib/screens/inbox/components/DialogItem.js +160 -0
- package/lib/screens/inbox/components/DialogItem.js.map +1 -0
- package/lib/screens/inbox/components/GiftedChatInboxComponent.js +315 -0
- package/lib/screens/inbox/components/GiftedChatInboxComponent.js.map +1 -0
- package/lib/screens/inbox/components/SlackMessageContainer/ImageViewerModal.js +3 -1
- package/lib/screens/inbox/components/SlackMessageContainer/ImageViewerModal.js.map +1 -1
- package/lib/screens/inbox/components/SlackMessageContainer/PaymentMessage.js +194 -0
- package/lib/screens/inbox/components/SlackMessageContainer/PaymentMessage.js.map +1 -0
- package/lib/screens/inbox/components/SlackMessageContainer/SlackBubble.js +149 -36
- package/lib/screens/inbox/components/SlackMessageContainer/SlackBubble.js.map +1 -1
- package/lib/screens/inbox/components/SlackMessageContainer/SlackMessage.js +4 -5
- package/lib/screens/inbox/components/SlackMessageContainer/SlackMessage.js.map +1 -1
- package/lib/screens/inbox/components/SubscriptionHandler.js +22 -0
- package/lib/screens/inbox/components/SubscriptionHandler.js.map +1 -0
- package/lib/screens/inbox/components/ThreadsViewItem.js +2 -4
- package/lib/screens/inbox/components/ThreadsViewItem.js.map +1 -1
- package/lib/screens/inbox/config/config.js +4 -2
- package/lib/screens/inbox/config/config.js.map +1 -1
- package/lib/screens/inbox/containers/ConversationView.js +1093 -1090
- package/lib/screens/inbox/containers/ConversationView.js.map +1 -1
- package/lib/screens/inbox/containers/Dialogs.js +130 -577
- package/lib/screens/inbox/containers/Dialogs.js.map +1 -1
- package/lib/screens/inbox/containers/ThreadConversationView.js +864 -1408
- package/lib/screens/inbox/containers/ThreadConversationView.js.map +1 -1
- package/lib/screens/inbox/containers/ThreadsView.js +9 -15
- package/lib/screens/inbox/containers/ThreadsView.js.map +1 -1
- package/lib/screens/inbox/hooks/useInboxMessages.js +31 -0
- package/lib/screens/inbox/hooks/useInboxMessages.js.map +1 -0
- package/lib/screens/inbox/hooks/useSafeDialogThreadsMachine.js +1 -1
- package/lib/screens/inbox/hooks/useSafeDialogThreadsMachine.js.map +1 -1
- package/lib/screens/inbox/workflow/dialog-threads-xstate.js.map +1 -1
- package/package.json +10 -8
- package/CHANGELOG.md +0 -172
- package/jest.config.js +0 -24
- package/lib/screens/inbox/components/DialogsListItem.js +0 -548
- package/lib/screens/inbox/components/DialogsListItem.js.map +0 -1
- package/lib/screens/inbox/components/ServiceDialogsListItem.js +0 -489
- package/lib/screens/inbox/components/ServiceDialogsListItem.js.map +0 -1
- package/lib/screens/inbox/components/workflow/dialogs-list-item-xstate.js +0 -175
- package/lib/screens/inbox/components/workflow/dialogs-list-item-xstate.js.map +0 -1
- package/lib/screens/inbox/components/workflow/service-dialogs-list-item-xstate.js +0 -191
- package/lib/screens/inbox/components/workflow/service-dialogs-list-item-xstate.js.map +0 -1
- package/lib/screens/inbox/containers/workflow/conversation-xstate.js +0 -380
- package/lib/screens/inbox/containers/workflow/conversation-xstate.js.map +0 -1
- package/lib/screens/inbox/containers/workflow/dialogs-xstate.js +0 -211
- package/lib/screens/inbox/containers/workflow/dialogs-xstate.js.map +0 -1
- package/lib/screens/inbox/containers/workflow/thread-conversation-xstate.js +0 -438
- package/lib/screens/inbox/containers/workflow/thread-conversation-xstate.js.map +0 -1
- package/rollup.config.mjs +0 -45
- package/src/components/index.ts +0 -0
- package/src/compute.ts +0 -63
- package/src/index.ts +0 -7
- package/src/module.ts +0 -10
- package/src/navigation/InboxNavigation.tsx +0 -102
- package/src/navigation/index.ts +0 -1
- package/src/screens/inbox/DialogMessages.tsx +0 -21
- package/src/screens/inbox/DialogThreadMessages.tsx +0 -97
- package/src/screens/inbox/DialogThreads.tsx +0 -125
- package/src/screens/inbox/Inbox.tsx +0 -17
- package/src/screens/inbox/components/CachedImage/consts.ts +0 -6
- package/src/screens/inbox/components/CachedImage/index.tsx +0 -223
- package/src/screens/inbox/components/DialogsHeader.tsx +0 -30
- package/src/screens/inbox/components/DialogsListItem.tsx +0 -819
- package/src/screens/inbox/components/ServiceDialogsListItem.tsx +0 -679
- package/src/screens/inbox/components/SlackMessageContainer/ImageViewerModal.tsx +0 -113
- package/src/screens/inbox/components/SlackMessageContainer/SlackBubble.tsx +0 -313
- package/src/screens/inbox/components/SlackMessageContainer/SlackMessage.tsx +0 -145
- package/src/screens/inbox/components/SlackMessageContainer/index.ts +0 -3
- package/src/screens/inbox/components/SmartLoader.tsx +0 -61
- package/src/screens/inbox/components/SupportServiceDialogsListItem.tsx +0 -301
- package/src/screens/inbox/components/ThreadsViewItem.tsx +0 -233
- package/src/screens/inbox/components/workflow/dialogs-list-item-xstate.ts +0 -145
- package/src/screens/inbox/components/workflow/service-dialogs-list-item-xstate.ts +0 -159
- package/src/screens/inbox/config/config.ts +0 -15
- package/src/screens/inbox/config/index.ts +0 -1
- package/src/screens/inbox/containers/ConversationView.tsx +0 -1784
- package/src/screens/inbox/containers/Dialogs.tsx +0 -829
- package/src/screens/inbox/containers/SupportServiceDialogs.tsx +0 -119
- package/src/screens/inbox/containers/ThreadConversationView.tsx +0 -2295
- package/src/screens/inbox/containers/ThreadsView.tsx +0 -224
- package/src/screens/inbox/containers/workflow/apollo/handleResult.ts +0 -20
- package/src/screens/inbox/containers/workflow/conversation-xstate.ts +0 -313
- package/src/screens/inbox/containers/workflow/dialogs-xstate.ts +0 -196
- package/src/screens/inbox/containers/workflow/thread-conversation-xstate.ts +0 -401
- package/src/screens/inbox/hooks/useSafeDialogThreadsMachine.ts +0 -136
- package/src/screens/inbox/index.ts +0 -37
- package/src/screens/inbox/machines/threadsMachine.ts +0 -147
- package/src/screens/inbox/workflow/dialog-threads-xstate.ts +0 -163
- package/src/screens/index.ts +0 -4
- package/tsconfig.json +0 -13
- package/webpack.config.js +0 -58
|
@@ -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, Linking, SafeAreaView, View, TouchableHighlight, Alert } 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\n try {\n // Validate the date before processing\n const timestamp = new Date(value).getTime();\n if (isNaN(timestamp)) {\n console.warn(`Invalid date value in createdAtText: ${value}`);\n return 'Unknown date';\n }\n\n let date = new Date(value);\n if (isToday(date)) return 'Today';\n if (isYesterday(date)) return 'Yesterday';\n return format(date, 'MMM dd, yyyy');\n } catch (error) {\n console.error(`Error processing date in createdAtText: ${value}`, error);\n return 'Unknown date';\n }\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 loadingOldMessages:\n event.data?.loadingOldMessages === false ? false : prev.context.loadingOldMessages,\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 const apiTotalCount = event.data?.totalCount;\n console.log(\n `Merging ${newMessages.length} older messages with ${prev.context.threadMessages.length} existing messages`,\n );\n\n if (newMessages.length > 0) {\n try {\n console.log(\n 'First new message date:',\n !isNaN(new Date(newMessages[0].createdAt).getTime())\n ? new Date(newMessages[0].createdAt).toISOString()\n : 'Invalid date',\n );\n console.log(\n 'Last new message date:',\n !isNaN(new Date(newMessages[newMessages.length - 1].createdAt).getTime())\n ? new Date(newMessages[newMessages.length - 1].createdAt).toISOString()\n : 'Invalid date',\n );\n } catch (error) {\n console.error('Error logging new message dates:', error);\n }\n }\n\n if (prev.context.threadMessages.length > 0) {\n try {\n console.log(\n 'First existing message date:',\n !isNaN(new Date(prev.context.threadMessages[0].createdAt).getTime())\n ? new Date(prev.context.threadMessages[0].createdAt).toISOString()\n : 'Invalid date',\n );\n console.log(\n 'Last existing message date:',\n !isNaN(\n new Date(\n prev.context.threadMessages[prev.context.threadMessages.length - 1].createdAt,\n ).getTime(),\n )\n ? new Date(\n prev.context.threadMessages[prev.context.threadMessages.length - 1].createdAt,\n ).toISOString()\n : 'Invalid date',\n );\n } catch (error) {\n console.error('Error logging existing message dates:', error);\n }\n }\n\n // If no new messages returned but total count says there should be more\n if (newMessages.length === 0 && prev.context.totalCount > prev.context.threadMessages.length) {\n console.log('No new messages found despite totalCount indicating more should exist');\n\n // Adjust totalCount to match reality\n return {\n ...prev,\n context: {\n ...prev.context,\n loadingOldMessages: false,\n totalCount: prev.context.threadMessages.length,\n },\n value: 'active',\n };\n }\n\n // Make sure we don't add duplicate messages\n const combinedMessages = uniqBy([...prev.context.threadMessages, ...newMessages], 'id');\n\n // GiftedChat expects messages sorted by date (newest first)\n const sortedMessages = orderBy(\n combinedMessages,\n [\n (msg) => {\n try {\n // Safely access and convert date\n return !isNaN(new Date(msg.createdAt).getTime())\n ? new Date(msg.createdAt).getTime()\n : 0; // Default to oldest if invalid\n } catch (error) {\n console.error(`Error sorting message by date: ${msg.id}`, error);\n return 0; // Default to oldest if error\n }\n },\n ],\n ['desc'],\n );\n\n // Use the total count from the API response if available, otherwise keep the current count\n const newTotalCount =\n typeof apiTotalCount === 'number'\n ? apiTotalCount\n : Math.max(sortedMessages.length, prev.context.totalCount);\n\n console.log(\n `Total messages after merge and sort: ${sortedMessages.length}, totalCount: ${newTotalCount}`,\n );\n\n return {\n ...prev,\n context: {\n ...prev.context,\n loadingOldMessages: false,\n threadMessages: sortedMessages,\n totalCount: newTotalCount,\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 // Add a function to force refresh all messages\n const forceRefreshMessages = useCallback(() => {\n console.log('Force refreshing all messages');\n\n // Clear the current messages first\n safeSend({\n type: ThreadActions.CLEAR_MESSAGES,\n });\n\n // Then trigger a refetch\n if (channelId && parentId) {\n safeSend({\n type: ThreadActions.START_LOADING,\n data: { loading: true },\n });\n\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: 50, // Use larger limit that proved to work\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 console.log(\n `Force refresh complete. Got ${messages.length} messages of ${messageTotalCount} total`,\n );\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 console.error('Error during force refresh:', error);\n safeSend({\n type: 'ERROR',\n data: { message: error.message },\n });\n });\n }\n }, [channelId, parentId, getThreadMessages, safeSend]);\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 headerRight: () => (\n <Button className=\"bg-transparent active:bg-gray-200 mr-2\" onPress={forceRefreshMessages}>\n <MaterialIcons size={20} name=\"refresh\" 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, forceRefreshMessages]),\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 if (__DEV__) console.log('Initial fetch of thread messages using larger limit (50)');\n\n // Set loading state\n safeSend({\n type: ThreadActions.START_LOADING,\n data: { loading: true },\n });\n\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: 50, // Use larger limit that proved to work\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 if (__DEV__)\n console.log(\n `Initial fetch complete. Got ${messages.length} messages of ${messageTotalCount} total`,\n );\n\n // Use batch updates to reduce render cycles\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, getThreadMessages, safeSend]);\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 // Add a safety timeout to clear loading state if it gets stuck\n React.useEffect(() => {\n const isLoading = safeContextProperty('loadingOldMessages', false);\n\n if (isLoading) {\n console.log('Message loading timeout safety started');\n const timeoutId = setTimeout(() => {\n // Check if we're still loading after 10 seconds\n if (safeContextProperty('loadingOldMessages', false)) {\n console.log('Message loading timed out - resetting state');\n safeSend({\n type: ThreadActions.STOP_LOADING,\n data: { loadingOldMessages: false },\n });\n }\n }, 10000); // 10 second timeout\n\n return () => clearTimeout(timeoutId);\n }\n }, [safeContextProperty('loadingOldMessages')]);\n\n // Add a safety counter to detect and fix incorrect message counts automatically\n const failedLoadAttemptsRef = useRef(0);\n\n // Track failed attempts to load more messages\n const registerLoadAttemptResult = useCallback((success: boolean) => {\n if (!success) {\n failedLoadAttemptsRef.current += 1;\n console.log(`Failed load attempt registered, count: ${failedLoadAttemptsRef.current}`);\n } else {\n // Reset counter on successful load\n failedLoadAttemptsRef.current = 0;\n }\n }, []);\n\n // Watch for failed load attempts and auto-fix the count after 3 consecutive failures\n React.useEffect(() => {\n const isLoading = safeContextProperty('loadingOldMessages', false);\n const totalCount = safeContextProperty('totalCount', 0);\n const messagesCount = safeContextProperty('threadMessages', []).length;\n\n // If we're not loading and there's a discrepancy in message counts\n if (!isLoading && totalCount > messagesCount) {\n // If we've had 3 consecutive failed attempts, fix the count\n if (failedLoadAttemptsRef.current >= 2) {\n console.log(\n `Auto-fixing incorrect message count after ${\n failedLoadAttemptsRef.current + 1\n } failed load attempts`,\n );\n console.log(`Adjusting totalCount from ${totalCount} to ${messagesCount}`);\n\n safeSend({\n type: ThreadActions.SET_THREAD_MESSAGES,\n data: {\n messages: safeContextProperty('threadMessages', []),\n totalCount: messagesCount,\n threadPost: safeContextProperty('threadPost', []),\n postThread: safeContextProperty('postThread', null),\n },\n });\n\n // Reset the counter\n failedLoadAttemptsRef.current = 0;\n }\n }\n }, [safeContextProperty('loadingOldMessages'), safeContextProperty('threadMessages')]);\n\n const scrollToBottom = React.useCallback(() => {\n if (threadMessageListRef?.current) {\n threadMessageListRef.current.scrollToBottom();\n }\n }, [threadMessageListRef]);\n\n const isCloseToTop = useCallback(({ layoutMeasurement, contentOffset, contentSize }) => {\n // We consider being \"close to top\" when scrolled to top 15% of visible area\n const visibleHeight = layoutMeasurement.height;\n const topThreshold = Math.min(80, visibleHeight * 0.15);\n return contentOffset.y <= topThreshold;\n }, []);\n\n const handleScrollToTop = useCallback(\n ({ nativeEvent }: any) => {\n // Check if we're near the top of the list\n if (isCloseToTop(nativeEvent)) {\n const isLoading = safeContextProperty('loadingOldMessages', false);\n const totalCount = safeContextProperty('totalCount', 0);\n const currentCount = safeContextProperty('threadMessages', []).length;\n const hasMoreMessages = totalCount > currentCount;\n\n if (__DEV__)\n console.log(\n `Scroll near top - Loading state: ${isLoading}, Messages: ${currentCount}/${totalCount}, Has more: ${hasMoreMessages}`,\n );\n\n if (!isLoading && hasMoreMessages) {\n if (__DEV__) console.log('Near top of list - loading older messages');\n safeSend({ type: ThreadActions.FETCH_MORE_MESSAGES });\n }\n }\n },\n [isCloseToTop, safeContextProperty, safeSend],\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 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 // Optimize messageList memo to avoid unnecessary recalculations\n const messageList = useMemo(() => {\n const threadMessages = safeContextProperty('threadMessages', []);\n // Avoid excessive logging in production\n if (__DEV__) console.log(`Creating message list from ${threadMessages.length} thread messages`);\n\n if (!threadMessages?.length) return [];\n\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 const res = threadMessages\n .filter((msg) => {\n // Skip duplicate IDs\n if (!msg.id || messageIds.has(msg.id)) return false;\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 // Safely create a Date object with validation\n let messageDate;\n try {\n // Check if createdAt is a valid date string\n if (msg.createdAt && !isNaN(new Date(msg.createdAt).getTime())) {\n messageDate = new Date(msg.createdAt);\n } else {\n // Use current time as fallback if date is invalid\n messageDate = new Date();\n }\n } catch (error) {\n messageDate = new Date(); // Fallback to current time\n }\n\n // Extract image URL from files data\n let imageUrl = null;\n if (msg.files?.data && msg.files.data.length > 0) {\n const fileData = msg.files.data[0];\n if (fileData && fileData.url) {\n imageUrl = fileData.url;\n }\n }\n\n // Get the message text without adding \"File attachment\" for image-only messages\n let messageText = msg.message || '';\n\n return {\n _id: uniqueId,\n text: messageText,\n createdAt: messageDate,\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: imageUrl,\n sent: msg?.isDelivered || true,\n received: msg?.isRead || false,\n propsConfiguration: msg?.propsConfiguration,\n };\n });\n\n // Sort messages by date (newest first as required by GiftedChat)\n // Use a safer getTime() approach with error handling\n return orderBy(\n res,\n [\n (msg) => {\n try {\n return msg.createdAt instanceof Date ? msg.createdAt.getTime() : new Date().getTime();\n } catch (error) {\n return 0; // Fallback to a default value\n }\n },\n ],\n ['desc'],\n );\n }, [safeContextProperty('threadMessages'), auth]);\n\n // Optimize render functions with memoization\n const renderSend = useCallback(\n (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 [safeContextProperty],\n );\n\n const renderActions = useCallback(\n (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 [onSelectImages],\n );\n\n const renderAccessory = useCallback(\n (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 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 [state?.context?.selectedImage, safeSend],\n );\n\n const renderInputToolbar = useCallback((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 const setImageViewerObject = (obj: any, v: boolean) => {\n setImageObject(obj);\n setImageViewer(v);\n };\n\n // Add back the renderMessageText function (memoized)\n const renderMessageText = useCallback(\n (props: any) => {\n const { currentMessage } = props;\n\n // For ALERT type messages with call to action\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 }\n // For file attachment messages, don't show the \"File attachment\" text\n else if (currentMessage.text === '📎 File attachment') {\n // Return null to not render any text for these messages\n return null;\n }\n // Default text rendering\n else {\n return <MessageText {...props} textStyle={{ left: { marginLeft: 5 } }} />;\n }\n },\n [role, navigation],\n );\n\n const renderMessage = useCallback(\n (props: any) => {\n return (\n <SlackMessage {...props} isShowImageViewer={isShowImageViewer} setImageViewer={setImageViewerObject} />\n );\n },\n [isShowImageViewer, setImageViewerObject],\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 // 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 // Add a function to load messages with specific skip value for debugging\n const forceLoadMessages = useCallback(\n (skipValue: number) => {\n console.log(`Force loading messages with explicit skip=${skipValue}, limit=50`);\n\n if (channelId && parentId) {\n safeSend({\n type: ThreadActions.START_LOADING,\n data: { loading: true },\n });\n\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 skip: skipValue,\n limit: 50, // Use larger limit that proved to work\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 console.log(\n `Force load with skip=${skipValue} complete. Got ${messages.length} messages of ${messageTotalCount} total`,\n );\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 console.error('Error during force load:', error);\n safeSend({\n type: 'ERROR',\n data: { message: error.message },\n });\n });\n }\n },\n [channelId, parentId, getThreadMessages, safeSend],\n );\n\n // Optimize the onFetchOld function to be more efficient\n const onFetchOld = useCallback(() => {\n const totalCount = safeContextProperty('totalCount', 0);\n const threadMessages = safeContextProperty('threadMessages', []);\n const isLoading = safeContextProperty('loadingOldMessages', false);\n\n if (totalCount <= threadMessages.length || isLoading) {\n // Make sure we're not stuck in loading state\n if (isLoading) {\n safeSend({\n type: ThreadActions.STOP_LOADING,\n data: { loadingOldMessages: false },\n });\n }\n if (__DEV__) console.log('No more messages to load or already loading');\n return;\n }\n\n if (__DEV__) 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.FETCH_MORE_MESSAGES,\n data: { loadingOldMessages: true },\n });\n\n // Use simple, consistent approach: Skip=0, Limit=50\n if (__DEV__) console.log('Using proven approach: Skip=0, Limit=50');\n\n // Create query variables once\n const queryVariables = {\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: 50,\n skip: 0,\n };\n\n if (__DEV__) console.log('Query variables:', JSON.stringify(queryVariables));\n\n fetchMoreMessages({\n variables: queryVariables,\n })\n .then((res: any) => {\n if (__DEV__) console.log('API response received with status:', res ? 'success' : 'empty');\n\n if (res?.data?.getPostThread) {\n const threads: any = res?.data?.getPostThread;\n const threadReplies = threads?.replies ?? [];\n const actualTotalCount = threads?.replyCount ?? 0;\n\n if (__DEV__) {\n console.log('API response details:');\n console.log('- replyCount:', threads?.replyCount);\n console.log('- replies array length:', threadReplies.length);\n }\n\n if (threadReplies.length > 0) {\n // Compare with our existing messages to find the ones we're missing\n const existingIds = new Set(threadMessages.map((msg) => msg.id));\n const newUniqueMessages = threadReplies.filter((msg) => !existingIds.has(msg.id));\n\n if (__DEV__)\n console.log(\n `Found ${newUniqueMessages.length} unique new messages out of ${threadReplies.length} received`,\n );\n\n // If no new unique messages, it means we already have everything\n if (newUniqueMessages.length === 0) {\n if (__DEV__) console.log('No new unique messages found, adjusting total count');\n\n // Register this as a failed load attempt\n registerLoadAttemptResult(false);\n\n // Adjust total count to match what we have\n safeSend({\n type: ThreadActions.SET_THREAD_MESSAGES,\n data: {\n messages: threadMessages,\n totalCount: threadMessages.length,\n threadPost: safeContextProperty('threadPost', []),\n postThread: safeContextProperty('postThread', null),\n },\n });\n return;\n }\n\n // Register success since we found new messages\n registerLoadAttemptResult(true);\n\n if (__DEV__) console.log(`Adding ${newUniqueMessages.length} new messages to thread`);\n\n safeSend({\n type: 'FETCH_MORE_MESSAGES_SUCCESS',\n data: {\n messages: newUniqueMessages,\n totalCount: actualTotalCount,\n loadingOldMessages: false,\n },\n });\n } else {\n if (__DEV__) console.log('No thread replies returned when loading more messages');\n registerLoadAttemptResult(false);\n\n // Adjust total count to match what we have, since server says there are no more messages\n safeSend({\n type: ThreadActions.SET_THREAD_MESSAGES,\n data: {\n messages: threadMessages,\n totalCount: threadMessages.length,\n threadPost: safeContextProperty('threadPost', []),\n postThread: safeContextProperty('postThread', null),\n },\n });\n }\n } else {\n if (__DEV__) console.log('No thread data returned when loading more messages');\n registerLoadAttemptResult(false);\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 registerLoadAttemptResult(false);\n safeSend({\n type: 'ERROR',\n data: {\n message: error.message,\n loadingOldMessages: false,\n },\n });\n });\n }, [parentId, channelId, role, safeContextProperty, safeSend, fetchMoreMessages, registerLoadAttemptResult]);\n\n return (\n <SafeAreaView style={{ flex: 1 }}>\n {safeContextProperty('loadingOldMessages', false) === true && (\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 {!safeContextProperty('loadingOldMessages', false) &&\n safeContextProperty('totalCount', 0) > safeContextProperty('threadMessages', []).length && (\n <Box className=\"absolute top-10 left-0 right-0 z-10 items-center\">\n <HStack space={2} className=\"px-2\">\n <TouchableHighlight\n onPress={() => {\n console.log('Manual load more pressed');\n Alert.alert('Load Options', 'Choose loading method', [\n {\n text: 'Normal Load',\n onPress: () => safeSend({ type: ThreadActions.FETCH_MORE_MESSAGES }),\n },\n {\n text: 'Try Skip=0',\n onPress: () => forceLoadMessages(0),\n },\n {\n text: 'Try Skip=0, Limit=50',\n onPress: () => {\n // Try with a larger limit\n console.log('Force loading with explicit skip=0, limit=50');\n\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:\n !parentId || parentId == 0 ? null : parentId?.toString(),\n selectedFields:\n 'id channel post replies replyCount lastReplyAt createdAt updatedAt',\n limit: 50, // Try a larger limit\n skip: 0,\n },\n })\n .then((res: any) => {\n console.log(\n 'LARGE LIMIT response:',\n JSON.stringify(res?.data, null, 2),\n );\n\n if (res?.data?.getPostThread) {\n const threads: any = res?.data?.getPostThread;\n const threadReplies = threads?.replies ?? [];\n const actualTotalCount = threads?.replyCount ?? 0;\n\n console.log(\n `Large limit load complete. Got ${threadReplies.length} messages of ${actualTotalCount} total`,\n );\n\n if (threadReplies.length > 0) {\n // Reset our message list with all available messages\n safeSend({\n type: ThreadActions.SET_THREAD_MESSAGES,\n data: {\n messages: threadReplies,\n totalCount: actualTotalCount,\n threadPost: safeContextProperty(\n 'threadPost',\n [],\n ),\n postThread: threads,\n },\n });\n } else {\n // Reset count if no messages found\n safeSend({\n type: ThreadActions.SET_THREAD_MESSAGES,\n data: {\n messages: safeContextProperty(\n 'threadMessages',\n [],\n ),\n totalCount: safeContextProperty(\n 'threadMessages',\n [],\n ).length,\n threadPost: safeContextProperty(\n 'threadPost',\n [],\n ),\n postThread: safeContextProperty(\n 'postThread',\n null,\n ),\n },\n });\n }\n } else {\n safeSend({\n type: ThreadActions.STOP_LOADING,\n data: { loadingOldMessages: false },\n });\n }\n })\n .catch((error) => {\n console.error('Error in large limit load:', error);\n safeSend({\n type: ThreadActions.STOP_LOADING,\n data: { loadingOldMessages: false },\n });\n });\n },\n },\n {\n text: 'Try Direct Fetch',\n onPress: () => {\n // Get current info\n const currentCount = safeContextProperty('threadMessages', []).length;\n const totalCount = safeContextProperty('totalCount', 0);\n const missingCount = totalCount - currentCount;\n\n if (missingCount <= 0) {\n Alert.alert('Info', 'No missing messages to fetch');\n return;\n }\n\n console.log(\n `Attempting direct fetch of missing ${missingCount} messages`,\n );\n\n // Try explicit query with exact parameters\n safeSend({\n type: ThreadActions.START_LOADING,\n data: { loadingOldMessages: true },\n });\n\n // Special query directly for the missing messages\n getThreadMessages({\n variables: {\n channelId: channelId?.toString(),\n role: role?.toString(),\n postParentId:\n !parentId || parentId == 0 ? null : parentId?.toString(),\n selectedFields:\n 'id channel post replies replyCount lastReplyAt createdAt updatedAt',\n limit: missingCount, // Only get the exact number we need\n skip: 0, // Start from the beginning\n },\n })\n .then(({ data }) => {\n console.log(\n 'DIRECT FETCH response:',\n JSON.stringify(data, null, 2),\n );\n\n if (data?.getPostThread) {\n const threads: any = data.getPostThread;\n const threadReplies = threads?.replies ?? [];\n const actualTotalCount = threads?.replyCount ?? 0;\n\n console.log(\n `Direct fetch complete. Got ${threadReplies.length} messages of ${actualTotalCount} total`,\n );\n console.log(\n 'Message IDs:',\n threadReplies.map((msg) => msg.id).join(', '),\n );\n\n // Compare with our existing messages to find the ones we're missing\n const existingIds = new Set(\n safeContextProperty('threadMessages', []).map(\n (msg) => msg.id,\n ),\n );\n const newMessages = threadReplies.filter(\n (msg) => !existingIds.has(msg.id),\n );\n\n console.log(\n `Found ${newMessages.length} new messages that we didn't have before`,\n );\n\n if (newMessages.length > 0) {\n safeSend({\n type: 'FETCH_MORE_MESSAGES_SUCCESS',\n data: {\n messages: newMessages,\n totalCount: actualTotalCount,\n loadingOldMessages: false,\n },\n });\n\n // Show the results\n Alert.alert(\n 'Success',\n `Found ${newMessages.length} new messages`,\n );\n } else {\n // If we didn't find any new messages, adjust the total count\n console.log('No new messages found, adjusting count');\n safeSend({\n type: ThreadActions.SET_THREAD_MESSAGES,\n data: {\n messages: safeContextProperty(\n 'threadMessages',\n [],\n ),\n totalCount: safeContextProperty(\n 'threadMessages',\n [],\n ).length,\n threadPost: safeContextProperty(\n 'threadPost',\n [],\n ),\n postThread: safeContextProperty(\n 'postThread',\n null,\n ),\n },\n });\n\n // Notify the user\n Alert.alert(\n 'Info',\n 'No new messages found. Count has been adjusted.',\n );\n }\n } else {\n Alert.alert('Error', 'Could not fetch thread messages');\n safeSend({\n type: ThreadActions.STOP_LOADING,\n data: { loadingOldMessages: false },\n });\n }\n })\n .catch((error) => {\n console.error('Error in direct fetch:', error);\n Alert.alert(\n 'Error',\n 'Failed to fetch messages: ' + error.message,\n );\n safeSend({\n type: ThreadActions.STOP_LOADING,\n data: { loadingOldMessages: false },\n });\n });\n },\n },\n {\n text: 'Reset Count',\n style: 'destructive',\n onPress: () => {\n console.log('Resetting message count to match reality');\n safeSend({\n type: ThreadActions.SET_THREAD_MESSAGES,\n data: {\n messages: safeContextProperty('threadMessages', []),\n totalCount: safeContextProperty('threadMessages', []).length,\n threadPost: safeContextProperty('threadPost', []),\n postThread: safeContextProperty('postThread', null),\n },\n });\n },\n },\n {\n text: 'Cancel',\n style: 'cancel',\n },\n ]);\n }}\n underlayColor=\"#e6e6e6\"\n >\n <Box className=\"bg-gray-200 rounded-full px-4 py-2 flex-row items-center\">\n <MaterialIcons name=\"arrow-upward\" size={16} color={colors.blue[500]} />\n <Text className=\"text-sm font-medium color-blue-600 ml-2\">\n Load More (\n {safeContextProperty('totalCount', 0) -\n safeContextProperty('threadMessages', []).length}\n )\n </Text>\n </Box>\n </TouchableHighlight>\n\n <TouchableHighlight onPress={forceRefreshMessages} underlayColor=\"#e6e6e6\">\n <Box className=\"bg-gray-200 rounded-full px-4 py-2 flex-row items-center\">\n <MaterialIcons name=\"refresh\" size={16} color={colors.blue[500]} />\n <Text className=\"text-sm font-medium color-blue-600 ml-2\">Refresh All</Text>\n </Box>\n </TouchableHighlight>\n </HStack>\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 {(() => {\n try {\n const createdAt = safeContextProperty('threadPost')[0]?.createdAt;\n if (createdAt && !isNaN(new Date(createdAt).getTime())) {\n return format(new Date(createdAt), 'hh:mm:a');\n } else {\n return 'unknown time';\n }\n } catch (error) {\n console.error('Error formatting thread post time:', error);\n return 'unknown time';\n }\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: 16,\n keyboardDismissMode: 'on-drag',\n keyboardShouldPersistTaps: 'handled',\n // removeClippedSubviews={true}\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 if (__DEV__) 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 if (__DEV__)\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 if (__DEV__) 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 // Set the text in the state without excessive logging\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={safeContextProperty('loading', false)}\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 renderMessageText={renderMessageText}\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 }] } : undefined}\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","data","React","images","_e","_f","_g","_h","_i","_j","files","channelId","parentId","_k","_l","_m","Actions","selectedImage","_n","_o","_p","_q","_r","_s","_t","_u","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 Skeleton,\n Toast,\n ToastTitle,\n ToastDescription,\n useToast,\n Divider,\n} from '@admin-layout/gluestack-ui-mobile';\nimport {\n Platform,\n TouchableHighlight,\n View,\n TouchableOpacity,\n ScrollView,\n Animated,\n Keyboard,\n RefreshControl,\n} 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, InputToolbar, Composer } from 'react-native-gifted-chat';\nimport {\n IPost,\n IPostThread,\n PreDefinedRole,\n IExpoNotificationData,\n IFileInfo,\n FileRefType,\n PostTypeEnum,\n} from 'common';\nimport {\n CHAT_MESSAGE_ADDED,\n useCreatePostThread,\n useSendExpoNotification,\n useGetPostThreadLazy,\n} from '../../../queries/inboxQueries';\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 ExpandableInputActionSheet from '../components/ExpandableInputActionSheet';\nimport GiftedChatInboxComponent from '../components/GiftedChatInboxComponent';\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 images?: string[];\n isOptimistic?: boolean;\n isUploading?: 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\ninterface IThreadSubscriptionHandlerProps {\n subscribeToNewMessages: () => any;\n channelId: string;\n}\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\n// Custom notification component\nconst ErrorNotification = ({ message, onClose }) => {\n const opacity = useRef(new Animated.Value(0)).current;\n\n useEffect(() => {\n // Fade in\n Animated.timing(opacity, {\n toValue: 1,\n duration: 300,\n useNativeDriver: true,\n }).start();\n\n // Auto hide after 4 seconds\n const timer = setTimeout(() => {\n Animated.timing(opacity, {\n toValue: 0,\n duration: 300,\n useNativeDriver: true,\n }).start(() => onClose && onClose());\n }, 4000);\n\n return () => clearTimeout(timer);\n }, []);\n\n return (\n <Animated.View\n style={{\n position: 'absolute',\n top: 10,\n left: 10,\n right: 10,\n backgroundColor: '#f44336',\n padding: 15,\n borderRadius: 8,\n shadowColor: '#000',\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 0.25,\n shadowRadius: 3.84,\n elevation: 5,\n zIndex: 1000,\n opacity,\n }}\n >\n <HStack className=\"items-center justify-between\">\n <Text style={{ color: 'white', fontWeight: 'bold' }}>Upload Failed</Text>\n <TouchableOpacity onPress={onClose}>\n <Ionicons name=\"close\" size={20} color=\"white\" />\n </TouchableOpacity>\n </HStack>\n <Text style={{ color: 'white', marginTop: 5 }}>{message}</Text>\n </Animated.View>\n );\n};\n\n// Add a utility function for file validation\nconst isValidFileUrl = (url: string | undefined): boolean => {\n return !!url && typeof url === 'string' && url.length > 0;\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, setSelectedImage] = 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<ExtendedImagePickerAsset[]>([]);\n const [msg, setMsg] = useState<string>('');\n const [loading, setLoading] = useState(false);\n const [imageLoading, setImageLoading] = useState(false);\n const [uploadingMessageId, setUploadingMessageId] = useState<string | null>(null);\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 const toast = useToast();\n const [errorMessage, setErrorMessage] = useState('');\n\n // Add state for expandable input action sheet\n const [isActionSheetVisible, setActionSheetVisible] = useState(false);\n const [textUpdatedInActionSheet, setTextUpdatedInActionSheet] = useState(false);\n const [lastShownMsg, setLastShownMsg] = useState('');\n const textInputRef = useRef(null);\n\n // const [sendThreadMessage] = useSendThreadMessageMutation();\n const [sendThreadMessage] = useCreatePostThread();\n const [sendExpoNotificationOnPostMutation] = useSendExpoNotification();\n\n const [\n getThreadMessages,\n { data, loading: threadLoading, fetchMore: fetchMoreMessages, refetch: refetchThreadMessages, subscribeToMore },\n ] = useGetPostThreadLazy({ fetchPolicy: 'cache-and-network' });\n\n // Add new state for tracking uploads\n const [pendingUploads, setPendingUploads] = useState<Record<string, any>>({});\n const [uploadErrors, setUploadErrors] = useState<Record<string, string>>({});\n const [isUploadingImage, setIsUploadingImage] = useState(false);\n\n const [refreshing, setRefreshing] = useState(false);\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 setLoadingOldMessages(true);\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: 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 setRefreshing(false);\n })\n .catch((error: any) => {\n setLoadEarlierMsg(false);\n setLoadingOldMessages(false);\n setRefreshing(false);\n });\n } else {\n setRefreshing(false);\n }\n }, [parentId, channelId, totalCount, channelMessages]);\n\n // Pull to refresh handler\n const onRefresh = useCallback(() => {\n setRefreshing(true);\n onFetchOld();\n }, [onFetchOld]);\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 // Add a helper function for removing messages from the UI when uploads fail\n const removeMessageFromUI = useCallback((messageId: string) => {\n // Remove from pending uploads\n setPendingUploads((prev) => {\n const newPending = { ...prev };\n delete newPending[messageId];\n return newPending;\n });\n\n // Also remove any error state\n setUploadErrors((prev) => {\n const newErrors = { ...prev };\n delete newErrors[messageId];\n return newErrors;\n });\n\n // Reset upload state to ensure we don't get stuck with loading indicator\n setIsUploadingImage(false);\n }, []);\n\n // const onSelectImages = async () => {\n // setImageLoading(true);\n\n // try {\n // let imageSource = await ImagePicker.launchImageLibraryAsync({\n // mediaTypes: ImagePicker.MediaTypeOptions.Images,\n // allowsEditing: true,\n // aspect: [4, 3],\n // quality: 0.8,\n // base64: true,\n // exif: false,\n // });\n\n // if (!imageSource?.canceled) {\n // // Get the asset\n // const selectedAsset = imageSource?.assets?.[0];\n // if (!selectedAsset) {\n // setImageLoading(false);\n // return;\n // }\n\n // // Create a base64 image string for preview\n // const base64Data = selectedAsset.base64;\n // const previewImage = base64Data ? `data:image/jpeg;base64,${base64Data}` : selectedAsset.uri;\n\n // // Format the asset for upload service requirements\n // const asset: ExtendedImagePickerAsset = {\n // ...selectedAsset,\n // url: selectedAsset.uri,\n // fileName: selectedAsset.fileName || `image_${Date.now()}.jpg`,\n // mimeType: 'image/jpeg',\n // };\n\n // // Update state with the new image\n // setSelectedImage(previewImage);\n // setImages([asset]);\n // setImageLoading(false);\n // } else {\n // setImageLoading(false);\n // }\n // } catch (error) {\n // console.error('Error selecting image:', error);\n // setImageLoading(false);\n // }\n // };\n\n // Image selection handler\n const onSelectImages = async () => {\n setLoading(true);\n\n try {\n let imageSource = await ImagePicker.launchImageLibraryAsync({\n mediaTypes: ImagePicker.MediaTypeOptions.Images,\n allowsEditing: false,\n aspect: [4, 3],\n quality: 0.8,\n base64: true,\n exif: false,\n allowsMultipleSelection: true, // Enable multiple selection\n });\n\n if (!imageSource?.canceled) {\n // Get all selected assets\n const selectedAssets = imageSource?.assets || [];\n if (selectedAssets.length === 0) {\n setLoading(false);\n return;\n }\n\n // Process all selected images\n const newImages = selectedAssets.map((selectedAsset) => {\n // Create a base64 image string for preview\n const base64Data = selectedAsset.base64;\n const previewImage = base64Data ? `data:image/jpeg;base64,${base64Data}` : selectedAsset.uri;\n\n // Format the asset for upload service requirements\n const asset: ExtendedImagePickerAsset = {\n ...selectedAsset,\n url: selectedAsset.uri,\n fileName: selectedAsset.fileName || `image_${Date.now()}.jpg`,\n mimeType: 'image/jpeg',\n };\n\n return asset;\n });\n\n // Set preview for the first image (for backward compatibility)\n if (newImages.length > 0) {\n const base64Data = newImages[0].base64;\n const previewImage = base64Data ? `data:image/jpeg;base64,${base64Data}` : newImages[0].uri;\n setSelectedImage(previewImage);\n }\n\n // Add new images to existing ones\n setImages((currentImages) => [...currentImages, ...newImages]);\n setLoading(false); // Set loading to false after successful selection\n } else {\n setLoading(false);\n }\n } catch (error) {\n setLoading(false);\n }\n };\n\n // Action sheet handlers\n const showActionSheet = useCallback(() => {\n setLastShownMsg(msg); // Store current message text when opening sheet\n setActionSheetVisible(true);\n }, [msg]);\n\n const handleActionSheetClose = useCallback(() => {\n // Close the sheet\n setActionSheetVisible(false);\n\n // If user didn't make any changes, restore the original message\n if (!textUpdatedInActionSheet) {\n setMsg(lastShownMsg);\n }\n\n // Reset the flag\n setTextUpdatedInActionSheet(false);\n }, [textUpdatedInActionSheet, lastShownMsg]);\n\n const handleActionSheetSend = () => {\n // Send the message using the existing handleSend function\n handleSend(msg);\n\n // Close the action sheet\n setActionSheetVisible(false);\n };\n\n // Add focus/blur handlers for the input field\n useEffect(() => {\n // When showing the action sheet, we should hide the keyboard for the main input\n if (isActionSheetVisible && Platform.OS === 'ios') {\n Keyboard.dismiss();\n }\n }, [isActionSheetVisible]);\n\n // Keep track of whether the input is in focus to help sync UI states\n const [isGiftedInputFocused, setIsGiftedInputFocused] = useState(false);\n\n const handleSend = useCallback(\n async (message: string) => {\n const newMessageText = message && message.length > 0 ? message || ' ' : ' ';\n // Check if we can send a message (channel and thread exists)\n\n if (!channelId) return;\n\n // Allow sending if we have text OR images (image-only messages are valid)\n const hasText = !!newMessageText && newMessageText !== ' ';\n const hasImages = images && images.length > 0;\n\n if (!hasText && !hasImages) return;\n\n // Start loading state\n setLoading(true);\n\n const postId = objectId();\n const currentDate = new Date();\n\n // Store current values before clearing\n const currentMessageText = message || '';\n const currentImages = [...images];\n\n // Clear UI immediately for next message\n setMsg('');\n setSelectedImage('');\n setImages([]);\n setFiles([]);\n\n // Close the action sheet if it's open\n if (isActionSheetVisible) {\n setActionSheetVisible(false);\n }\n\n // Create optimistic message with all images for immediate display\n const optimisticMessage = {\n id: postId,\n message: currentMessageText || (currentImages.length > 0 ? ' ' : ''),\n createdAt: currentDate.toISOString(),\n author: {\n id: auth?.profile?.id,\n givenName: auth?.profile?.given_name,\n familyName: auth?.profile?.family_name,\n picture: auth?.profile?.picture,\n },\n isDelivered: false, // Mark as not delivered yet during upload\n isRead: false,\n isOptimistic: true, // Flag to identify optimistic messages\n files:\n currentImages.length > 0\n ? {\n data: currentImages\n .filter((img) => img && (img.uri || img.url)) // Filter out invalid images\n .map((img) => ({\n id: objectId(),\n url: img.uri || img.url,\n localUri: img.uri || img.url, // Keep local URI for preview\n name: img.fileName || `image_${Date.now()}.jpg`,\n extension: 'jpg',\n mimeType: 'image/jpeg',\n refType: FileRefType.Post,\n height: img.height || 0,\n width: img.width || 0,\n isUploading: true, // Flag to indicate this file is uploading\n })),\n totalCount: currentImages.filter((img) => img && (img.uri || img.url)).length, // Only count valid images\n }\n : undefined,\n };\n\n // Only add optimistic message if there's content to send\n if (\n (optimisticMessage.message && optimisticMessage.message.trim() !== '') ||\n (optimisticMessage.files && optimisticMessage.files.data && optimisticMessage.files.data.length > 0)\n ) {\n setChannelMessages((oldMessages: any) => uniqBy([optimisticMessage, ...oldMessages], ({ id }) => id));\n setIsScrollToBottom(true);\n }\n\n try {\n let fileIds: string[] | null = null;\n\n // Handle file uploads if images exist\n if (currentImages && currentImages.length > 0) {\n // Filter out any invalid images before upload\n const validImages = currentImages.filter((img) => img && (img.uri || img.url));\n\n if (validImages.length === 0) {\n // No valid images to upload, just send the text message\n setIsUploadingImage(false);\n } else {\n setIsUploadingImage(true);\n\n // Format images for upload\n const imagesToUpload = validImages.map((img) => {\n return {\n ...img,\n uri: img.uri || img.url, // Use either uri or url\n type: img.mimeType || 'image/jpeg',\n name: img.fileName || `image_${Date.now()}.jpg`,\n };\n });\n\n // Track upload progress with messageId\n setUploadingMessageId(postId);\n setPendingUploads((prev) => ({\n ...prev,\n [postId]: {\n images: validImages,\n message: currentMessageText,\n },\n }));\n\n const uploadResponse = await startUpload({\n file: imagesToUpload as unknown as ImagePicker.ImagePickerAsset[],\n saveUploadedFile: {\n variables: {\n postId,\n },\n },\n createUploadLink: {\n variables: {\n postId,\n },\n },\n });\n\n if (uploadResponse?.error) {\n throw new Error(uploadResponse.error.toString());\n }\n\n const uploadedFiles = uploadResponse.data as unknown as IFileInfo[];\n if (uploadResponse.data) {\n fileIds = uploadedFiles?.map((f: any) => f.id) ?? null;\n\n // Update message with uploaded file information\n setChannelMessages((oldMessages: any) => {\n return oldMessages.map((msg) => {\n if (msg.id === postId && msg.isOptimistic) {\n // Update the uploaded files with real URLs from server\n return {\n ...msg,\n isOptimistic: false,\n files: {\n ...msg.files,\n data: uploadedFiles\n .filter((file) => isValidFileUrl(file.url))\n .map((file, index) => ({\n ...msg.files.data[index],\n url: file.url,\n isUploading: false,\n })),\n },\n };\n }\n return msg;\n });\n });\n }\n\n // Clear pending upload now that it's complete\n setPendingUploads((prev) => {\n const newPending = { ...prev };\n delete newPending[postId];\n return newPending;\n });\n }\n }\n\n // Send message with Apollo mutation\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: currentMessageText,\n files: fileIds,\n role,\n },\n },\n optimisticResponse: {\n createPostThread: {\n __typename: 'ThreadMessageSent',\n lastMessage: {\n __typename: 'Post',\n id: postId,\n message: currentMessageText || ' ',\n createdAt: new Date().toISOString(),\n author: {\n __typename: 'UserAccount',\n id: auth?.profile?.id,\n givenName: auth?.profile?.given_name,\n familyName: auth?.profile?.family_name,\n picture: auth?.profile?.picture,\n },\n channel: { __typename: 'Channel', id: channelId.toString() },\n } as any, // Type assertion to avoid TypeScript errors\n data: {\n __typename: 'PostThread',\n id: postThread?.id || objectId(),\n },\n },\n },\n update: (cache, { data, errors }: any) => {\n if (!data || errors) 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\n // Send push notification with message info\n sendPushNotification(lastMessageId, channelId, parentId, data?.createPostThread?.data?.id);\n },\n });\n } catch (error) {\n console.error('Error sending message:', error);\n\n // Format error message based on environment\n let formattedErrorMessage = 'Failed to upload image. Please try again.';\n\n if (__DEV__) {\n // Show detailed error in development\n if (error.name === 'ApolloError') {\n formattedErrorMessage = error.message\n .replace('[ApolloError: ', '')\n .replace(']', '')\n .split(';')[0]; // Take first part of error for clarity\n } else {\n formattedErrorMessage = error.message || 'Unknown error occurred';\n }\n } else {\n // Show friendly message in production\n if (error.message?.includes('network') || error.message?.includes('timeout')) {\n formattedErrorMessage = 'Network error. Please check your connection.';\n } else if (error.message?.includes('permission')) {\n formattedErrorMessage = 'Permission denied for this operation.';\n }\n }\n\n // Show custom error notification\n setErrorMessage(formattedErrorMessage);\n\n // Remove the optimistic message if there was an error\n setChannelMessages((oldMessages: any) => oldMessages.filter((msg) => msg.id !== postId));\n\n // Clean up any pending upload states\n removeMessageFromUI(postId);\n } finally {\n setLoading(false);\n setIsUploadingImage(false);\n setUploadingMessageId(null);\n }\n },\n [\n auth,\n channelId,\n channelToTop,\n images,\n parentId,\n postThread,\n selectedImage,\n setChannelMessages,\n removeMessageFromUI,\n role,\n ],\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 // Improved messageList function to better handle images\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\n // Handle image uploads with proper UI feedback\n message.isOptimistic = msg?.isOptimistic || false;\n message.isUploading = msg.files?.data?.some((file) => file.isUploading) || false;\n\n // Improved image handling - ensure we have valid image URLs\n if (msg.files?.data?.length > 0) {\n // Filter out any invalid files first\n const validFiles = msg.files.data.filter(\n (file) =>\n file && (file.url || file.localUri) && typeof (file.url || file.localUri) === 'string',\n );\n\n if (validFiles.length > 0) {\n // For the first image (used in single image display)\n const firstFile = validFiles[0];\n const imageUrl = firstFile.isUploading\n ? firstFile.localUri || firstFile.url\n : firstFile.url || firstFile.localUri;\n\n if (imageUrl) {\n message.image = imageUrl;\n }\n\n // For multiple images\n if (validFiles.length > 1) {\n message.images = validFiles\n .map((file) =>\n file.isUploading ? file.localUri || file.url : file.url || file.localUri,\n )\n .filter((url) => !!url); // Filter out any undefined or empty URLs\n\n // If no valid URLs after filtering, don't set the images property\n if (message.images.length === 0) {\n delete message.images;\n }\n }\n }\n }\n\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 = useCallback(\n (props) => {\n // If action sheet is visible, don't show the default send button\n if (isActionSheetVisible) {\n return null;\n }\n\n // Enable the send button if there's text OR we have images\n const hasContent = !!props.text || images?.length > 0;\n const canSend = channelId && hasContent;\n const isDisabled = !canSend || isUploadingImage || loading;\n\n return (\n <Send\n {...props}\n disabled={isDisabled}\n containerStyle={{\n justifyContent: 'center',\n alignItems: 'center',\n height: 40,\n width: 44,\n marginRight: 4,\n marginBottom: 0,\n marginLeft: 4,\n }}\n // onSend={(messages, shouldReset) => {\n // // Always use our custom handler to ensure images are handled properly\n // console.log('messages', messages);\n // // handleSend(props.text || ' ');\n // }}\n >\n <View style={{ padding: 4 }}>\n {isUploadingImage || loading ? (\n <Spinner size=\"small\" color={colors.blue[500]} />\n ) : (\n <MaterialCommunityIcons\n name=\"send-circle\"\n size={32}\n color={isDisabled ? colors.gray[400] : colors.blue[500]}\n />\n )}\n </View>\n </Send>\n );\n },\n [channelId, images, isUploadingImage, loading, isActionSheetVisible],\n );\n\n const renderMessageText1 = useCallback(\n (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 [navigation, role],\n );\n\n const renderMessageText = useCallback(\n (props: any) => {\n const { currentMessage } = props;\n const lastReply: any =\n currentMessage?.replies?.data?.length > 0 ? currentMessage?.replies?.data?.[0] : null;\n\n // Do not render anything if the message text is empty or only whitespace\n if (!currentMessage?.text || currentMessage.text.trim() === '') {\n return null;\n }\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 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 <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'} className=\"px-1 items-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) ===\n i,\n )\n ?.slice(0, 2)\n ?.reverse()\n ?.map((p: any, i: Number) => (\n <Avatar\n key={'conversations-view-key-' + i}\n size={'sm'}\n className=\"bg-transparent\"\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 }} className=\"font-bold color-blue-800\">\n {currentMessage?.replies?.totalCount}{' '}\n {currentMessage?.replies?.totalCount == 1 ? 'reply' : 'replies'}\n </Text>\n <Text style={{ fontSize: 12 }} className=\"font-bold color-gray-500\">\n {lastReply ? createdAtText(lastReply?.createdAt) : ''}\n </Text>\n </HStack>\n )}\n </>\n </TouchableHighlight>\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'} className=\"px-1 items-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 className=\"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 }} className=\"font-bold color-blue-800\">\n {currentMessage?.replies?.totalCount}{' '}\n {currentMessage?.replies?.totalCount == 1 ? 'reply' : 'replies'}\n </Text>\n <Text style={{ fontSize: 12 }} className=\"font-bold color-gray-500\">\n {lastReply ? createdAtText(lastReply?.createdAt) : ''}\n </Text>\n </HStack>\n )}\n </>\n </TouchableHighlight>\n );\n }\n },\n [navigation, channelId, role],\n );\n\n // const renderActions = useCallback((props) => {\n // return (\n // <Actions\n // {...props}\n // icon={() => <Ionicons name={'image'} size={30} color={'black'} onPress={onSelectImages} />}\n // />\n // );\n // }, [onSelectImages]);\n\n // Render action buttons (including image upload)\n const renderActions = useCallback(\n (props) => {\n return (\n <Actions\n {...props}\n onPressActionButton={onSelectImages} // Direct action when pressing the button\n options={{\n ['Choose from Library']: () => {\n // Call the same image selection function used in the ActionSheet\n onSelectImages();\n },\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 className=\"w-8 h-8 items-center justify-center\">\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 [onSelectImages],\n );\n\n // Create a more visible and reliable image preview with cancel button\n const renderAccessory = useCallback(() => {\n if (!images.length) return null;\n return (\n <Box style={{ position: 'relative', height: 70, backgroundColor: 'transparent', justifyContent: 'center' }}>\n <ScrollView\n horizontal\n showsHorizontalScrollIndicator={false}\n style={{\n flexDirection: 'row',\n paddingLeft: 15,\n paddingRight: 5,\n }}\n contentContainerStyle={{\n alignItems: 'center',\n height: '100%',\n }}\n >\n {images.map((img, index) => (\n <View\n key={`image-preview-${index}`}\n style={{\n width: 40,\n height: 40,\n marginRight: 15,\n borderRadius: 4,\n backgroundColor: colors.gray[200],\n overflow: 'hidden',\n borderWidth: 1,\n borderColor: '#e0e0e0',\n position: 'relative',\n zIndex: 10,\n }}\n >\n <Image\n alt={`selected image ${index + 1}`}\n source={{ uri: img.uri || img.url }}\n style={{ width: '100%', height: '100%' }}\n size={'md'}\n />\n {/* Cross button at top right */}\n <TouchableOpacity\n onPress={() => {\n const newImages = [...images];\n newImages.splice(index, 1);\n setImages(newImages);\n if (newImages.length === 0) {\n setSelectedImage('');\n }\n }}\n style={{\n position: 'absolute',\n top: -1,\n right: -1,\n backgroundColor: 'rgba(0,0,0,0.6)',\n borderRadius: 12,\n width: 20,\n height: 20,\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 9999,\n }}\n >\n <Ionicons name=\"close\" size={16} color=\"white\" />\n </TouchableOpacity>\n </View>\n ))}\n </ScrollView>\n </Box>\n );\n }, [images]);\n\n // Add a custom Composer for Slack-like input\n const renderComposer = useCallback(\n (props) => (\n <TouchableOpacity\n style={{\n flexDirection: 'row',\n alignItems: 'center',\n backgroundColor: '#fff',\n minHeight: 48,\n maxHeight: 48,\n paddingHorizontal: 12,\n paddingVertical: 0,\n marginHorizontal: 8,\n flex: 1,\n }}\n activeOpacity={0.7}\n onPress={() => {\n // Use the callback we defined to show the action sheet\n setActionSheetVisible(true);\n }}\n >\n {/* Left + button */}\n <TouchableOpacity\n onPress={(e) => {\n e.stopPropagation(); // Prevent parent TouchableOpacity from triggering\n onSelectImages();\n }}\n style={{\n width: 25,\n height: 25,\n borderRadius: 20,\n backgroundColor: '#f5f5f5',\n alignItems: 'center',\n justifyContent: 'center',\n marginRight: 8,\n }}\n >\n <MaterialIcons name=\"add\" size={20} color=\"#888\" />\n </TouchableOpacity>\n\n {/* Text placeholder - no need for actual input component */}\n <Text\n style={{\n fontSize: 16,\n color: msg ? colors.gray[800] : colors.gray[400],\n flex: 1,\n }}\n numberOfLines={1}\n ellipsizeMode=\"tail\"\n >\n {msg ? msg : 'Jot something down'}\n </Text>\n </TouchableOpacity>\n ),\n [msg, onSelectImages],\n );\n\n const setImageViewerObject = useCallback((obj: any, v: boolean) => {\n setImageObject(obj);\n setImageViewer(v);\n }, []);\n\n const modalContent = 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 renderMessage1 = useCallback(\n (props: any) => {\n const { currentMessage } = props;\n\n // Add special props for handling image upload states\n const customProps = {\n ...props,\n isShowImageViewer: isShowImageViewer,\n setImageViewer: setImageViewerObject,\n // Pass custom flags to indicate uploading/optimistic states\n isUploading: currentMessage.isUploading || false,\n isOptimistic: currentMessage.isOptimistic || false,\n };\n\n // Use SlackMessage component with our enhanced props\n return <SlackMessage {...customProps} />;\n },\n [isShowImageViewer, setImageViewerObject],\n );\n const renderMessage = useCallback(\n (props: any) => {\n // For all messages, use the SlackMessage component directly\n return (\n <SlackMessage {...props} isShowImageViewer={isShowImageViewer} setImageViewer={setImageViewerObject} />\n );\n },\n [isShowImageViewer],\n );\n\n const renderInputToolbar = useCallback(\n (props) => {\n if (isActionSheetVisible) return null;\n\n return (\n <InputToolbar\n {...props}\n containerStyle={{\n backgroundColor: 'transparent',\n padding: 0,\n margin: 0,\n borderTopWidth: 1,\n borderTopColor: colors.gray[200],\n }}\n primaryStyle={{ alignItems: 'center', justifyContent: 'center', flex: 1 }}\n // Add action slot for direct image selection button\n // renderActions={() => (\n // <TouchableOpacity\n // onPress={onSelectImages}\n // style={{\n // padding: 8,\n // marginLeft: 4,\n // marginBottom: Platform.OS === 'ios' ? 0 : 3,\n // }}\n // >\n // <Ionicons name=\"image\" size={24} color={colors.blue[500]} />\n // </TouchableOpacity>\n // )}\n />\n );\n },\n [isActionSheetVisible, onSelectImages],\n );\n\n const renderLoadEarlier = useCallback(() => {\n return loadingOldMessages && !refreshing ? (\n <Box\n style={{\n padding: 10,\n backgroundColor: 'rgba(255,255,255,0.8)',\n borderRadius: 10,\n marginTop: 10,\n alignItems: 'center',\n }}\n >\n <Spinner size=\"small\" color={colors.blue[500]} />\n <Text style={{ fontSize: 12, color: colors.gray[600], marginTop: 4 }}>Loading earlier messages...</Text>\n </Box>\n ) : null;\n }, [loadingOldMessages, refreshing]);\n\n let onScroll = false;\n\n const onMomentumScrollBegin = ({ nativeEvent }: any) => {\n onScroll = true;\n if (!loadingOldMessages && isCloseToTop(nativeEvent) && totalCount > channelMessages?.length) {\n onFetchOld();\n }\n };\n\n const onEndReached = () => {\n if (!onScroll) return;\n onScroll = false;\n };\n\n const renderChatFooter = useCallback(() => {\n return (\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 }, [channelId, isShowImageViewer, modalContent, parentId, setImageViewer, subscribeToMore]);\n\n const handleRemoveImage = useCallback(\n (index: number) => {\n const newImages = [...images];\n newImages.splice(index, 1);\n setImages(newImages);\n if (newImages.length === 0) {\n setSelectedImage('');\n if (textInputRef.current && typeof textInputRef.current.focus === 'function') {\n textInputRef.current.focus();\n }\n }\n },\n [images],\n );\n\n return (\n <View style={{ flex: 1, marginTop: -40 }}>\n {errorMessage ? <ErrorNotification message={errorMessage} onClose={() => setErrorMessage('')} /> : null}\n {loading && <Spinner color={'#3b82f6'} />}\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 <GiftedChatInboxComponent\n ref={threadMessageListRef}\n onRemoveImage={handleRemoveImage}\n images={images}\n onSelectImages={onSelectImages}\n selectedImage={selectedImage}\n setSelectedImage={setSelectedImage}\n isUploadingImage={isUploadingImage}\n loading={loading}\n wrapInSafeArea={true}\n inverted={true}\n renderLoading={() => <Skeleton variant=\"rounded\" style={{ flex: 1 }} />}\n messages={messageList}\n listViewProps={{\n onEndReached: onEndReached,\n onEndReachedThreshold: 0.5,\n onMomentumScrollBegin: onMomentumScrollBegin,\n style: { marginTop: 0 },\n contentContainerStyle: {\n paddingTop: 0,\n paddingBottom: selectedImage ? 90 : 0,\n },\n refreshControl: (\n <RefreshControl\n refreshing={refreshing}\n onRefresh={onRefresh}\n colors={[colors.blue[500]]}\n tintColor={colors.blue[500]}\n title=\"Loading earlier messages...\"\n titleColor={colors.gray[600]}\n />\n ),\n }}\n onSend={(messages) => handleSend(messages[0]?.text ?? ' ')}\n text={msg || ' '}\n onInputTextChanged={(text) => setMsg(text)}\n renderFooter={() => null}\n scrollToBottom\n user={{\n _id: auth?.id || '',\n }}\n placeholder=\"Jot something down\"\n infiniteScroll={true}\n renderSend={renderSend}\n renderMessageText={renderMessageText}\n renderMessage={renderMessage}\n renderLoadEarlier={renderLoadEarlier}\n loadEarlier={totalCount > channelMessages.length}\n isLoadingEarlier={loadingOldMessages}\n textInputProps={{\n multiline: true,\n returnKeyType: 'default',\n enablesReturnKeyAutomatically: true,\n placeholderTextColor: colors.gray[400],\n // Allow direct editing in the main input too for better UX\n editable: true,\n onFocus: () => setIsGiftedInputFocused(true),\n onBlur: () => setIsGiftedInputFocused(false),\n }}\n renderChatFooter={renderChatFooter}\n messagesContainerStyle={{\n ...(messageList?.length == 0 ? { transform: [{ scaleY: -1 }] } : {}),\n // marginTop: -40, // Negative margin to remove the top padding\n paddingTop: 0,\n }}\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 />\n {/* <GiftedChat\n ref={threadMessageListRef}\n wrapInSafeArea={true}\n inverted={true}\n renderLoading={() => <Skeleton variant=\"rounded\" style={{ flex: 1 }} />}\n messages={messageList}\n listViewProps={{\n onEndReached: onEndReached,\n onEndReachedThreshold: 0.5,\n onMomentumScrollBegin: onMomentumScrollBegin,\n style: { marginTop: 0 },\n contentContainerStyle: {\n paddingTop: 0,\n paddingBottom: selectedImage ? 90 : 0,\n },\n refreshControl: (\n <RefreshControl\n refreshing={refreshing}\n onRefresh={onRefresh}\n colors={[colors.blue[500]]}\n tintColor={colors.blue[500]}\n title=\"Loading earlier messages...\"\n titleColor={colors.gray[600]}\n />\n ),\n }}\n onSend={(messages) => handleSend(messages[0]?.text ?? ' ')}\n text={msg || ' '}\n onInputTextChanged={(text) => setMsg(text)}\n renderFooter={() => null}\n scrollToBottom\n user={{\n _id: auth?.id || '',\n }}\n isTyping={false}\n alwaysShowSend={true}\n infiniteScroll={true}\n renderSend={renderSend}\n renderMessageText={renderMessageText}\n renderInputToolbar={renderInputToolbar}\n renderComposer={renderComposer}\n minInputToolbarHeight={isActionSheetVisible ? 0 : 56}\n renderAccessory={images.length > 0 ? renderAccessory : null}\n renderMessage={renderMessage}\n renderLoadEarlier={renderLoadEarlier}\n loadEarlier={totalCount > channelMessages.length}\n isLoadingEarlier={loadingOldMessages}\n bottomOffset={Platform.OS === 'ios' ? (selectedImage ? 90 : 10) : 0}\n textInputProps={{\n multiline: true,\n returnKeyType: 'default',\n enablesReturnKeyAutomatically: true,\n placeholderTextColor: colors.gray[400],\n // Allow direct editing in the main input too for better UX\n editable: true,\n onFocus: () => setIsGiftedInputFocused(true),\n onBlur: () => setIsGiftedInputFocused(false),\n }}\n minComposerHeight={36}\n maxComposerHeight={100}\n isKeyboardInternallyHandled={false}\n renderChatFooter={renderChatFooter}\n messagesContainerStyle={{\n ...(messageList?.length == 0 ? { transform: [{ scaleY: -1 }] } : {}),\n // marginTop: -40, // Negative margin to remove the top padding\n paddingTop: 0,\n }}\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 {/* Add the expandable action sheet */}\n {/* {isActionSheetVisible && <Divider />}\n {isActionSheetVisible && (\n <ExpandableInputActionSheet\n isVisible={isActionSheetVisible}\n onClose={handleActionSheetClose}\n onSend={handleActionSheetSend}\n onSelectImages={onSelectImages}\n text={msg}\n onChangeText={(text) => {\n setMsg(text);\n setTextUpdatedInActionSheet(true);\n }}\n textInputRef={textInputRef}\n isSendDisabled={(!msg.trim() && images.length === 0) || isUploadingImage}\n selectedImages={images}\n loading={loading || isUploadingImage}\n onRemoveImage={(index) => {\n const newImages = [...images];\n newImages.splice(index, 1);\n setImages(newImages);\n if (newImages.length === 0) {\n setSelectedImage('');\n }\n }}\n />\n )} */}\n </View>\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","_e","_f","_g","_h","_i","_j","_k","_l","msg","data","channelId","parentId","_m","_n","_o","_p","_q","_r","_s","params","SlackMessage"],"mappings":"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"}
|