@messenger-box/platform-mobile 10.0.3-alpha.33 → 10.0.3-alpha.36

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.
@@ -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} 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 console.log('🛠️ Safe send event:', event.type);\n send(event);\n\n // For important events like SET_CHANNEL_MESSAGES, verify they worked\n if (event.type === ConversationActions.SET_CHANNEL_MESSAGES) {\n // Add a verification step to ensure state was updated\n setTimeout(() => {\n // Don't log for every check to avoid console spam\n if (state.context.channelMessages.length === 0 && event.data?.messages?.length > 0) {\n console.warn('🛠️ SET_CHANNEL_MESSAGES did not update state - messages still empty');\n }\n }, 100);\n }\n } catch (error) {\n console.error('🛠️ Error in safeSend:', error, 'Event type:', event.type);\n // Try direct state update as fallback for critical events\n if (event.type === ConversationActions.SET_CHANNEL_MESSAGES && event.data?.messages) {\n console.log('🛠️ Attempting fallback for SET_CHANNEL_MESSAGES');\n try {\n // Direct update as fallback\n send({\n type: 'DIRECT_STATE_UPDATE',\n data: event.data,\n });\n } catch (fallbackError) {\n console.error('🛠️ Even fallback failed:', fallbackError);\n }\n }\n }\n },\n [send, state.context.channelMessages.length],\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 // DIRECT STATE UPDATE: Immediately update state to ensure messages are displayed\n if (queryData.messages.data.length > 0) {\n console.log('🔄 IMMEDIATE STATE UPDATE with messages:', queryData.messages.data.length);\n safeSend({\n type: ConversationActions.SET_CHANNEL_MESSAGES,\n data: {\n messages: queryData.messages.data,\n totalCount: queryData.messages.totalCount,\n },\n });\n }\n }\n },\n onError: (error) => {\n console.error('MESSAGE QUERY ERROR:', error);\n // Report error to state machine\n safeSend({ type: 'ERROR', data: { message: String(error) } });\n },\n });\n // console.log('🔄 MESSAGE QUERY COMPLETED:', JSON.stringify(data));\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 // Use timeout to ensure this doesn't conflict with other state updates\n setTimeout(() => {\n // Directly update the state machine with new messages\n safeSend({\n type: ConversationActions.SET_CHANNEL_MESSAGES,\n data: {\n messages: uniqBy([...messages, ...state.context.channelMessages], ({ id }) => id),\n totalCount: messageTotalCount,\n },\n });\n\n // Verify the update was processed properly\n setTimeout(() => {\n const currentMessagesCount = state.context.channelMessages?.length || 0;\n console.log('📩 STATE UPDATE VERIFICATION - Current message count:', currentMessagesCount);\n\n if (currentMessagesCount === 0) {\n console.warn('⚠️ STATE NOT UPDATED after message data received - triggering fallback');\n // Direct fallback approach\n safeSend({\n type: ConversationActions.SET_CHANNEL_MESSAGES,\n data: {\n messages: messages,\n totalCount: messageTotalCount,\n },\n });\n }\n }, 500);\n }, 0);\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 }\n }, [data, safeSend]);\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 try {\n // Log for debugging\n console.log(\n '🔔 Subscription data received for channel:',\n state?.context?.channelId,\n );\n\n // Check if we have valid subscription data\n if (!subscriptionData?.data?.chatMessageAdded) {\n console.log('🔔 No valid message in subscription data');\n return prev;\n }\n\n const newMessage = subscriptionData.data.chatMessageAdded;\n console.log('🔔 New message received:', newMessage.id);\n\n // Check if we already have this message to avoid duplicates\n const currentMessages = prev?.messages?.data || [];\n if (currentMessages.some((msg) => msg.id === newMessage.id)) {\n console.log('🔔 Message already in cache, skipping update');\n return prev;\n }\n\n // Capture the new message in state directly\n setTimeout(() => {\n try {\n // Update state machine directly\n console.log('🔔 Directly updating state machine with new message');\n safeSend({\n type: ConversationActions.SET_CHANNEL_MESSAGES,\n data: {\n messages: [...state.context.channelMessages, newMessage],\n totalCount: (state.context.totalCount || 0) + 1,\n },\n });\n } catch (error) {\n console.error('🔔 Error updating state with subscription data:', error);\n }\n }, 0);\n\n // Update Apollo cache\n const updatedData = {\n ...prev,\n messages: {\n ...prev.messages,\n data: [...currentMessages, newMessage],\n totalCount: (prev?.messages?.totalCount || 0) + 1,\n },\n };\n\n console.log('🔔 Returning updated query data with new messages');\n return updatedData;\n } catch (error) {\n console.error('🔔 Error in subscription updateQuery:', error);\n return prev;\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 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 // Store the channelId in a ref to track changes\n const channelIdRef = useRef(channelId);\n\n useEffect(() => {\n // Don't set up subscription if there's no channel ID\n if (!channelId) {\n console.log('⚠️ No channel ID for subscription');\n return;\n }\n\n console.log('🔄 Setting up NEW subscription for channel:', channelId);\n\n // Call the subscribe function and store the unsubscribe function\n const unsubscribe = subscribeToNewMessages();\n\n // Update the ref with the current channelId\n channelIdRef.current = channelId;\n\n // Return cleanup function\n return () => {\n if (unsubscribe && typeof unsubscribe === 'function') {\n console.log('🔄 Cleaning up subscription for channel:', channelIdRef.current);\n unsubscribe();\n }\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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"}