@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.
Files changed (116) hide show
  1. package/lib/components/messages-container-ui/BuildModeView.js +428 -0
  2. package/lib/components/messages-container-ui/BuildModeView.js.map +1 -0
  3. package/lib/components/messages-container-ui/MessagesContainerUI.js +55 -0
  4. package/lib/components/messages-container-ui/MessagesContainerUI.js.map +1 -0
  5. package/lib/components/messages-container-ui/PlanModeView.js +336 -0
  6. package/lib/components/messages-container-ui/PlanModeView.js.map +1 -0
  7. package/lib/compute.js +2 -3
  8. package/lib/compute.js.map +1 -1
  9. package/lib/index.js +1 -1
  10. package/lib/index.js.map +1 -1
  11. package/lib/module.js.map +1 -1
  12. package/lib/queries/inboxQueries.js +62 -0
  13. package/lib/queries/inboxQueries.js.map +1 -0
  14. package/lib/routes.json +2 -3
  15. package/lib/screens/inbox/DialogMessages.js +8 -3
  16. package/lib/screens/inbox/DialogMessages.js.map +1 -1
  17. package/lib/screens/inbox/DialogThreadMessages.js +6 -11
  18. package/lib/screens/inbox/DialogThreadMessages.js.map +1 -1
  19. package/lib/screens/inbox/DialogThreads.js +9 -11
  20. package/lib/screens/inbox/DialogThreads.js.map +1 -1
  21. package/lib/screens/inbox/Inbox.js.map +1 -1
  22. package/lib/screens/inbox/components/CachedImage/consts.js +1 -1
  23. package/lib/screens/inbox/components/CachedImage/consts.js.map +1 -1
  24. package/lib/screens/inbox/components/CachedImage/index.js +125 -96
  25. package/lib/screens/inbox/components/CachedImage/index.js.map +1 -1
  26. package/lib/screens/inbox/components/DialogItem.js +160 -0
  27. package/lib/screens/inbox/components/DialogItem.js.map +1 -0
  28. package/lib/screens/inbox/components/GiftedChatInboxComponent.js +315 -0
  29. package/lib/screens/inbox/components/GiftedChatInboxComponent.js.map +1 -0
  30. package/lib/screens/inbox/components/SlackMessageContainer/ImageViewerModal.js +3 -1
  31. package/lib/screens/inbox/components/SlackMessageContainer/ImageViewerModal.js.map +1 -1
  32. package/lib/screens/inbox/components/SlackMessageContainer/PaymentMessage.js +194 -0
  33. package/lib/screens/inbox/components/SlackMessageContainer/PaymentMessage.js.map +1 -0
  34. package/lib/screens/inbox/components/SlackMessageContainer/SlackBubble.js +149 -36
  35. package/lib/screens/inbox/components/SlackMessageContainer/SlackBubble.js.map +1 -1
  36. package/lib/screens/inbox/components/SlackMessageContainer/SlackMessage.js +4 -5
  37. package/lib/screens/inbox/components/SlackMessageContainer/SlackMessage.js.map +1 -1
  38. package/lib/screens/inbox/components/SubscriptionHandler.js +22 -0
  39. package/lib/screens/inbox/components/SubscriptionHandler.js.map +1 -0
  40. package/lib/screens/inbox/components/ThreadsViewItem.js +2 -4
  41. package/lib/screens/inbox/components/ThreadsViewItem.js.map +1 -1
  42. package/lib/screens/inbox/config/config.js +4 -2
  43. package/lib/screens/inbox/config/config.js.map +1 -1
  44. package/lib/screens/inbox/containers/ConversationView.js +1093 -1090
  45. package/lib/screens/inbox/containers/ConversationView.js.map +1 -1
  46. package/lib/screens/inbox/containers/Dialogs.js +130 -577
  47. package/lib/screens/inbox/containers/Dialogs.js.map +1 -1
  48. package/lib/screens/inbox/containers/ThreadConversationView.js +864 -1408
  49. package/lib/screens/inbox/containers/ThreadConversationView.js.map +1 -1
  50. package/lib/screens/inbox/containers/ThreadsView.js +9 -15
  51. package/lib/screens/inbox/containers/ThreadsView.js.map +1 -1
  52. package/lib/screens/inbox/hooks/useInboxMessages.js +31 -0
  53. package/lib/screens/inbox/hooks/useInboxMessages.js.map +1 -0
  54. package/lib/screens/inbox/hooks/useSafeDialogThreadsMachine.js +1 -1
  55. package/lib/screens/inbox/hooks/useSafeDialogThreadsMachine.js.map +1 -1
  56. package/lib/screens/inbox/workflow/dialog-threads-xstate.js.map +1 -1
  57. package/package.json +10 -8
  58. package/CHANGELOG.md +0 -172
  59. package/jest.config.js +0 -24
  60. package/lib/screens/inbox/components/DialogsListItem.js +0 -548
  61. package/lib/screens/inbox/components/DialogsListItem.js.map +0 -1
  62. package/lib/screens/inbox/components/ServiceDialogsListItem.js +0 -489
  63. package/lib/screens/inbox/components/ServiceDialogsListItem.js.map +0 -1
  64. package/lib/screens/inbox/components/workflow/dialogs-list-item-xstate.js +0 -175
  65. package/lib/screens/inbox/components/workflow/dialogs-list-item-xstate.js.map +0 -1
  66. package/lib/screens/inbox/components/workflow/service-dialogs-list-item-xstate.js +0 -191
  67. package/lib/screens/inbox/components/workflow/service-dialogs-list-item-xstate.js.map +0 -1
  68. package/lib/screens/inbox/containers/workflow/conversation-xstate.js +0 -380
  69. package/lib/screens/inbox/containers/workflow/conversation-xstate.js.map +0 -1
  70. package/lib/screens/inbox/containers/workflow/dialogs-xstate.js +0 -211
  71. package/lib/screens/inbox/containers/workflow/dialogs-xstate.js.map +0 -1
  72. package/lib/screens/inbox/containers/workflow/thread-conversation-xstate.js +0 -438
  73. package/lib/screens/inbox/containers/workflow/thread-conversation-xstate.js.map +0 -1
  74. package/rollup.config.mjs +0 -45
  75. package/src/components/index.ts +0 -0
  76. package/src/compute.ts +0 -63
  77. package/src/index.ts +0 -7
  78. package/src/module.ts +0 -10
  79. package/src/navigation/InboxNavigation.tsx +0 -102
  80. package/src/navigation/index.ts +0 -1
  81. package/src/screens/inbox/DialogMessages.tsx +0 -21
  82. package/src/screens/inbox/DialogThreadMessages.tsx +0 -97
  83. package/src/screens/inbox/DialogThreads.tsx +0 -125
  84. package/src/screens/inbox/Inbox.tsx +0 -17
  85. package/src/screens/inbox/components/CachedImage/consts.ts +0 -6
  86. package/src/screens/inbox/components/CachedImage/index.tsx +0 -223
  87. package/src/screens/inbox/components/DialogsHeader.tsx +0 -30
  88. package/src/screens/inbox/components/DialogsListItem.tsx +0 -819
  89. package/src/screens/inbox/components/ServiceDialogsListItem.tsx +0 -679
  90. package/src/screens/inbox/components/SlackMessageContainer/ImageViewerModal.tsx +0 -113
  91. package/src/screens/inbox/components/SlackMessageContainer/SlackBubble.tsx +0 -313
  92. package/src/screens/inbox/components/SlackMessageContainer/SlackMessage.tsx +0 -145
  93. package/src/screens/inbox/components/SlackMessageContainer/index.ts +0 -3
  94. package/src/screens/inbox/components/SmartLoader.tsx +0 -61
  95. package/src/screens/inbox/components/SupportServiceDialogsListItem.tsx +0 -301
  96. package/src/screens/inbox/components/ThreadsViewItem.tsx +0 -233
  97. package/src/screens/inbox/components/workflow/dialogs-list-item-xstate.ts +0 -145
  98. package/src/screens/inbox/components/workflow/service-dialogs-list-item-xstate.ts +0 -159
  99. package/src/screens/inbox/config/config.ts +0 -15
  100. package/src/screens/inbox/config/index.ts +0 -1
  101. package/src/screens/inbox/containers/ConversationView.tsx +0 -1784
  102. package/src/screens/inbox/containers/Dialogs.tsx +0 -829
  103. package/src/screens/inbox/containers/SupportServiceDialogs.tsx +0 -119
  104. package/src/screens/inbox/containers/ThreadConversationView.tsx +0 -2295
  105. package/src/screens/inbox/containers/ThreadsView.tsx +0 -224
  106. package/src/screens/inbox/containers/workflow/apollo/handleResult.ts +0 -20
  107. package/src/screens/inbox/containers/workflow/conversation-xstate.ts +0 -313
  108. package/src/screens/inbox/containers/workflow/dialogs-xstate.ts +0 -196
  109. package/src/screens/inbox/containers/workflow/thread-conversation-xstate.ts +0 -401
  110. package/src/screens/inbox/hooks/useSafeDialogThreadsMachine.ts +0 -136
  111. package/src/screens/inbox/index.ts +0 -37
  112. package/src/screens/inbox/machines/threadsMachine.ts +0 -147
  113. package/src/screens/inbox/workflow/dialog-threads-xstate.ts +0 -163
  114. package/src/screens/index.ts +0 -4
  115. package/tsconfig.json +0 -13
  116. package/webpack.config.js +0 -58
@@ -1 +1 @@
1
- {"version":3,"file":"ConversationView.js","sources":["../../../../src/screens/inbox/containers/ConversationView.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n Avatar,\n AvatarFallbackText,\n AvatarImage,\n Box,\n Button,\n ButtonText,\n HStack,\n Icon,\n Image,\n Spinner,\n Text,\n} from '@admin-layout/gluestack-ui-mobile';\nimport { Platform, TouchableHighlight, SafeAreaView, View } from 'react-native';\nimport { useFocusEffect, useIsFocused, useNavigation } from '@react-navigation/native';\nimport { navigationRef } from '@common-stack/client-react';\nimport { useSelector } from 'react-redux';\nimport { orderBy, startCase, uniqBy } from 'lodash-es';\nimport * as ImagePicker from 'expo-image-picker';\nimport { encode as atob } from 'base-64';\nimport { Ionicons, MaterialCommunityIcons } from '@expo/vector-icons';\nimport { Actions, GiftedChat, IMessage, MessageText, Send, Composer, InputToolbar } from 'react-native-gifted-chat';\nimport { PreDefinedRole, RoomType, IExpoNotificationData, IFileInfo } from 'common';\nimport {\n OnChatMessageAddedDocument as CHAT_MESSAGE_ADDED,\n useMessagesQuery,\n useSendExpoNotificationOnPostMutation,\n useSendMessagesMutation,\n useViewChannelDetailQuery,\n useAddDirectChannelMutation,\n} from 'common/graphql';\nimport { useUploadFilesNative } from '@messenger-box/platform-client';\nimport { objectId } from '@messenger-box/core';\nimport { userSelector } from '@adminide-stack/user-auth0-client';\nimport { format, isToday, isYesterday } from 'date-fns';\nimport { ImageViewerModal, SlackMessage } from '../components/SlackMessageContainer';\nimport CachedImage from '../components/CachedImage';\nimport { config } from '../config';\nimport {\n conversationXstate,\n Actions as ConversationActions,\n BaseState,\n MainState,\n} from './workflow/conversation-xstate';\nimport colors from 'tailwindcss/colors';\n\n// Define an extended interface for ImagePickerAsset with url property\ninterface ExtendedImagePickerAsset extends ImagePicker.ImagePickerAsset {\n url?: string;\n fileName?: string;\n mimeType?: string;\n}\n\nconst {\n MESSAGES_PER_PAGE,\n CALL_TO_ACTION_BOX_BGCOLOR,\n CALL_TO_ACTION_PATH,\n CALL_TO_ACTION_BUTTON_BORDERCOLOR,\n CALL_TO_ACTION_TEXT_COLOR,\n} = config;\n\nconst createdAtText = (value: string) => {\n if (!value) return '';\n let date = new Date(value);\n if (isToday(date)) return 'Today';\n if (isYesterday(date)) return 'Yesterday';\n return format(new Date(value), 'MMM dd, yyyy');\n};\n\ninterface ISubscriptionHandlerProps {\n subscribeToNewMessages: () => any;\n channelId: string;\n}\n\ninterface IMessageProps extends IMessage {\n type: string;\n propsConfiguration?: any;\n replies?: any;\n isShowThreadMessage?: boolean;\n}\n\nexport interface AlertMessageAttachmentsInterface {\n title: string;\n isTitleHtml: boolean;\n icon: string;\n callToAction: {\n title: string;\n link: string;\n };\n}\n\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 channelMessages: 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 };\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 channelMessages: [],\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 },\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('Event received:', event.type);\n\n // Handle specific events manually\n if (event.type === ConversationActions.INITIAL_CONTEXT) {\n setState((prev) => ({\n ...prev,\n context: {\n ...prev.context,\n channelId: event.data?.channelId || null,\n },\n value: BaseState.FetchMessages,\n }));\n } else if (event.type === ConversationActions.SET_CHANNEL_MESSAGES) {\n setState((prev) => ({\n ...prev,\n context: {\n ...prev.context,\n channelMessages: event.data?.messages || [],\n totalCount: event.data?.totalCount || 0,\n loading: false,\n loadingOldMessages: false,\n },\n value: 'active',\n }));\n } else if (event.type === ConversationActions.CLEAR_MESSAGES) {\n setState((prev) => ({\n ...prev,\n context: {\n ...prev.context,\n channelMessages: [],\n totalCount: 0,\n },\n }));\n } else if (event.type === ConversationActions.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 === ConversationActions.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 === ConversationActions.SET_IMAGE) {\n setState((prev) => ({\n ...prev,\n context: {\n ...prev.context,\n selectedImage: event.data?.image || '',\n images: event.data?.images || [],\n imageLoading: false,\n },\n }));\n } else if (event.type === ConversationActions.CLEAR_IMAGE) {\n setState((prev) => ({\n ...prev,\n context: {\n ...prev.context,\n selectedImage: '',\n images: [],\n },\n }));\n } else if (event.type === ConversationActions.START_LOADING) {\n setState((prev) => ({\n ...prev,\n context: {\n ...prev.context,\n loading: true,\n },\n }));\n } else if (event.type === ConversationActions.STOP_LOADING) {\n setState((prev) => ({\n ...prev,\n context: {\n ...prev.context,\n loading: false,\n },\n }));\n } else if (event.type === ConversationActions.SEND_MESSAGE) {\n setState((prev) => ({\n ...prev,\n context: {\n ...prev.context,\n loading: true,\n },\n value: MainState.SendMessage,\n }));\n } else if (event.type === ConversationActions.SEND_MESSAGE_WITH_FILE) {\n setState((prev) => ({\n ...prev,\n context: {\n ...prev.context,\n loading: true,\n },\n value: MainState.SendMessageWithFile,\n }));\n } else if (event.type === ConversationActions.CREATE_DIRECT_CHANNEL) {\n setState((prev) => ({\n ...prev,\n context: {\n ...prev.context,\n loading: true,\n },\n value: MainState.CreateDirectChannel,\n }));\n } else if (event.type === 'SEND_MESSAGE_SUCCESS' || event.type === 'SEND_MESSAGE_WITH_FILE_SUCCESS') {\n setState((prev) => ({\n ...prev,\n context: {\n ...prev.context,\n loading: false,\n messageText: '',\n images: [],\n selectedImage: '',\n },\n value: 'active',\n }));\n } else if (event.type === 'CREATE_DIRECT_CHANNEL_SUCCESS') {\n setState((prev) => ({\n ...prev,\n context: {\n ...prev.context,\n loading: false,\n channelId: event.data?.channelId || prev.context.channelId,\n messageText: '',\n },\n value: BaseState.FetchMessages,\n }));\n } else if (event.type === 'FETCH_MORE_MESSAGES_SUCCESS') {\n setState((prev) => {\n const newMessages = event.data?.messages || [];\n return {\n ...prev,\n context: {\n ...prev.context,\n loadingOldMessages: false,\n channelMessages: uniqBy([...prev.context.channelMessages, ...newMessages], ({ id }) => id),\n },\n value: 'active',\n };\n });\n } else if (event.type === 'ERROR') {\n setState((prev) => ({\n ...prev,\n context: {\n ...prev.context,\n loading: false,\n loadingOldMessages: false,\n error: event.data?.message || 'Unknown error',\n },\n value: 'error',\n }));\n }\n } catch (error) {\n console.error('Error in 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\nconst ConversationViewComponent = ({ channelId: ChannelId, role, isShowThreadMessage, ...rest }: 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(conversationXstate);\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 // Immediately set initial context if needed\n useEffect(() => {\n if (ChannelId) {\n console.log('Setting initial channel ID on mount:', ChannelId);\n try {\n send({\n type: ConversationActions.INITIAL_CONTEXT,\n data: { channelId: ChannelId },\n });\n } catch (error) {\n console.error('Error sending initial context:', error);\n }\n }\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 // Avoid referencing state.context directly in places that might cause undefined errors\n const safeGetContext = useCallback(() => {\n if (stateRef.current && stateRef.current.context) {\n return stateRef.current.context;\n }\n // Return default values if context is undefined\n return {\n channelId: null,\n channelMessages: [],\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 };\n }, []);\n\n // Use cleanup function to prevent setting state after unmount\n useEffect(() => {\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n\n const auth: any = useSelector(userSelector);\n const currentRoute = navigationRef.isReady() ? navigationRef?.getCurrentRoute() : null;\n const navigation = useNavigation<any>();\n const [selectedImage, setImage] = useState<string>('');\n const [isShowImageViewer, setImageViewer] = useState<boolean>(false);\n const [imageObject, setImageObject] = useState<any>({});\n const messageRootListRef = useRef<any>(null);\n const isFocused = useIsFocused();\n\n const [addDirectChannel] = useAddDirectChannelMutation();\n const { startUpload } = useUploadFilesNative();\n const [sendMsg] = useSendMessagesMutation();\n const [sendExpoNotificationOnPostMutation] = useSendExpoNotificationOnPostMutation();\n\n const {\n data,\n loading: messageLoading,\n refetch,\n fetchMore: fetchMoreMessages,\n subscribeToMore,\n }: any = useMessagesQuery({\n variables: {\n channelId: state.context.channelId?.toString(),\n parentId: null,\n limit: MESSAGES_PER_PAGE,\n skip: state.context.skip,\n },\n skip: !state.context.channelId,\n fetchPolicy: 'cache-and-network',\n nextFetchPolicy: 'cache-first',\n refetchWritePolicy: 'merge',\n onCompleted: (queryData) => {\n console.log('MESSAGE QUERY COMPLETED:', queryData);\n if (queryData?.messages?.data) {\n console.log(\n 'Raw message data from query:',\n JSON.stringify(queryData.messages.data).substring(0, 100) + '...',\n );\n console.log('Message count from query:', queryData.messages.data.length);\n console.log('Total count from query:', queryData.messages.totalCount);\n }\n },\n onError: (error) => {\n console.error('MESSAGE QUERY ERROR:', error);\n },\n });\n\n // Modify the fetchMessagesDirectly function to use safe access\n const fetchMessagesDirectly = useCallback(async () => {\n const channelId = safeGetContext().channelId;\n if (!channelId) {\n console.warn('Cannot fetch messages: No channel ID');\n return;\n }\n\n try {\n console.log('💫 FETCHING messages for channel:', channelId);\n\n // Use loading state to prevent duplicate fetches\n send({ type: ConversationActions.START_LOADING });\n\n const response = await refetch({\n channelId: channelId.toString(),\n parentId: null,\n limit: MESSAGES_PER_PAGE,\n skip: 0,\n });\n\n if (response?.data?.messages) {\n const { data: messages, totalCount } = response.data.messages;\n\n if (messages && messages.length > 0) {\n // Batch update to reduce renders\n safeSend({\n type: ConversationActions.SET_CHANNEL_MESSAGES,\n data: { messages, totalCount },\n });\n } else {\n console.warn('No messages found for channel', channelId);\n // Still clear loading state\n send({ type: ConversationActions.STOP_LOADING });\n }\n } else {\n console.warn('Query returned no messages data');\n send({ type: ConversationActions.STOP_LOADING });\n }\n } catch (error) {\n console.error('ERROR fetching messages:', error);\n send({ type: ConversationActions.STOP_LOADING });\n }\n }, [safeGetContext, refetch, safeSend]);\n\n const fetchMoreMessagesImpl = useCallback(async () => {\n try {\n const response = await fetchMoreMessages({\n variables: {\n channelId: state.context.channelId?.toString(),\n parentId: null,\n skip: state.context.channelMessages.length,\n },\n });\n\n if (!response?.data?.messages?.data) {\n return { error: 'No messages returned' };\n }\n\n return { messages: response.data.messages.data };\n } catch (error) {\n return { error: String(error) };\n }\n }, [state.context.channelId, state.context.channelMessages.length, fetchMoreMessages]);\n\n const sendMessageImpl = useCallback(async () => {\n try {\n const notificationData: IExpoNotificationData = {\n url: config.INBOX_MESSEGE_PATH,\n params: { channelId: state.context.channelId, hideTabBar: true },\n screen: 'DialogMessages',\n other: { sound: Platform.OS === 'android' ? undefined : 'default' },\n };\n\n const response = await sendMsg({\n variables: {\n channelId: state.context.channelId,\n content: state.context.messageText,\n notificationParams: notificationData,\n },\n });\n\n return { message: response.data?.sendMessage };\n } catch (error) {\n return { error: String(error) };\n }\n }, [state.context.channelId, state.context.messageText, sendMsg]);\n\n // Fix the image selection process to ensure proper format for upload\n const onSelectImages = async () => {\n safeSend({ type: ConversationActions.START_LOADING });\n\n try {\n console.log('Starting image picker...');\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 console.log(\n 'Image selected. Asset details:',\n JSON.stringify({\n uri: imageSource?.assets?.[0]?.uri?.substring(0, 30) + '...',\n width: imageSource?.assets?.[0]?.width,\n height: imageSource?.assets?.[0]?.height,\n hasBase64: !!imageSource?.assets?.[0]?.base64,\n hasUri: !!imageSource?.assets?.[0]?.uri,\n }),\n );\n\n // Get the asset\n const selectedAsset = imageSource?.assets?.[0];\n if (!selectedAsset) {\n console.error('No asset found in selected image');\n safeSend({ type: ConversationActions.STOP_LOADING });\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 console.log('Prepared image asset for upload:', {\n hasUrl: !!asset.url,\n hasFileName: !!asset.fileName,\n hasMimeType: !!asset.mimeType,\n previewAvailable: !!previewImage,\n });\n\n // Update state with the new image\n safeSend({\n type: ConversationActions.SET_IMAGE,\n data: {\n image: previewImage,\n images: [asset], // Replace existing images with the new one\n },\n });\n\n console.log('Image state updated successfully');\n } else {\n console.log('Image selection cancelled');\n safeSend({ type: ConversationActions.STOP_LOADING });\n }\n } catch (error) {\n console.error('Error selecting image:', error);\n safeSend({ type: ConversationActions.STOP_LOADING });\n }\n };\n\n // Update the sendMessageWithFileImpl function to fix image uploads\n const sendMessageWithFileImpl = useCallback(async () => {\n try {\n console.log('Executing sendMessageWithFileImpl');\n\n // Generate a unique post ID for the message\n const postId = objectId();\n console.log('Generated postId for file upload:', postId);\n\n // Prepare notification data\n const notificationData: IExpoNotificationData = {\n url: config.INBOX_MESSEGE_PATH,\n params: { channelId: state.context.channelId, hideTabBar: true },\n screen: 'DialogMessages',\n other: { sound: Platform.OS === 'android' ? undefined : 'default' },\n };\n\n // Safety check for images\n if (!state.context.images || state.context.images.length === 0) {\n console.error('No images found in state');\n return { error: 'No images available to upload' };\n }\n\n // Format the images for upload if needed\n const imagesToUpload = state.context.images.map((img) => {\n // Ensure the image has all required properties\n return {\n ...img,\n uri: img.uri || img.url, // Use either uri or url\n type: 'image/jpeg',\n name: img.fileName || `image_${Date.now()}.jpg`,\n };\n });\n\n console.log(\n 'Formatted images for upload:',\n imagesToUpload.map((img) => ({\n hasUri: !!img.uri,\n hasUrl: !!img.url,\n hasName: !!img.name,\n hasType: !!img.type,\n hasFileName: !!img.fileName,\n uri: img.uri?.substring(0, 30) + '...',\n })),\n );\n\n // Upload the files\n console.log('Starting file upload...');\n const uploadResponse = await startUpload({\n file: imagesToUpload,\n saveUploadedFile: {\n variables: { postId },\n },\n createUploadLink: {\n variables: { postId },\n },\n });\n\n console.log(\n 'Upload response received:',\n uploadResponse?.data ? 'Has data' : 'No data',\n 'Error:',\n uploadResponse?.error ? uploadResponse.error : 'None',\n );\n\n if (uploadResponse?.error) {\n console.error('Upload error:', uploadResponse.error);\n return { error: String(uploadResponse.error) };\n }\n\n // Get uploaded file IDs\n const uploadedFiles = uploadResponse.data as unknown as IFileInfo[];\n console.log(\n 'Uploaded files:',\n uploadedFiles\n ? JSON.stringify(uploadedFiles.map((f) => ({ id: f.id, url: f.url?.substring(0, 30) + '...' })))\n : 'null',\n );\n\n const files = uploadedFiles?.map((f: any) => f.id) ?? null;\n\n console.log('Files uploaded successfully. File IDs:', files);\n\n // Send the message with the uploaded files\n console.log('Sending message with files:', {\n postId,\n channelId: state.context.channelId,\n content: state.context.messageText || ' ',\n hasFiles: !!files,\n fileCount: files?.length || 0,\n });\n\n const response = await sendMsg({\n variables: {\n postId,\n channelId: state.context.channelId,\n content: state.context.messageText || ' ', // Use a space if no text\n files,\n notificationParams: notificationData,\n },\n });\n\n if (response?.data?.sendMessage) {\n console.log('Message with file sent successfully:', response.data.sendMessage.id);\n\n // Log the file data from the response to verify it's being returned correctly\n if (response.data.sendMessage.files?.data) {\n console.log(\n '📷 Message response file data:',\n JSON.stringify({\n fileCount: response.data.sendMessage.files.data.length,\n fileUrl: response.data.sendMessage.files.data[0]?.url?.substring(0, 30) + '...',\n }),\n );\n }\n\n // Clear the images after successful send\n setTimeout(() => {\n safeSend({ type: ConversationActions.CLEAR_IMAGE });\n }, 100);\n } else {\n console.error('Failed to send message with file:', response?.errors);\n }\n\n return { message: response.data?.sendMessage };\n } catch (error) {\n console.error('Error in sendMessageWithFileImpl:', error);\n return { error: String(error) };\n }\n }, [state.context.channelId, state.context.messageText, state.context.images, startUpload, sendMsg, safeSend]);\n\n const createDirectChannelImpl = useCallback(async () => {\n try {\n if (\n !rest?.isCreateNewChannel ||\n rest?.newChannelData?.type !== RoomType?.Direct ||\n !rest?.newChannelData?.userIds?.length\n ) {\n return { error: 'Invalid channel data' };\n }\n\n const response = await addDirectChannel({\n variables: {\n receiver: [...(rest?.newChannelData?.userIds ?? [])],\n displayName: 'DIRECT CHANNEL',\n },\n });\n\n if (!response?.data?.createDirectChannel?.id) {\n return { error: 'Failed to create channel' };\n }\n\n const newChannelId = response.data.createDirectChannel.id;\n\n const notificationData: IExpoNotificationData = {\n url: config.INBOX_MESSEGE_PATH,\n params: { channelId: newChannelId, hideTabBar: true },\n screen: 'DialogMessages',\n other: { sound: Platform.OS === 'android' ? undefined : 'default' },\n };\n\n await sendMsg({\n variables: {\n channelId: newChannelId,\n content: state.context.messageText,\n notificationParams: notificationData,\n },\n });\n\n return { channelId: newChannelId };\n } catch (error) {\n return { error: String(error) };\n }\n }, [rest, state.context.messageText, addDirectChannel, sendMsg]);\n\n // Remove the implementation inside this effect\n useEffect(() => {\n // We've moved these implementations to useCallback hooks above\n }, [state.value, sendMsg, refetch, fetchMoreMessages, addDirectChannel, startUpload, rest, state.context]);\n\n React.useEffect(() => {\n return () => {\n send({ type: ConversationActions.CLEAR_MESSAGES });\n };\n }, []);\n\n useFocusEffect(\n React.useCallback(() => {\n if (state.context.channelId) {\n send({ type: ConversationActions.INITIAL_CONTEXT, data: { channelId: state.context.channelId } });\n }\n return () => {\n send({ type: ConversationActions.CLEAR_MESSAGES });\n };\n }, [state.context.channelId, isFocused]),\n );\n\n React.useEffect(() => {\n const currentChannelId = ChannelId || currentRoute?.params?.channelId;\n if (currentChannelId) {\n console.log('Setting initial channel ID:', currentChannelId);\n send({ type: ConversationActions.INITIAL_CONTEXT, data: { channelId: currentChannelId } });\n }\n }, [ChannelId, currentRoute]);\n\n React.useEffect(() => {\n if (state.context.selectedImage) {\n send({ type: ConversationActions.STOP_LOADING });\n }\n }, [state.context.selectedImage]);\n\n useEffect(() => {\n if (data?.messages?.data) {\n console.log('📩 QUERY DATA CHANGED - Messages received:', data.messages.data.length);\n const { data: messages, totalCount: messageTotalCount } = data.messages;\n\n if (messages && messages.length > 0) {\n console.log('📩 QUERY DATA - Setting channel messages, count:', messages.length);\n\n // First try dispatching the update through XState\n send({\n type: ConversationActions.SET_CHANNEL_MESSAGES,\n data: {\n messages: uniqBy([...messages, ...state.context.channelMessages], ({ id }) => id),\n totalCount: messageTotalCount,\n },\n });\n\n // Debug: Log the first message to verify data format\n if (messages[0]) {\n const sample = messages[0];\n console.log(\n '📩 SAMPLE MESSAGE:',\n JSON.stringify({\n id: sample.id,\n message: sample.message,\n author: {\n id: sample.author?.id,\n name: `${sample.author?.givenName} ${sample.author?.familyName}`,\n },\n createdAt: sample.createdAt,\n }),\n );\n }\n\n // Check if the state machine actually updated (debug only)\n setTimeout(() => {\n if (state.context.channelMessages?.length === 0) {\n console.warn('⚠️ STATE NOT UPDATED after message data received - may need fallback');\n }\n }, 500);\n }\n }\n }, [data]);\n\n // Optimize onFetchOld by adding debounce logic\n const onFetchOld = useCallback(() => {\n // Prevent multiple rapid calls\n if (fetchOldDebounceRef.current) return;\n\n // Check if we need to fetch more messages\n if (\n state?.context?.totalCount > state?.context?.channelMessages?.length &&\n !state?.context?.loadingOldMessages\n ) {\n // Set debounce\n fetchOldDebounceRef.current = true;\n\n // Send fetch event\n send({ type: ConversationActions.FETCH_MORE_MESSAGES });\n\n // Clear debounce after a timeout\n setTimeout(() => {\n fetchOldDebounceRef.current = false;\n }, 1000);\n }\n }, [state?.context?.totalCount, state?.context?.channelMessages, state?.context?.loadingOldMessages]);\n\n // Add debounce ref\n const fetchOldDebounceRef = useRef(false);\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 // Fix the render send function to ensure it works for image-only messages\n const renderSend = useCallback(\n (props) => {\n // Enable the send button if there's text OR we have images\n const hasContent = !!props.text || state?.context?.images?.length > 0;\n const canSend = (state?.context?.channelId || rest?.isCreateNewChannel) && hasContent;\n\n return (\n <Send\n {...props}\n disabled={!canSend}\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 >\n <View style={{ padding: 4 }}>\n <MaterialCommunityIcons\n name=\"send-circle\"\n size={32}\n color={canSend ? colors.blue[500] : colors.gray[400]}\n />\n </View>\n </Send>\n );\n },\n [state?.context?.channelId, state?.context?.images, rest?.isCreateNewChannel],\n );\n\n // Fix the handleSend function to properly handle image-only messages\n const handleSend = useCallback(\n async (messages) => {\n // Extract message text from GiftedChat messages array\n const messageText = messages && messages.length > 0 ? messages[0]?.text || ' ' : ' ';\n console.log('Sending message:', messageText);\n console.log('Images:', state.context.images?.length);\n\n // Check if we can send a message (channel exists or we're creating one)\n if (!state.context.channelId && !rest?.isCreateNewChannel) {\n console.log('Cannot send - no channel');\n return;\n }\n\n // Allow sending if we have text OR images (image-only messages are valid)\n const hasText = !!messageText && messageText !== ' ';\n const hasImages = state.context.images && state.context.images.length > 0;\n\n if (!hasText && !hasImages) {\n console.log('Nothing to send - no text or images');\n return;\n }\n\n // Set the message text in the state (even if empty for image-only messages)\n safeSend({ type: ConversationActions.SET_MESSAGE_TEXT, data: { messageText } });\n\n // Handle direct channel creation if needed\n if (rest?.isCreateNewChannel && !state.context.channelId) {\n if (rest?.newChannelData?.type === RoomType?.Direct) {\n safeSend({ type: ConversationActions.CREATE_DIRECT_CHANNEL });\n }\n return;\n }\n\n // Send message with or without image based on state\n if (hasImages) {\n console.log('Sending message with file');\n safeSend({ type: ConversationActions.SEND_MESSAGE_WITH_FILE });\n } else {\n console.log('Sending text-only message');\n safeSend({ type: ConversationActions.SEND_MESSAGE });\n }\n },\n [state.context.channelId, state.context.images, rest?.isCreateNewChannel, rest?.newChannelData?.type, safeSend],\n );\n\n // Update fetchMessagesWithFallback to not use fallback state\n const fetchMessagesWithFallback = useCallback(async () => {\n if (!state.context.channelId) return;\n\n try {\n console.log('🔄 DIRECT FETCH: Using direct approach for channel:', state.context.channelId);\n\n const response = await refetch({\n channelId: state.context.channelId?.toString(),\n parentId: null,\n limit: MESSAGES_PER_PAGE,\n skip: 0,\n });\n\n if (response?.data?.messages?.data) {\n const messages = response.data.messages.data;\n console.log('✅ DIRECT FETCH: Got messages:', messages.length);\n\n // Skip fallback and send directly to state machine\n send({\n type: ConversationActions.SET_CHANNEL_MESSAGES,\n data: {\n messages,\n totalCount: response.data.messages.totalCount,\n },\n });\n }\n } catch (error) {\n console.error('❌ DIRECT FETCH ERROR:', error);\n }\n }, [state.context.channelId, refetch]);\n\n // Auto-trigger fallback if needed\n useEffect(() => {\n let timeoutId: NodeJS.Timeout;\n\n if (state.context.channelId && state.context.channelMessages.length === 0) {\n timeoutId = setTimeout(() => {\n console.log('⚠️ ACTIVATING FALLBACK - XState not updating after timeout');\n fetchMessagesWithFallback();\n }, 3000); // Wait 3 seconds for normal flow to work\n }\n\n return () => {\n if (timeoutId) clearTimeout(timeoutId);\n };\n }, [state.context.channelId, state.context.channelMessages, fetchMessagesWithFallback]);\n\n // Optimize the messageList calculation for better performance\n const messageList = useMemo(() => {\n // Only recalculate when these dependencies change\n console.log('🔄 CALCULATING MESSAGE LIST - Optimized version');\n\n // Short-circuit if no messages to process\n if (!state?.context?.channelMessages || state.context.channelMessages.length === 0) {\n console.log('No messages to process');\n return [];\n }\n\n // Use a more efficient approach - pre-filter messages once\n const filteredMessages = uniqBy(state.context.channelMessages, ({ id }) => id);\n\n // Skip processing if no filtered messages\n if (filteredMessages.length === 0) {\n return [];\n }\n\n // Transform messages only once and return\n return orderBy(filteredMessages, ['createdAt'], ['desc']).map((msg) => {\n const date = new Date(msg.createdAt);\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 // Create message in a more direct way\n return {\n _id: msg.id,\n text: msg.message,\n createdAt: date,\n user: {\n _id: msg.author?.id || '',\n name: `${msg.author?.givenName || ''} ${msg.author?.familyName || ''}`,\n avatar: msg.author?.picture || '',\n },\n image: imageUrl,\n sent: msg?.isDelivered,\n received: msg?.isRead,\n type: msg?.type,\n propsConfiguration: msg?.propsConfiguration,\n replies: msg?.replies ?? [],\n isShowThreadMessage,\n };\n });\n }, [state?.context?.channelMessages, isShowThreadMessage]);\n\n // Memoize the renderMessageText function\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 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: state?.context?.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: state?.context?.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, state?.context?.channelId, role],\n );\n\n const renderActions = (props) => {\n return (\n <Actions\n {...props}\n options={{\n ['Choose from Library']: onSelectImages,\n ['Cancel']: () => {}, // Add this option to make the sheet dismissible\n }}\n optionTintColor=\"#000000\"\n cancelButtonIndex={1} // Set the Cancel option as the cancel button\n icon={() => (\n <Box\n style={{\n width: 32,\n height: 32,\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <Ionicons name=\"image\" size={24} color={colors.blue[500]} />\n </Box>\n )}\n containerStyle={{\n alignItems: 'center',\n justifyContent: 'center',\n marginLeft: 8,\n marginBottom: 0,\n }}\n />\n );\n };\n\n // Create a more visible and reliable image preview with cancel button\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: 50,\n padding: 3,\n backgroundColor: 'white',\n borderTopWidth: 1,\n borderTopColor: '#e0e0e0',\n flexDirection: 'row',\n alignItems: 'center',\n margin: 0,\n paddingBottom: 0,\n paddingTop: 5,\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n zIndex: 999,\n }}\n >\n <View\n style={{\n flex: 1,\n flexDirection: 'row',\n alignItems: 'center',\n paddingHorizontal: 15,\n }}\n >\n <Image\n key={state?.context?.selectedImage}\n alt={'selected image'}\n source={{ uri: state?.context?.selectedImage }}\n style={{\n width: 36,\n height: 36,\n borderRadius: 5,\n marginRight: 15,\n }}\n size={'xs'}\n />\n\n <TouchableHighlight\n underlayColor=\"#dddddd\"\n onPress={() => safeSend({ type: ConversationActions.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 setImageViewerObject = (obj: any, v: boolean) => {\n setImageObject(obj);\n setImageViewer(v);\n };\n\n const modalContent = React.useMemo(() => {\n if (!imageObject) return <></>;\n const { image, _id } = imageObject;\n return (\n <CachedImage\n style={{ width: '100%', height: '100%' }}\n resizeMode={'cover'}\n cacheKey={`${_id}-slack-bubble-imageKey`}\n source={{\n uri: image,\n expiresIn: 86400,\n }}\n alt={'image'}\n />\n );\n }, [imageObject]);\n\n const renderMessage = useCallback(\n (props: any) => {\n // Use memo to prevent unnecessary re-renders of each message\n return (\n <SlackMessage {...props} isShowImageViewer={isShowImageViewer} setImageViewer={setImageViewerObject} />\n );\n },\n [isShowImageViewer],\n );\n\n let onScroll = false;\n\n // Optimize onMomentumScrollBegin for better scroll performance\n const onMomentumScrollBegin = async ({ nativeEvent }: any) => {\n // Set scroll state\n onScroll = true;\n\n // Use the debounced fetch function to prevent excessive calls\n if (isCloseToTop(nativeEvent)) {\n onFetchOld();\n }\n };\n\n const onEndReached = () => {\n console.log('on end reached');\n if (!onScroll) return;\n onScroll = false;\n };\n\n // Add debug logging to help diagnose the issue\n useEffect(() => {\n console.log('Current channel ID:', state.context.channelId);\n console.log('Current state:', state.value);\n console.log('Channel messages count:', state.context.channelMessages.length);\n }, [state.context.channelId, state.value, state.context.channelMessages]);\n\n // Fix the infinite update loop in useEffect monitoring state changes\n useEffect(() => {\n // Only trigger effect if we have a specific state to handle\n // Check if function exists and if we're in a valid state before calling implementation functions\n if (state && typeof state.matches === 'function') {\n if (state.matches(BaseState.FetchMessages)) {\n console.log('In FetchMessages state, attempting to fetch messages');\n // Use a ref to track if we've already fetched for this state update\n if (!fetchInProgressRef.current) {\n fetchInProgressRef.current = true;\n fetchMessagesDirectly().finally(() => {\n fetchInProgressRef.current = false;\n });\n }\n } else if (state.matches(MainState.FetchMoreMessages)) {\n if (!fetchMoreInProgressRef.current) {\n fetchMoreInProgressRef.current = true;\n fetchMoreMessagesImpl().then((result) => {\n if (result.error) {\n console.error('Error fetching more messages:', result.error);\n safeSend({ type: 'ERROR', data: { message: result.error } });\n } else {\n safeSend({ type: 'FETCH_MORE_MESSAGES_SUCCESS', data: result });\n }\n fetchMoreInProgressRef.current = false;\n });\n }\n } else if (state.matches(MainState.SendMessage)) {\n if (!sendInProgressRef.current) {\n sendInProgressRef.current = true;\n sendMessageImpl().then((result) => {\n if (result.error) {\n console.error('Error sending message:', result.error);\n safeSend({ type: 'ERROR', data: { message: result.error } });\n } else {\n safeSend({ type: 'SEND_MESSAGE_SUCCESS', data: result });\n }\n sendInProgressRef.current = false;\n });\n }\n } else if (state.matches(MainState.SendMessageWithFile)) {\n if (!sendFileInProgressRef.current) {\n sendFileInProgressRef.current = true;\n sendMessageWithFileImpl().then((result) => {\n if (result.error) {\n console.error('Error sending message with file:', result.error);\n safeSend({ type: 'ERROR', data: { message: result.error } });\n } else {\n safeSend({ type: 'SEND_MESSAGE_WITH_FILE_SUCCESS', data: result });\n }\n sendFileInProgressRef.current = false;\n });\n }\n } else if (state.matches(MainState.CreateDirectChannel)) {\n if (!createChannelInProgressRef.current) {\n createChannelInProgressRef.current = true;\n createDirectChannelImpl().then((result) => {\n if (result.error) {\n console.error('Error creating direct channel:', result.error);\n safeSend({ type: 'ERROR', data: { message: result.error } });\n } else {\n safeSend({ type: 'CREATE_DIRECT_CHANNEL_SUCCESS', data: result });\n }\n createChannelInProgressRef.current = false;\n });\n }\n }\n }\n }, [\n state?.value,\n fetchMessagesDirectly,\n fetchMoreMessagesImpl,\n sendMessageImpl,\n sendMessageWithFileImpl,\n createDirectChannelImpl,\n safeSend,\n ]);\n\n // Add refs to prevent duplicate operations\n const fetchInProgressRef = useRef(false);\n const fetchMoreInProgressRef = useRef(false);\n const sendInProgressRef = useRef(false);\n const sendFileInProgressRef = useRef(false);\n const createChannelInProgressRef = useRef(false);\n\n // Fix subscription handler to prevent infinite updates\n const renderChatFooter = useCallback(() => {\n return (\n <>\n <ImageViewerModal\n isVisible={isShowImageViewer}\n setVisible={setImageViewer}\n modalContent={modalContent}\n />\n <SubscriptionHandler\n channelId={state?.context?.channelId?.toString()}\n subscribeToNewMessages={() =>\n subscribeToMore({\n document: CHAT_MESSAGE_ADDED,\n variables: {\n channelId: state?.context?.channelId?.toString(),\n },\n updateQuery: (prev, { subscriptionData }: any) => {\n if (!subscriptionData?.data?.chatMessageAdded) return prev;\n\n const newMessage = subscriptionData.data.chatMessageAdded;\n const currentMessages = prev?.messages?.data || [];\n\n // Check if message already exists to prevent duplicates\n if (currentMessages.some((msg) => msg.id === newMessage.id)) {\n return prev; // Skip update if message already exists\n }\n\n // Use a ref to track the last processed message ID to prevent duplicate processing\n if (lastProcessedMessageRef.current === newMessage.id) {\n return prev;\n }\n\n lastProcessedMessageRef.current = newMessage.id;\n\n // Use a batch update strategy to avoid frequent re-renders\n queueMicrotask(() => {\n safeSend({\n type: ConversationActions.SET_CHANNEL_MESSAGES,\n data: {\n messages: uniqBy(\n [...state.context.channelMessages, newMessage],\n ({ id }) => id,\n ),\n totalCount: (prev?.messages?.totalCount || 0) + 1,\n },\n });\n });\n\n return {\n ...prev,\n messages: {\n ...prev?.messages,\n data: [...currentMessages, newMessage],\n totalCount: (prev?.messages?.totalCount || 0) + 1,\n },\n };\n },\n })\n }\n />\n </>\n );\n }, [\n isShowImageViewer,\n modalContent,\n state?.context?.channelId,\n state?.context?.channelMessages,\n subscribeToMore,\n safeSend,\n ]);\n\n // Add ref to track last processed message\n const lastProcessedMessageRef = useRef(null);\n\n // Add optimized listViewProps to reduce re-renders and improve list performance\n const listViewProps = useMemo(\n () => ({\n onEndReached: onEndReached,\n onEndReachedThreshold: 0.5,\n onMomentumScrollBegin: onMomentumScrollBegin,\n removeClippedSubviews: true, // Improve performance by unmounting components when not visible\n initialNumToRender: 10, // Reduce initial render amount\n maxToRenderPerBatch: 7, // Reduce number in each render batch\n windowSize: 7, // Reduce the window size\n updateCellsBatchingPeriod: 50, // Batch cell updates to improve scrolling\n keyExtractor: (item) => item._id, // Add explicit key extractor\n }),\n [onEndReached, onMomentumScrollBegin],\n );\n\n // Add a loader for when more messages are being loaded\n const renderLoadEarlier = useCallback(() => {\n return state?.context?.loadingOldMessages ? (\n <View\n style={{\n padding: 10,\n backgroundColor: 'rgba(255,255,255,0.8)',\n borderRadius: 10,\n marginTop: 10,\n }}\n >\n <Spinner size=\"small\" color=\"#3b82f6\" />\n </View>\n ) : null;\n }, [state?.context?.loadingOldMessages]);\n\n // Add renderInputToolbar function\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: 0,\n paddingTop: 2,\n marginBottom: 0,\n marginTop: 0,\n }}\n primaryStyle={{\n alignItems: 'center',\n }}\n />\n );\n }, []);\n\n // Return optimized component with performance improvements\n return (\n <View\n style={{\n flex: 1,\n backgroundColor: 'white',\n }}\n >\n {state?.matches && state.matches(BaseState.FetchMessages) && <Spinner color={'#3b82f6'} />}\n\n <GiftedChat\n ref={messageRootListRef}\n wrapInSafeArea={true}\n renderLoading={() => <Spinner color={'#3b82f6'} />}\n messages={messageList}\n listViewProps={{\n ...listViewProps,\n contentContainerStyle: {\n paddingBottom: 10,\n },\n keyboardShouldPersistTaps: 'handled',\n }}\n onSend={handleSend}\n text={safeContextProperty('messageText', ' ') || ' '}\n onInputTextChanged={(text) =>\n safeSend({ type: ConversationActions.SET_MESSAGE_TEXT, data: { messageText: text } })\n }\n renderFooter={() =>\n safeContextProperty('loading') || safeContextProperty('imageLoading') ? (\n <Spinner color={'#3b82f6'} />\n ) : null\n }\n scrollToBottom\n user={{\n _id: auth?.id || '',\n }}\n isTyping={false} // Setting to false to reduce animations\n alwaysShowSend={true} // Always show send button regardless of text content\n renderSend={renderSend}\n renderMessageText={renderMessageText}\n renderInputToolbar={renderInputToolbar}\n minInputToolbarHeight={50}\n renderActions={safeContextProperty('channelId') && renderActions}\n renderAccessory={!!state?.context?.selectedImage ? renderAccessory : undefined}\n renderMessage={renderMessage}\n renderChatFooter={renderChatFooter}\n renderLoadEarlier={renderLoadEarlier}\n loadEarlier={state?.context?.totalCount > state?.context?.channelMessages?.length}\n isLoadingEarlier={state?.context?.loadingOldMessages}\n bottomOffset={Platform.OS === 'ios' ? 10 : 0} // Reduce bottom offset\n textInputProps={{\n style: {\n borderWidth: 1,\n borderColor: colors.gray[300],\n backgroundColor: '#f8f8f8',\n borderRadius: 20,\n minHeight: 36,\n maxHeight: 80,\n color: '#000',\n padding: 8,\n paddingHorizontal: 15,\n fontSize: 16,\n flex: 1,\n marginVertical: 2,\n marginBottom: 0,\n },\n multiline: true,\n returnKeyType: 'default',\n enablesReturnKeyAutomatically: true,\n placeholderTextColor: colors.gray[400],\n }}\n minComposerHeight={36}\n maxComposerHeight={100}\n isKeyboardInternallyHandled={true}\n placeholder=\"Type a message...\"\n lightboxProps={{\n underlayColor: 'transparent',\n springConfig: { tension: 90000, friction: 90000 },\n disabled: true,\n }}\n infiniteScroll={false} // Disable automatic loading\n />\n </View>\n );\n};\n\nconst SubscriptionHandler = ({ subscribeToNewMessages, channelId }: ISubscriptionHandlerProps) => {\n // Use memo for the channelId dependency to prevent unnecessary subscriptions\n const channelIdRef = useRef(channelId);\n\n useEffect(() => {\n if (channelId && channelId !== channelIdRef.current) {\n channelIdRef.current = channelId;\n console.log('Setting up subscription for channel:', channelId);\n return subscribeToNewMessages();\n }\n }, [channelId, subscribeToNewMessages]);\n\n return null;\n};\n\n// Export with React.memo to prevent unnecessary re-renders\nexport const ConversationView = React.memo(ConversationViewComponent, (prevProps, nextProps) => {\n // Only re-render if these critical props change\n return (\n prevProps.channelId === nextProps.channelId &&\n prevProps.role === nextProps.role &&\n prevProps.isShowThreadMessage === nextProps.isShowThreadMessage\n );\n});\n"],"names":["ConversationActions","_a","_b","_c","_d","_e","_f","_g","_h","_i","_j","_k","_l","React","_m","_n","_o","_p","_q","_r","_s","Actions","selectedImage","SlackMessage","CHAT_MESSAGE_ADDED"],"mappings":"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"}
1
+ {"version":3,"file":"ConversationView.js","sources":["../../../../src/screens/inbox/containers/ConversationView.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n Avatar,\n AvatarFallbackText,\n AvatarImage,\n Box,\n Button,\n ButtonText,\n HStack,\n Icon,\n Image,\n Spinner,\n Text,\n Skeleton,\n ScrollView,\n Toast,\n ToastTitle,\n ToastDescription,\n useToast,\n ToastAlert,\n VStack,\n Divider,\n Center,\n} from '@admin-layout/gluestack-ui-mobile';\nimport {\n Platform,\n TouchableHighlight,\n SafeAreaView,\n View,\n TouchableOpacity,\n Animated,\n Text as RNText,\n TextInput,\n KeyboardAvoidingView,\n} from 'react-native';\nimport { useFocusEffect, useIsFocused, useNavigation, useRoute } from '@react-navigation/native';\nimport { navigationRef } from '@common-stack/client-react';\nimport { useSelector, shallowEqual } 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 {\n Actions,\n GiftedChat,\n IMessage,\n MessageText,\n Send,\n Composer,\n InputToolbar,\n Message as GiftedMessage,\n} from 'react-native-gifted-chat';\nimport { PreDefinedRole, RoomType, IExpoNotificationData, IFileInfo, FileRefType, PostTypeEnum } from 'common';\nimport {\n CHAT_MESSAGE_ADDED,\n useChannelDetailQuery,\n useChannelMessagesQuery,\n useSendMessagesMutation,\n useAddDirectChannel,\n MESSAGES_DOCUMENT,\n useSendExpoNotification,\n} from '../../../queries/inboxQueries';\nimport { useUploadFilesNative } from '@messenger-box/platform-client';\nimport { objectId } from '@messenger-box/core';\nimport { userSelector } from '@adminide-stack/user-auth0-client';\nimport { format, isToday, isYesterday } from 'date-fns';\nimport { ImageViewerModal, SlackMessage } from '../components/SlackMessageContainer';\nimport CachedImage from '../components/CachedImage';\nimport { config } from '../config';\nimport colors from 'tailwindcss/colors';\nimport ExpandableInputActionSheet from '../components/ExpandableInputActionSheet';\nimport ExpandableInput from '../components/ExpandableInput';\nimport { SubscriptionHandler } from '../components/SubscriptionHandler';\nimport { useInboxMessages } from '../hooks/useInboxMessages';\nimport Reanimated, { useSharedValue, useAnimatedStyle } from 'react-native-reanimated';\nimport Constants from 'expo-constants';\nimport { Keyboard } from 'react-native';\nimport GiftedChatInboxComponent from '../components/GiftedChatInboxComponent';\nimport PaymentMessage from '../components/SlackMessageContainer/PaymentMessage';\n\n// Define an extended interface for ImagePickerAsset with url property\ninterface ExtendedImagePickerAsset extends ImagePicker.ImagePickerAsset {\n url?: string;\n fileName?: string;\n mimeType?: string;\n}\n\nconst {\n MESSAGES_PER_PAGE,\n CALL_TO_ACTION_BOX_BGCOLOR,\n CALL_TO_ACTION_PATH,\n CALL_TO_ACTION_BUTTON_BORDERCOLOR,\n CALL_TO_ACTION_TEXT_COLOR,\n} = config;\n\nconst createdAtText = (value: string) => {\n if (!value) return '';\n let date = new Date(value);\n if (isToday(date)) return 'Today';\n if (isYesterday(date)) return 'Yesterday';\n return format(new Date(value), 'MMM dd, yyyy');\n};\n\ninterface ISubscriptionHandlerProps {\n subscribeToNewMessages: () => any;\n channelId: string;\n}\n\ninterface IMessageProps extends IMessage {\n type: string;\n propsConfiguration?: any;\n replies?: any;\n isShowThreadMessage?: boolean;\n images?: string[]; // Add support for multiple images\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\n// Fix for the optimistic response types\ntype OptimisticPropsConfig = {\n __typename: 'MachineConfiguration';\n resource: string;\n};\n\n// Custom notification component\nconst ErrorNotification = ({ message, onClose, type = 'error' }) => {\n const opacity = useRef(new Animated.Value(0)).current;\n\n // Choose colors based on type\n const bgColor = type === 'error' ? '#f44336' : '#ff9800';\n const title = type === 'error' ? 'Error' : 'Warning';\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: bgColor,\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' }}>{title}</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\nconst PADDING_BOTTOM = Platform.OS === 'ios' ? 20 : 0;\n\nfunction useGradualKeyboardAnimation() {\n const height = useSharedValue(PADDING_BOTTOM);\n const isExpoGo = Constants.executionEnvironment === 'storeClient';\n let useKeyboardHandler;\n if (!isExpoGo) {\n useKeyboardHandler = require('react-native-keyboard-controller').useKeyboardHandler;\n }\n if (useKeyboardHandler) {\n useKeyboardHandler(\n {\n onMove: (e) => {\n 'worklet';\n height.value = Math.max(e.height, PADDING_BOTTOM);\n },\n onEnd: (e) => {\n 'worklet';\n height.value = e.height;\n },\n },\n [],\n );\n }\n return { height };\n}\n\nconst ConversationViewComponent = ({\n channelId: initialChannelId,\n role,\n isShowThreadMessage,\n isPaymentChatUI,\n ...rest\n}: any) => {\n // Core state management using React hooks instead of XState\n const { params } = useRoute<any>();\n const [channelId, setChannelId] = useState<string | null>(initialChannelId || null);\n const [messageText, setMessageText] = useState('');\n const [loading, setLoading] = useState(false);\n const [loadingOldMessages, setLoadingOldMessages] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [selectedImage, setSelectedImage] = useState<string>('');\n const [images, setImages] = useState<any[]>([]);\n const [isShowImageViewer, setImageViewer] = useState<boolean>(false);\n const [imageObject, setImageObject] = useState<any>({});\n const [errorMessage, setErrorMessage] = useState('');\n const [notificationType, setNotificationType] = useState('error');\n\n // Add state for expandable action sheet\n const [isActionSheetVisible, setActionSheetVisible] = useState(false);\n // Add state for controlling bottom margin\n const [bottomMargin, setBottomMargin] = useState(0);\n\n // Create refs for various operations\n const messageRootListRef = useRef<any>(null);\n const textInputRef = useRef<any>(null); // Add new ref for the text input\n const isMounted = useRef(true);\n const fetchOldDebounceRef = useRef(false);\n\n // Navigation and auth\n const auth: any = useSelector(userSelector, shallowEqual);\n const currentRoute = navigationRef.isReady() ? navigationRef?.getCurrentRoute() : null;\n const navigation = useNavigation<any>();\n const isFocused = useIsFocused();\n\n // Apollo mutations\n const [addDirectChannel] = useAddDirectChannel();\n const { startUpload } = useUploadFilesNative();\n const [sendMsg] = useSendMessagesMutation();\n const [sendExpoNotification] = useSendExpoNotification();\n\n // Add skip state for pagination\n const [skip, setSkip] = useState(0);\n\n // Apollo query for messages\n const {\n data,\n loading: messageLoading,\n error: inboxError,\n refetch,\n subscribe,\n } = useInboxMessages({\n useQueryHook: useChannelMessagesQuery,\n queryVariables: {\n channelId: channelId?.toString(),\n parentId: null,\n limit: MESSAGES_PER_PAGE,\n skip: skip, // Use skip state for pagination\n orgName: params?.orgName,\n },\n subscriptionDocument: CHAT_MESSAGE_ADDED,\n subscriptionVariables: { channelId: channelId?.toString() },\n updateQuery: undefined, // Provide custom updateQuery if needed\n onError: (err) => setError(String(err)),\n });\n\n // Extract messages from the query data\n const channelMessages = useMemo(() => {\n return (data?.messages?.data as any[]) || [];\n }, [data?.messages?.data]);\n\n // Get total message count\n const totalCount = useMemo(() => {\n return data?.messages?.totalCount || 0;\n }, [data?.messages?.totalCount]);\n\n // Clear messages when component unmounts\n useEffect(() => {\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n // Update channelId from props or navigation params\n useEffect(() => {\n const currentChannelId = initialChannelId || currentRoute?.params?.channelId;\n if (currentChannelId) {\n setChannelId(currentChannelId);\n }\n }, [initialChannelId, currentRoute]);\n\n // Focus/unfocus behavior\n useFocusEffect(\n React.useCallback(() => {\n if (channelId) {\n refetch();\n }\n }, [isFocused, refetch]),\n );\n\n // When fetching more messages, update skip\n const fetchMoreMessagesImpl = useCallback(async () => {\n try {\n setLoadingOldMessages(true);\n const response = await refetch({\n channelId: channelId?.toString(),\n parentId: null,\n limit: MESSAGES_PER_PAGE,\n skip: channelMessages.length,\n });\n setSkip(channelMessages.length); // Update skip after fetching\n setLoadingOldMessages(false);\n if (!response?.data?.messages?.data) {\n return { error: 'No messages returned' };\n }\n return { messages: response.data.messages.data };\n } catch (error) {\n setLoadingOldMessages(false);\n setError(String(error));\n return { error: String(error) };\n }\n }, [channelId, channelMessages.length, refetch]);\n\n // Send message function\n const sendMessageImpl = useCallback(async () => {\n try {\n // Store the current message text and clear input immediately for better UX\n const currentMessageText = messageText;\n setMessageText('');\n\n const notificationData: IExpoNotificationData = {\n url: config.INBOX_MESSEGE_PATH,\n params: { channelId, hideTabBar: true },\n screen: 'DialogMessages',\n other: { sound: Platform.OS === 'android' ? undefined : 'default' },\n };\n\n // Create optimistic message with minimal structure required for UI rendering\n const messageId = objectId();\n const optimisticMessage = {\n __typename: 'Post' as const,\n id: messageId,\n message: currentMessageText,\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n author: {\n __typename: 'UserAccount' as const,\n id: auth?.id,\n givenName: auth?.profile?.given_name || '',\n familyName: auth?.profile?.family_name || '',\n email: auth?.profile?.email || '',\n username: auth?.profile?.nickname || '',\n fullName: auth?.profile?.name || '',\n picture: auth?.profile?.picture || '',\n alias: [auth?.authUserId ?? ''] as string[],\n tokens: [],\n },\n isDelivered: true,\n isRead: false,\n type: PostTypeEnum.Simple,\n parentId: null,\n fromServer: false,\n channel: {\n __typename: 'Channel' as const,\n id: channelId,\n },\n // Required fields that Apollo expects in the cache\n propsConfiguration: {\n __typename: 'MachineConfiguration' as const,\n id: null,\n resource: '' as any,\n contents: null,\n keys: null,\n target: null,\n overrides: null,\n },\n props: {},\n files: {\n __typename: 'FilesInfo' as const,\n data: [],\n totalCount: 0,\n },\n replies: {\n __typename: 'Messages' as const,\n data: [],\n totalCount: 0,\n },\n };\n\n const response = await sendMsg({\n variables: {\n channelId,\n content: currentMessageText,\n notificationParams: notificationData,\n },\n optimisticResponse: {\n __typename: 'Mutation',\n sendMessage: optimisticMessage,\n },\n // Let the type policies handle the cache update automatically\n update: (cache, { data }) => {\n // Only perform cache update if we have valid data\n if (!data?.sendMessage) return;\n\n try {\n // Let Apollo type policies handle merging by using writeQuery\n // This will trigger the merge functions in the type policies\n cache.writeQuery({\n query: MESSAGES_DOCUMENT,\n variables: {\n channelId: channelId?.toString(),\n parentId: null,\n limit: MESSAGES_PER_PAGE,\n skip: 0,\n },\n data: {\n messages: {\n __typename: 'Messages',\n messagesRefId: channelId,\n data: [data.sendMessage],\n totalCount: 1, // Just send the count for this single message\n },\n },\n });\n } catch (error) {\n console.error('Error updating cache:', error);\n\n // Format error for notification\n let errorMsg = 'Failed to update message cache';\n if (__DEV__ && error) {\n // In development, show actual error\n errorMsg = error.message\n ? error.message.replace('[ApolloError: ', '').replace(']', '')\n : 'Cache update failed';\n }\n\n setNotificationType('error');\n setErrorMessage(errorMsg);\n }\n },\n });\n\n // Ensure loader is removed after sending\n setIsUploadingImage(false);\n setLoading(false);\n\n return { message: response.data?.sendMessage };\n } catch (error) {\n setLoading(false);\n setIsUploadingImage(false);\n\n // Format error for notification\n let errorMsg = 'Failed to send message';\n if (__DEV__ && error) {\n // In development, show actual error\n errorMsg = error.message\n ? error.message.replace('[ApolloError: ', '').replace(']', '')\n : 'Message sending failed';\n }\n\n setNotificationType('error');\n setErrorMessage(errorMsg);\n setError(String(error));\n return { error: String(error) };\n }\n }, [channelId, messageText, sendMsg, auth]);\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\n // Show action sheet if it's not visible\n if (!isActionSheetVisible) {\n setActionSheetVisible(true);\n }\n } else {\n setLoading(false);\n }\n } catch (error) {\n setLoading(false);\n }\n };\n\n // Add a state variable to track which message should show the skeleton\n const [uploadingMessageId, setUploadingMessageId] = useState<string | null>(null);\n // Add new state for tracking pending uploads\n const [pendingUploads, setPendingUploads] = useState<Record<string, IMessageProps>>({});\n const [uploadErrors, setUploadErrors] = useState<Record<string, string>>({});\n\n // Add new state variable to track image upload status\n const [isUploadingImage, setIsUploadingImage] = useState(false);\n\n // Ensure loader is hidden when all images are removed\n useEffect(() => {\n if (images.length === 0) {\n setIsUploadingImage(false);\n }\n }, [images]);\n\n // Add toast hook for notifications\n const toast = useToast();\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 // Send message with file - fix to ensure images display without loading indicators\n const sendMessageWithFileImpl = useCallback(async () => {\n try {\n // Generate a unique ID for the message\n const postId = objectId();\n\n // Set uploading state to true\n setIsUploadingImage(true);\n\n // Clear all loading states immediately\n setLoading(false);\n setUploadingMessageId(null);\n\n // Safety check for images\n if (!images || images.length === 0) {\n setIsUploadingImage(false);\n setLoading(false);\n return { error: 'No images available to upload' };\n }\n\n // Store current values before clearing\n const currentMessageText = messageText;\n const currentImages = [...images];\n\n // Prepare image URIs for optimistic UI update\n const imageUris = currentImages.map((img) => img.uri || img.url);\n\n // Clear UI immediately for next message\n setMessageText('');\n setSelectedImage('');\n setImages([]);\n\n // Create a client message with all local image URIs\n const clientMessage: IMessageProps = {\n _id: postId,\n text: currentMessageText || ' ',\n createdAt: new Date(),\n user: {\n _id: auth?.id || '',\n name: `${auth?.givenName || ''} ${auth?.familyName || ''}`,\n avatar: auth?.picture || '',\n },\n image: imageUris[0], // First image for compatibility with GiftedChat\n images: imageUris, // All images for our custom renderer\n sent: true,\n received: true,\n pending: false,\n type: 'TEXT',\n replies: { data: [], totalCount: 0 },\n isShowThreadMessage: false,\n };\n\n // Add to displayed messages immediately\n setPendingUploads((prev) => ({ ...prev, [postId]: clientMessage }));\n\n // Prepare notification data\n const notificationData: IExpoNotificationData = {\n url: config.INBOX_MESSEGE_PATH,\n params: { channelId, hideTabBar: true },\n screen: 'DialogMessages',\n other: { sound: Platform.OS === 'android' ? undefined : 'default' },\n };\n\n // Create optimistic message with minimal structure required for UI rendering\n const optimisticMessage = {\n __typename: 'Post' as const,\n id: postId,\n message: currentMessageText || ' ',\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n author: {\n __typename: 'UserAccount' as const,\n id: auth?.id,\n givenName: auth?.profile?.given_name || '',\n familyName: auth?.profile?.family_name || '',\n email: auth?.profile?.email || '',\n username: auth?.profile?.nickname || '',\n fullName: auth?.profile?.name || '',\n picture: auth?.profile?.picture || '',\n alias: [auth?.authUserId ?? ''] as string[],\n tokens: [],\n },\n isDelivered: true,\n isRead: false,\n type: PostTypeEnum.Simple,\n parentId: null,\n fromServer: false,\n channel: {\n __typename: 'Channel' as const,\n id: channelId,\n },\n // Required fields that Apollo expects in the cache\n propsConfiguration: {\n __typename: 'MachineConfiguration' as const,\n id: null,\n resource: '' as any,\n contents: null,\n keys: null,\n target: null,\n overrides: null,\n },\n props: {},\n files: {\n __typename: 'FilesInfo' as const,\n data: imageUris.map((uri, index) => ({\n __typename: 'FileInfo' as const,\n id: `temp-file-${index}-${postId}`,\n url: uri,\n name: `image-${index}.jpg`,\n extension: 'jpg',\n mimeType: 'image/jpeg',\n size: 0,\n height: 300,\n width: 300,\n channel: null,\n post: null,\n refType: FileRefType.Post,\n })),\n totalCount: imageUris.length,\n },\n replies: {\n __typename: 'Messages' as const,\n data: [],\n totalCount: 0,\n },\n };\n\n // Start background processing without affecting UI\n setTimeout(async () => {\n try {\n // Format images for upload\n const imagesToUpload = currentImages.map((img) => ({\n ...img,\n uri: img.uri || img.url,\n type: img.mimeType || 'image/jpeg',\n name: img.fileName || `image_${Date.now()}.jpg`,\n }));\n\n // Upload the files in background - pass the array of images\n const uploadResponse = await startUpload({\n file: imagesToUpload,\n saveUploadedFile: {\n variables: { postId },\n },\n createUploadLink: {\n variables: { postId },\n },\n });\n\n // If upload fails, show error notification\n if (uploadResponse?.error) {\n console.error('Upload error:', uploadResponse.error);\n\n // Format error message\n let errorMsg = 'Failed to upload image. Please try again.';\n if (__DEV__ && uploadResponse.error) {\n // In development, show actual error\n errorMsg =\n typeof uploadResponse.error === 'string'\n ? uploadResponse.error\n : uploadResponse.error.message || errorMsg;\n }\n\n // Show error notification\n setNotificationType('error');\n setErrorMessage(errorMsg);\n\n // Store error in state\n setUploadErrors((prev) => ({ ...prev, [postId]: errorMsg }));\n\n // Remove the message from UI\n removeMessageFromUI(postId);\n setIsUploadingImage(false);\n setLoading(false);\n return;\n }\n\n // Get uploaded file info\n const uploadedFiles = uploadResponse.data as unknown as IFileInfo[];\n const fileIds = uploadedFiles?.map((f: any) => f.id) ?? null;\n\n // Send the message with uploaded files\n if (fileIds?.length > 0) {\n await sendMsg({\n variables: {\n postId,\n channelId,\n content: currentMessageText || ' ',\n files: fileIds,\n notificationParams: notificationData,\n },\n optimisticResponse: {\n __typename: 'Mutation',\n sendMessage: optimisticMessage,\n },\n update: (cache, { data }) => {\n if (!data?.sendMessage) {\n setIsUploadingImage(false);\n setLoading(false);\n return;\n }\n try {\n // Let Apollo type policies handle the cache update\n cache.writeQuery({\n query: MESSAGES_DOCUMENT,\n variables: {\n channelId: channelId?.toString(),\n parentId: null,\n limit: MESSAGES_PER_PAGE,\n skip: 0,\n },\n data: {\n messages: {\n __typename: 'Messages',\n messagesRefId: channelId,\n data: [data.sendMessage],\n totalCount: 1, // Just one message\n },\n },\n });\n\n // Check if the server response has the actual image\n const serverMessage = data.sendMessage;\n const hasServerImage = serverMessage?.files?.data?.some((file) => file.url);\n\n if (hasServerImage) {\n // Now that server has the image, we can remove client version\n removeMessageFromUI(postId);\n }\n\n setIsUploadingImage(false);\n setLoading(false);\n } catch (error) {\n console.error('Cache update error:', error);\n\n // Format error for notification\n let errorMsg = 'Failed to update message.';\n if (__DEV__ && error) {\n // In development, show actual error\n errorMsg = error.message\n ? error.message.replace('[ApolloError: ', '').replace(']', '')\n : 'Cache update failed';\n }\n\n setNotificationType('error');\n setErrorMessage(errorMsg);\n setIsUploadingImage(false);\n setLoading(false);\n }\n },\n });\n } else {\n setIsUploadingImage(false);\n setLoading(false);\n }\n } catch (error) {\n console.error('Background process error:', error);\n\n // Format error for notification\n let errorMsg = 'Failed to send image. Please try again.';\n if (__DEV__ && error) {\n // In development, show actual error\n errorMsg = error.message\n ? error.message.replace('[ApolloError: ', '').replace(']', '')\n : 'Background process failed';\n }\n\n // Show error notification\n setNotificationType('error');\n setErrorMessage(errorMsg);\n removeMessageFromUI(postId);\n setIsUploadingImage(false);\n setLoading(false);\n }\n }, 0);\n\n // Return success immediately - UI already updated\n return { success: true };\n } catch (error) {\n console.error('Send message error:', error);\n\n // Format error for notification\n let errorMsg = 'Failed to process image. Please try again.';\n if (__DEV__ && error) {\n // In development, show actual error\n errorMsg = error.message\n ? error.message.replace('[ApolloError: ', '').replace(']', '')\n : 'Image processing failed';\n }\n\n // Show error notification\n setNotificationType('error');\n setErrorMessage(errorMsg);\n setError(String(error));\n setIsUploadingImage(false);\n setLoading(false);\n return { error: String(error) };\n }\n }, [channelId, messageText, images, selectedImage, startUpload, sendMsg, auth, removeMessageFromUI]);\n\n // Create direct channel implementation\n const createDirectChannelImpl = useCallback(async () => {\n try {\n setLoading(true);\n if (\n !rest?.isCreateNewChannel ||\n rest?.newChannelData?.type !== RoomType?.Direct ||\n !rest?.newChannelData?.userIds?.length\n ) {\n setLoading(false);\n setNotificationType('error');\n setErrorMessage(__DEV__ ? 'Invalid channel data' : 'Unable to create conversation');\n return { error: 'Invalid channel data' };\n }\n\n // Store current message text\n const currentMessageText = messageText;\n // Clear message text immediately for better UX\n setMessageText('');\n\n const response = await addDirectChannel({\n variables: {\n receiver: [...(rest?.newChannelData?.userIds ?? [])],\n displayName: 'DIRECT CHANNEL',\n },\n });\n\n if (!response?.data?.createDirectChannel?.id) {\n setLoading(false);\n setNotificationType('error');\n setErrorMessage(__DEV__ ? 'Failed to create channel' : 'Unable to create conversation');\n return { error: 'Failed to create channel' };\n }\n\n const newChannelId = response.data.createDirectChannel.id;\n setChannelId(newChannelId);\n\n const notificationData: IExpoNotificationData = {\n url: config.INBOX_MESSEGE_PATH,\n params: { channelId: newChannelId, hideTabBar: true },\n screen: 'DialogMessages',\n other: { sound: Platform.OS === 'android' ? undefined : 'default' },\n };\n\n // Create unique message ID for optimistic response\n const messageId = objectId();\n\n // Create minimal optimistic message\n const optimisticMessage = {\n __typename: 'Post' as const,\n id: messageId,\n message: currentMessageText,\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n author: {\n __typename: 'UserAccount' as const,\n id: auth?.id,\n picture: auth?.picture || '',\n givenName: auth?.givenName || '',\n familyName: auth?.familyName || '',\n email: auth?.email || '',\n username: auth?.username || '',\n alias: [] as string[],\n tokens: auth?.token ? [...auth?.token] : [],\n },\n isDelivered: true,\n isRead: false,\n type: PostTypeEnum.Simple,\n parentId: null,\n fromServer: false,\n channel: {\n __typename: 'Channel' as const,\n id: newChannelId,\n },\n // Required fields that Apollo expects in the cache\n propsConfiguration: {\n __typename: 'MachineConfiguration' as const,\n id: null,\n resource: '' as any,\n contents: null,\n keys: null,\n target: null,\n overrides: null,\n },\n props: {},\n files: {\n __typename: 'FilesInfo' as const,\n data: [],\n totalCount: 0,\n },\n replies: {\n __typename: 'Messages' as const,\n data: [],\n totalCount: 0,\n },\n };\n\n // Send message in the new channel\n await sendMsg({\n variables: {\n channelId: newChannelId,\n content: currentMessageText,\n notificationParams: notificationData,\n },\n optimisticResponse: {\n __typename: 'Mutation',\n sendMessage: optimisticMessage,\n },\n update: (cache, { data }) => {\n if (!data?.sendMessage) return;\n\n try {\n // For a new channel, simply write the initial message to the cache\n // The type policies will handle it properly\n cache.writeQuery({\n query: MESSAGES_DOCUMENT,\n variables: {\n channelId: newChannelId,\n parentId: null,\n limit: MESSAGES_PER_PAGE,\n skip: 0,\n },\n data: {\n messages: {\n __typename: 'Messages',\n messagesRefId: newChannelId,\n data: [data.sendMessage],\n totalCount: 1,\n },\n },\n });\n } catch (error) {\n console.error('Error updating cache:', error);\n\n // Format error for notification\n let errorMsg = 'Failed to update message cache';\n if (__DEV__ && error) {\n // In development, show actual error\n errorMsg = error.message\n ? error.message.replace('[ApolloError: ', '').replace(']', '')\n : 'Cache update failed';\n }\n\n setNotificationType('error');\n setErrorMessage(errorMsg);\n }\n },\n });\n\n setLoading(false);\n return { channelId: newChannelId };\n } catch (error) {\n setLoading(false);\n\n // Format error for notification\n let errorMsg = 'Failed to create conversation';\n if (__DEV__ && error) {\n // In development, show actual error\n errorMsg = error.message\n ? error.message.replace('[ApolloError: ', '').replace(']', '')\n : 'Channel creation failed';\n }\n\n setNotificationType('error');\n setErrorMessage(errorMsg);\n setError(String(error));\n return { error: String(error) };\n }\n }, [rest, messageText, addDirectChannel, sendMsg, auth]);\n\n // Optimize onFetchOld by adding debounce logic\n const onFetchOld = useCallback(() => {\n // Prevent multiple rapid calls\n if (fetchOldDebounceRef.current) return;\n\n // Check if we need to fetch more messages\n if (totalCount > channelMessages.length && !loadingOldMessages) {\n // Set debounce\n fetchOldDebounceRef.current = true;\n\n // Fetch more messages\n fetchMoreMessagesImpl();\n\n // Clear debounce after a timeout\n setTimeout(() => {\n fetchOldDebounceRef.current = false;\n }, 1000);\n }\n }, [totalCount, channelMessages.length, loadingOldMessages, fetchMoreMessagesImpl]);\n\n const isCloseToTop = ({ layoutMeasurement, contentOffset, contentSize }) => {\n const paddingToTop = 60;\n return contentSize.height - layoutMeasurement.height - paddingToTop <= contentOffset.y;\n };\n\n // Modify the messageList function to ensure local images take precedence\n const messageList = useMemo(() => {\n // Get pending upload messages as array\n const pendingMessages = Object.values(pendingUploads);\n\n // If we have no server messages, just return pending messages\n if (!channelMessages || channelMessages.length === 0) {\n return pendingMessages;\n }\n\n // Filter unique messages\n const filteredMessages = uniqBy(channelMessages, ({ id }) => id);\n\n // Process server messages - skip any that have client versions\n const serverMessages = orderBy(filteredMessages, ['createdAt'], ['desc'])\n .map((msg) => {\n const date = new Date(msg.createdAt);\n\n // Skip messages that are in pendingUploads - client version takes precedence\n if (pendingUploads[msg.id]) {\n return null;\n }\n\n // Extract image URLs from files data\n let imageUrls: string[] = [];\n let primaryImageUrl = null;\n\n if (msg.files && typeof msg.files === 'object') {\n const filesData = msg.files.data || (Array.isArray(msg.files) ? msg.files : null);\n\n if (filesData && filesData.length > 0) {\n // Collect all image URLs\n imageUrls = filesData\n .filter((fileData) => fileData && typeof fileData === 'object' && fileData.url)\n .map((fileData) => fileData.url);\n\n // Set primary image for GiftedChat compatibility\n if (imageUrls.length > 0) {\n primaryImageUrl = imageUrls[0];\n }\n }\n }\n\n // Create formatted message\n return {\n _id: msg.id,\n text: msg.message,\n createdAt: date,\n user: {\n _id: msg.author?.id || '',\n name: `${msg.author?.givenName || ''} ${msg.author?.familyName || ''}`,\n avatar: msg.author?.picture || '',\n },\n image: primaryImageUrl,\n images: imageUrls, // Store all images for custom rendering\n sent: msg?.isDelivered,\n received: msg?.isRead,\n type: msg?.type,\n propsConfiguration: msg?.propsConfiguration,\n replies: msg?.replies ?? [],\n isShowThreadMessage,\n };\n })\n .filter(Boolean); // Remove null entries\n\n // Pending messages take precedence (they have local images)\n return [...pendingMessages, ...serverMessages];\n }, [channelMessages, pendingUploads, isShowThreadMessage]);\n\n // Render the send button\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 || rest?.isCreateNewChannel) && hasContent;\n // const isDisabled = !canSend || isUploadingImage || loading;\n const isDisabled = !canSend;\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 >\n <View style={{ padding: 4 }}>\n <MaterialCommunityIcons\n name=\"send-circle\"\n size={32}\n color={isDisabled ? colors.gray[400] : colors.blue[500]}\n />\n </View>\n </Send>\n );\n },\n [channelId, images, rest?.isCreateNewChannel, isUploadingImage, loading, isActionSheetVisible],\n );\n\n // Add new handler to open the action sheet\n const openExpandableInput = useCallback(() => {\n console.log('Opening action sheet');\n setActionSheetVisible(true);\n }, []);\n\n // Add a debug useEffect to log when visibility changes\n useEffect(() => {\n console.log('Action sheet visibility:', isActionSheetVisible);\n // Set appropriate bottom margin when action sheet visibility changes\n if (isActionSheetVisible) {\n setBottomMargin(0);\n }\n }, [isActionSheetVisible]);\n\n // Handle removing image from action sheet\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 // Add a new state to track when the action sheet updates text\n const [textUpdatedInActionSheet, setTextUpdatedInActionSheet] = useState(false);\n\n // Handle when the action sheet is closed\n const handleActionSheetClose = useCallback(() => {\n // Mark that we closed the sheet with potential text update\n setTextUpdatedInActionSheet(true);\n setActionSheetVisible(false);\n // Reset bottom margin to 0 when closing the expandable input\n setBottomMargin(0);\n }, []);\n\n // Handle sending from action sheet\n const handleActionSheetSend = () => {\n if (messageText.trim() || images.length > 0) {\n // Set uploading state to show spinner\n setIsUploadingImage(true);\n\n // Create a message object in the format GiftedChat expects\n const messages = [\n {\n text: messageText,\n user: {\n _id: auth?.id || '',\n },\n createdAt: new Date(),\n },\n ];\n\n // Use the existing handleSend function\n handleSend(messages);\n\n // Close the action sheet\n setActionSheetVisible(false);\n }\n };\n\n // Update this useEffect to more reliably handle text syncing when action sheet closes\n useEffect(() => {\n // If action sheet just closed, ensure main input gets updated text\n if (!isActionSheetVisible && textUpdatedInActionSheet) {\n console.log('Action sheet closed with text:', messageText);\n // Reset the flag\n setTextUpdatedInActionSheet(false);\n\n // Force GiftedChat to recognize the text change by creating a new state update\n const currentText = messageText;\n setMessageText('');\n setTimeout(() => {\n setMessageText(currentText);\n }, 50);\n }\n }, [isActionSheetVisible, textUpdatedInActionSheet]);\n\n // Take a screenshot of the action sheet for debugging\n useEffect(() => {\n if (isActionSheetVisible && Platform.OS === 'ios') {\n console.log('Action sheet is visible, should show the input and options');\n }\n }, [isActionSheetVisible]);\n\n // Handle send for messages\n const handleSend = useCallback(\n async (messages) => {\n // Extract message text from GiftedChat messages array\n const newMessageText = messages && messages.length > 0 ? messages[0]?.text || ' ' : ' ';\n\n // Check if we can send a message (channel exists or we're creating one)\n if (!channelId && !rest?.isCreateNewChannel) {\n return;\n }\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) {\n return;\n }\n\n // Update the message text state - now handled in send functions for better UX\n setMessageText(newMessageText);\n\n // Set uploading state to show spinner\n // setIsUploadingImage(true);\n // setLoading(true);\n\n // Handle direct channel creation if needed\n if (rest?.isCreateNewChannel && !channelId) {\n if (rest?.newChannelData?.type === RoomType?.Direct) {\n await createDirectChannelImpl();\n }\n setIsUploadingImage(false);\n setLoading(false);\n return;\n }\n\n // Send message with or without image based on state\n if (hasImages) {\n await sendMessageWithFileImpl();\n } else {\n await sendMessageImpl();\n }\n\n setIsUploadingImage(false);\n setLoading(false);\n\n // Focus the input field after sending\n setTimeout(() => {\n if (textInputRef.current) {\n textInputRef.current.focus();\n }\n }, 100);\n },\n [\n channelId,\n images,\n rest?.isCreateNewChannel,\n rest?.newChannelData?.type,\n createDirectChannelImpl,\n sendMessageWithFileImpl,\n sendMessageImpl,\n ],\n );\n\n // Render message text with customizations for alerts and replies\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 <View>\n {attachment?.callToAction && action ? (\n <Box className={`bg-[${CALL_TO_ACTION_BOX_BGCOLOR}] rounded-[15] pb-2`}>\n <MessageText\n {...props}\n containerStyle={{\n left: { paddingLeft: 0, marginLeft: 0 },\n }}\n textStyle={{\n left: { marginLeft: 0 },\n }}\n />\n <Button\n variant={'outline'}\n size={'sm'}\n className={`border-[${CALL_TO_ACTION_BUTTON_BORDERCOLOR}] my-2 rounded-full `}\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 </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 <View>\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 </View>\n </TouchableHighlight>\n )}\n </View>\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 <View>\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 </View>\n </TouchableHighlight>\n );\n }\n },\n [navigation, channelId, role],\n );\n\n // Render action buttons (including image upload)\n const renderActions = (props) => {\n return (\n <Actions\n {...props}\n // options={{\n // ['Choose from Library']: onSelectImages,\n // ['Cancel']: () => {}, // Add this option to make the sheet dismissible\n // }}\n optionTintColor=\"#000000\"\n cancelButtonIndex={1} // Set the Cancel option as the cancel button\n icon={() => (\n <TouchableOpacity\n onPress={onSelectImages}\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 // <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: 20,\n marginBottom: 0,\n }}\n />\n );\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 source={{ uri: img.uri || img.url }}\n style={{ width: '100%', height: '100%' }}\n alt={`selected image ${index + 1}`}\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 if (textInputRef.current && typeof textInputRef.current.focus === 'function') {\n textInputRef.current.focus();\n }\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 const setImageViewerObject = (obj: any, v: boolean) => {\n setImageObject(obj);\n setImageViewer(v);\n };\n\n const modalContent = React.useMemo(() => {\n if (!imageObject || !imageObject.image) return null;\n const { image, _id } = imageObject;\n\n return (\n <CachedImage\n style={{ width: '100%', height: '100%' }}\n resizeMode={'cover'}\n cacheKey={`${_id}-modal-imageKey`}\n source={{\n uri: image,\n expiresIn: 86400,\n }}\n alt={'image'}\n />\n );\n }, [imageObject]);\n\n // Update the message rendering to show images instantly without loaders\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 renderPaymentMessageText = 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 // PAYMENT UI\n if (currentMessage.type === 'PAYMENT') {\n // Extract payment details if available\n const paymentDetails = currentMessage?.propsConfiguration?.payment || {};\n const amount = paymentDetails.amount || currentMessage?.amount;\n const currency = paymentDetails.currency || currentMessage?.currency || '$';\n const status = paymentDetails.status || currentMessage?.status || 'Completed';\n const paymentNote = paymentDetails.note || currentMessage?.text;\n\n return (\n <TouchableHighlight\n underlayColor={'#e0f7fa'}\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 <Box\n style={{\n backgroundColor: '#e0f7fa',\n borderRadius: 16,\n padding: 12,\n marginVertical: 2,\n borderWidth: 1,\n borderColor: '#26c6da',\n flexDirection: 'row',\n alignItems: 'center',\n }}\n >\n <MaterialCommunityIcons\n name=\"credit-card-check\"\n size={28}\n color=\"#00838f\"\n style={{ marginRight: 10 }}\n />\n <VStack style={{ flex: 1 }}>\n <Text style={{ fontWeight: 'bold', color: '#00838f', fontSize: 16 }}>\n {amount ? `${currency}${amount}` : 'Payment'}\n </Text>\n <Text style={{ color: '#00838f', fontSize: 13, marginTop: 2 }}>{status}</Text>\n {paymentNote && (\n <Text style={{ color: '#444', fontSize: 13, marginTop: 4 }}>{paymentNote}</Text>\n )}\n </VStack>\n </Box>\n </TouchableHighlight>\n );\n } else {\n // Default UI (unchanged)\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 renderPaymentMessage = useCallback(\n (props: any) => {\n const { currentMessage } = props;\n if (currentMessage?.type === 'PAYMENT') {\n return <PaymentMessage {...props} navigation={navigation} channelId={channelId} config={config} />;\n }\n // return <PaymentMessage\n // {...props}\n // navigation={navigation}\n // channelId={channelId}\n // config={config}\n // />;\n // Fallback to SlackMessage for other message types\n return (\n <SlackMessage {...props} isShowImageViewer={isShowImageViewer} setImageViewer={setImageViewerObject} />\n );\n },\n [isShowImageViewer, channelId, navigation],\n );\n\n let onScroll = false;\n\n // Optimize onMomentumScrollBegin for better scroll performance\n const onMomentumScrollBegin = async ({ nativeEvent }: any) => {\n // Set scroll state\n onScroll = true;\n\n // Use the debounced fetch function to prevent excessive calls\n if (isCloseToTop(nativeEvent)) {\n onFetchOld();\n }\n };\n\n const onEndReached = () => {\n if (!onScroll) return;\n onScroll = false;\n };\n\n // Add a loader for when more messages are being loaded\n const renderLoadEarlier = useCallback(() => {\n return loadingOldMessages ? (\n <View\n style={{\n padding: 10,\n backgroundColor: 'rgba(255,255,255,0.8)',\n borderRadius: 10,\n marginTop: 10,\n }}\n >\n <Spinner size=\"small\" color=\"#3b82f6\" />\n </View>\n ) : null;\n }, [loadingOldMessages]);\n\n // Add state for tracking input toolbar height\n const [inputToolbarHeight, setInputToolbarHeight] = useState(30);\n\n // Update renderInputToolbar to use a compact, single-row style for the input area, ensuring it does not expand to fill the screen. The plus button, text input, and send button should be in a rounded row, with selected images in a row below. Use minHeight/maxHeight and proper padding/margin to keep the toolbar compact.\n const renderInputToolbar = useCallback(\n (props) => (\n <View style={{ backgroundColor: '#fff', paddingBottom: 4, paddingTop: 4 }}>\n <View\n style={{\n flexDirection: 'row',\n alignItems: 'center',\n minHeight: 44,\n maxHeight: 56,\n backgroundColor: '#fff',\n borderRadius: 22,\n marginHorizontal: 8,\n paddingHorizontal: 8,\n borderTopWidth: 1,\n borderTopColor: '#e0e0e0',\n }}\n >\n <TouchableOpacity\n onPress={onSelectImages}\n style={{\n width: 32,\n height: 32,\n borderRadius: 16,\n backgroundColor: '#fff',\n alignItems: 'center',\n justifyContent: 'center',\n marginRight: 8,\n }}\n >\n <MaterialIcons name=\"add\" size={24} color=\"#888\" />\n </TouchableOpacity>\n <TextInput\n ref={textInputRef}\n style={{\n flex: 1,\n //minHeight: 36,\n maxHeight: 44,\n backgroundColor: 'transparent',\n color: '#444',\n paddingHorizontal: 8,\n paddingVertical: 0,\n alignSelf: 'center',\n textAlignVertical: 'center',\n }}\n placeholder=\"Jot something down\"\n placeholderTextColor={colors.gray[400]}\n multiline\n value={messageText}\n onChangeText={setMessageText}\n />\n <TouchableOpacity\n onPress={() => handleSend([{ text: messageText }])}\n // disabled={(!messageText.trim() && images.length === 0) || isUploadingImage || loading}\n disabled={false}\n style={{\n marginLeft: 8,\n // opacity: (!messageText.trim() && images.length === 0) || isUploadingImage || loading ? 0.5 : 1,\n opacity: !messageText.trim() && images.length === 0 ? 0.5 : 1,\n }}\n >\n <MaterialCommunityIcons\n name=\"send-circle\"\n size={32}\n color={!messageText.trim() && images.length === 0 ? colors.gray[400] : colors.blue[500]}\n // color={\n // (!messageText.trim() && images.length === 0) || isUploadingImage || loading\n // ? colors.gray[400]\n // : colors.blue[500]\n // }\n />\n </TouchableOpacity>\n </View>\n {/* Selected Images Row */}\n {images && images.length > 0 && (\n <ScrollView\n horizontal\n showsHorizontalScrollIndicator={false}\n style={{ marginTop: 4, marginLeft: 8 }}\n >\n {images.map((img, index) => (\n <View\n key={`image-preview-${index}`}\n style={{\n width: 48,\n height: 48,\n marginRight: 8,\n borderRadius: 6,\n overflow: 'hidden',\n position: 'relative',\n backgroundColor: colors.gray[200],\n }}\n >\n <Image\n source={{ uri: img.uri || img.url }}\n style={{ width: '100%', height: '100%' }}\n alt={`selected image ${index + 1}`}\n />\n <TouchableOpacity\n onPress={() => {\n handleRemoveImage(index);\n // handleRemoveImage already focuses input if needed\n }}\n style={{\n position: 'absolute',\n top: 2,\n right: 2,\n backgroundColor: 'rgba(0,0,0,0.6)',\n borderRadius: 10,\n width: 20,\n height: 20,\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <Ionicons name=\"close\" size={14} color=\"white\" />\n </TouchableOpacity>\n </View>\n ))}\n </ScrollView>\n )}\n </View>\n ),\n [onSelectImages, messageText, images, isUploadingImage, loading, handleSend, handleRemoveImage],\n );\n\n // Create a memoized ImageViewerModal component\n const imageViewerModal = useMemo(\n () => (\n <ImageViewerModal isVisible={isShowImageViewer} setVisible={setImageViewer} modalContent={modalContent} />\n ),\n [isShowImageViewer, modalContent],\n );\n\n // Create a memoized renderChatFooter function\n const renderChatFooter = useCallback(() => {\n return (\n <>\n {imageViewerModal}\n <SubscriptionHandler\n subscribeToMore={subscribe}\n document={CHAT_MESSAGE_ADDED}\n variables={{ channelId: channelId?.toString() }}\n updateQuery={undefined}\n />\n </>\n );\n }, [imageViewerModal, subscribe]);\n\n // Add optimized listViewProps to reduce re-renders and improve list performance\n const listViewProps = useMemo(\n () => ({\n onEndReached: onEndReached,\n onEndReachedThreshold: 0.5,\n onMomentumScrollBegin: onMomentumScrollBegin,\n removeClippedSubviews: true, // Improve performance by unmounting components when not visible\n initialNumToRender: 10, // Reduce initial render amount\n maxToRenderPerBatch: 7, // Reduce number in each render batch\n windowSize: 7, // Reduce the window size\n updateCellsBatchingPeriod: 50, // Batch cell updates to improve scrolling\n keyExtractor: (item) => item._id, // Add explicit key extractor\n }),\n [onEndReached, onMomentumScrollBegin],\n );\n\n // Debug helper function to inspect files in messages\n const debugFileData = useCallback((message: any, prefix: string = 'Message') => {\n if (__DEV__) {\n console.log(\n `${prefix} ID: ${message?.id}, ` +\n `Has files object: ${!!message?.files}, ` +\n `Files typename: ${message?.files?.__typename}, ` +\n `Files data exists: ${!!message?.files?.data}, ` +\n `Files count: ${message?.files?.data?.length || 0}`,\n );\n\n if (message?.files?.data && message?.files?.data?.length > 0) {\n const file = message?.files?.data[0];\n console.log(\n `File[0] ID: ${file?.id}, ` +\n `URL: ${file?.url?.substring(0, 30)}..., ` +\n `Name: ${file?.name}, ` +\n `Type: ${file?.mimeType}`,\n );\n }\n }\n }, []);\n\n // Return optimized component with performance improvements\n return (\n <KeyboardAvoidingView\n style={{ flex: 1, justifyContent: 'flex-end' }}\n behavior={Platform.OS === 'ios' ? 'padding' : 'height'}\n keyboardVerticalOffset={Platform.OS === 'ios' ? 64 : 0}\n >\n <View\n style={{\n flex: 1,\n backgroundColor: 'white',\n position: 'relative',\n marginBottom: images.length > 0 ? 5 : bottomMargin,\n }}\n >\n {errorMessage ? (\n <ErrorNotification\n message={errorMessage}\n onClose={() => setErrorMessage('')}\n type={notificationType}\n />\n ) : null}\n\n {messageLoading && <Spinner color={'#3b82f6'} />}\n <GiftedChatInboxComponent\n ref={messageRootListRef}\n errorMessage={errorMessage}\n images={images}\n onSelectImages={onSelectImages}\n onRemoveImage={handleRemoveImage}\n selectedImage={selectedImage}\n setSelectedImage={setSelectedImage}\n isUploadingImage={isUploadingImage}\n loading={loading}\n wrapInSafeArea={true}\n renderLoading={() => <Spinner color={'#3b82f6'} />}\n messages={messageList}\n renderAvatar={null}\n showUserAvatar={false}\n listViewProps={{\n ...listViewProps,\n contentContainerStyle: {\n paddingBottom: inputToolbarHeight,\n },\n }}\n onSend={handleSend}\n text={messageText || ' '}\n onInputTextChanged={(text) => {\n setMessageText(text);\n }}\n renderFooter={() => (isUploadingImage ? <Spinner color={'#3b82f6'} /> : null)}\n scrollToBottom\n user={{\n _id: auth?.id || '',\n }}\n renderSend={renderSend}\n renderMessageText={isPaymentChatUI ? renderPaymentMessageText : renderMessageText}\n renderMessage={isPaymentChatUI ? renderPaymentMessage : renderMessage}\n renderChatFooter={renderChatFooter}\n renderLoadEarlier={renderLoadEarlier}\n loadEarlier={totalCount > channelMessages.length}\n isLoadingEarlier={loadingOldMessages}\n placeholder=\"Jot something down\"\n infiniteScroll={true}\n // renderChatEmpty={() => (\n // <><Text>Empty</Text>\n // {!loading && 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\n {/* <GiftedChat\n ref={messageRootListRef}\n wrapInSafeArea={true}\n renderLoading={() => <Spinner color={'#3b82f6'} />}\n messages={messageList}\n renderAvatar={null}\n showUserAvatar={false}\n listViewProps={{\n ...listViewProps,\n contentContainerStyle: {\n paddingBottom: inputToolbarHeight,\n },\n }}\n onSend={handleSend}\n text={messageText || ' '}\n onInputTextChanged={(text) => {\n setMessageText(text);\n }}\n renderFooter={() => (isUploadingImage ? <Spinner color={'#3b82f6'} /> : null)}\n scrollToBottom\n user={{\n _id: auth?.id || '',\n }}\n isTyping={false}\n alwaysShowSend={true}\n renderSend={renderSend}\n renderMessageText={renderMessageText}\n renderInputToolbar={renderInputToolbar}\n // renderComposer={renderComposer}\n // minInputToolbarHeight={isActionSheetVisible ? 0 : 56}\n minInputToolbarHeight={inputToolbarHeight}\n renderActions={null}\n renderMessage={renderMessage}\n renderChatFooter={renderChatFooter}\n renderLoadEarlier={renderLoadEarlier}\n loadEarlier={totalCount > channelMessages.length}\n isLoadingEarlier={loadingOldMessages}\n bottomOffset={0}\n isKeyboardInternallyHandled={false}\n textInputProps={{\n multiline: true,\n returnKeyType: 'default',\n enablesReturnKeyAutomatically: true,\n placeholderTextColor: colors.gray[400],\n }}\n minComposerHeight={36}\n maxComposerHeight={100}\n placeholder=\"Jot something down\"\n lightboxProps={{\n underlayColor: 'transparent',\n springConfig: { tension: 90000, friction: 90000 },\n disabled: true,\n }}\n infiniteScroll={false}\n renderAccessory={selectedImage ? renderAccessory : null}\n /> */}\n </View>\n </KeyboardAvoidingView>\n );\n};\n\n// Export with React.memo to prevent unnecessary re-renders\nexport const ConversationView = React.memo(ConversationViewComponent, (prevProps, nextProps) => {\n // Only re-render if these critical props change\n return (\n prevProps.channelId === nextProps.channelId &&\n prevProps.role === nextProps.role &&\n prevProps.isShowThreadMessage === nextProps.isShowThreadMessage &&\n prevProps.isPaymentChatUI === nextProps.isPaymentChatUI\n );\n});\n"],"names":["React","_a","_b","error","_c","_d","data","params","SlackMessage"],"mappings":"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"}