@messenger-box/platform-mobile 10.0.3-alpha.19 → 10.0.3-alpha.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/lib/screens/inbox/components/CachedImage/index.js +0 -19
- package/lib/screens/inbox/components/CachedImage/index.js.map +1 -1
- package/lib/screens/inbox/components/DialogsListItem.js +423 -50
- package/lib/screens/inbox/components/DialogsListItem.js.map +1 -1
- package/lib/screens/inbox/components/ServiceDialogsListItem.js +375 -51
- package/lib/screens/inbox/components/ServiceDialogsListItem.js.map +1 -1
- package/lib/screens/inbox/components/workflow/dialogs-list-item-xstate.js +175 -0
- package/lib/screens/inbox/components/workflow/dialogs-list-item-xstate.js.map +1 -0
- package/lib/screens/inbox/components/workflow/service-dialogs-list-item-xstate.js +191 -0
- package/lib/screens/inbox/components/workflow/service-dialogs-list-item-xstate.js.map +1 -0
- package/lib/screens/inbox/containers/Dialogs.js +536 -66
- package/lib/screens/inbox/containers/Dialogs.js.map +1 -1
- package/lib/screens/inbox/containers/ThreadConversationView.js +95 -23
- package/lib/screens/inbox/containers/ThreadConversationView.js.map +1 -1
- package/lib/screens/inbox/containers/workflow/dialogs-xstate.js +211 -0
- package/lib/screens/inbox/containers/workflow/dialogs-xstate.js.map +1 -0
- package/package.json +2 -2
- package/src/screens/inbox/components/CachedImage/index.tsx +9 -9
- package/src/screens/inbox/components/DialogsListItem.tsx +624 -107
- package/src/screens/inbox/components/ServiceDialogsListItem.tsx +506 -114
- package/src/screens/inbox/components/SupportServiceDialogsListItem.tsx +35 -17
- package/src/screens/inbox/components/workflow/dialogs-list-item-xstate.ts +145 -0
- package/src/screens/inbox/components/workflow/service-dialogs-list-item-xstate.ts +159 -0
- package/src/screens/inbox/containers/Dialogs.tsx +711 -169
- package/src/screens/inbox/containers/ThreadConversationView.tsx +151 -35
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServiceDialogsListItem.js","sources":["../../../../src/screens/inbox/components/ServiceDialogsListItem.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport {\n Text,\n Image,\n Pressable,\n HStack,\n Box,\n AvatarGroup,\n Avatar,\n AvatarFallbackText,\n AvatarImage,\n AvatarBadge,\n View,\n} from '@admin-layout/gluestack-ui-mobile';\nimport { format, isToday, isYesterday } from 'date-fns';\nimport { useFocusEffect } from '@react-navigation/native';\nimport { IChannel, IUserAccount } from 'common';\nimport {\n useOnThreadCreatedUpdatedSubscription,\n useOnThreadChatMessageAddedSubscription,\n useThreadMessagesQuery,\n OnThreadCreatedUpdatedDocument as THREAD_CHAT_ADDED,\n OnThreadChatMessageAddedDocument as CHAT_MESSAGE_ADDED,\n} from 'common/graphql';\nimport { startCase } from 'lodash-es';\nimport colors from 'tailwindcss/colors';\n\nconst createdAtText = (value: string) => {\n if (!value) return '';\n let date = new Date(value);\n if (isToday(date)) return 'Today';\n if (isYesterday(date)) return 'Yesterday';\n return format(new Date(value), 'MMM dd, yyyy');\n};\n\nexport interface IDialogListChannel extends IChannel {\n users: IUserAccount[];\n}\n\nexport interface IDialogListItemProps {\n currentUser?: any;\n users?: any;\n selectedChannelId?: any;\n channel?: any;\n onOpen: (id: any, title: any, postParentId?: any) => void;\n refreshing: boolean;\n role: any;\n}\n\n/**\n * TODO:\n * - Get Reservation info: reservation date, status\n * - Add ability to get property information: name, logo\n */\nexport const ServiceDialogsListItemComponent: React.FC<IDialogListItemProps> = function DialogsListItem({\n currentUser,\n // users,\n selectedChannelId,\n channel,\n onOpen,\n refreshing,\n role,\n}) {\n const [servicePostParentId, setServicePostParentId] = React.useState(null);\n const {\n data: threadMessages,\n loading: threadMessageLoading,\n error,\n refetch: refetchThreadMessages,\n subscribeToMore,\n } = useThreadMessagesQuery({\n variables: {\n channelId: channel?.id?.toString(),\n role,\n limit: 2,\n },\n fetchPolicy: 'cache-and-network',\n });\n\n useFocusEffect(\n React.useCallback(() => {\n // Do something when the screen is focused\n // refetchMessages({ channelId: channel?.id?.toString(), limit: 25 });\n refetchThreadMessages({ channelId: channel?.id?.toString(), role, limit: 2 });\n return () => {\n // Do something when the screen is unfocused\n // Useful for cleanup functions\n };\n }, [refreshing]),\n );\n\n const lastMessage = useMemo(() => {\n if (!threadMessages?.threadMessages?.data?.length) {\n return null;\n }\n const { data }: any = threadMessages.threadMessages;\n const replies =\n data\n ?.map((t: any) => t?.replies)\n ?.flat(1)\n ?.filter((p: any) => p?.message !== '') ?? [];\n if (replies?.length) {\n return replies[0];\n // return replies[replies.length - 1];\n } else {\n const post =\n data?.find((t: any) => {\n return t?.post?.message !== '';\n }) ??\n data?.find((t: any) => {\n return t?.post;\n }) ??\n null;\n return post ? post?.post : null;\n }\n }, [threadMessages]);\n\n React.useEffect(() => {\n if (lastMessage) {\n const sParentId = lastMessage?.parentId ? lastMessage?.parentId : lastMessage?.id;\n setServicePostParentId(sParentId);\n }\n }, [lastMessage]);\n\n const creatorAndMembersId = React.useMemo(() => {\n if (!channel?.members) return null;\n const membersIds: any =\n channel?.members\n ?.filter((m: any) => m !== null && m?.user?.id !== currentUser?.id)\n ?.map((mu: any) => mu?.user?.id) ?? [];\n const creatorId: any = channel?.creator?.id;\n const mergedIds: any = [].concat(membersIds, creatorId) ?? [];\n return mergedIds?.filter((m: any, pos: any) => mergedIds?.indexOf(m) === pos) ?? [];\n }, [channel]);\n\n const postParentId = React.useMemo(() => {\n if (!creatorAndMembersId?.length) return null;\n\n return creatorAndMembersId?.length && creatorAndMembersId?.includes(currentUser?.id)\n ? null\n : lastMessage?.parentId\n ? lastMessage?.parentId\n : lastMessage?.id ?? 0;\n }, [creatorAndMembersId, lastMessage]);\n\n // const { data: threadCreatedUpdated } = useOnThreadCreatedUpdatedSubscription({\n // variables: {\n // channelId: channel?.id?.toString(),\n // postParentId:\n // postParentId == null\n // ? null\n // : lastMessage?.parentId\n // ? lastMessage?.parentId ?? null\n // : lastMessage?.id ?? null,\n // },\n // });\n\n // React.useEffect(() => {\n // if (threadCreatedUpdated?.threadCreatedUpdated?.data) {\n // refetchThreadMessages({ channelId: channel?.id?.toString(), role, limit: 2 });\n // }\n // }, [threadCreatedUpdated]);\n\n return (\n <Pressable\n onPress={() => channel?.id !== selectedChannelId && onOpen(channel?.id, channel?.title, postParentId)}\n className=\"flex-1 rounded-md border-gray-200 dark:border-gray-600 dark:bg-gray-700\"\n style={{ borderBottomWidth: 1, borderColor: '#e5e7eb', marginVertical: 0 }}\n >\n <HStack space={'md'} className=\"flex-1 w-[100%] px-2 py-3 items-center\">\n <Box className=\"flex-[0.1] items-start pl-3\">\n <Avatar\n key={'service-channels-key-' + channel?.id}\n size={'sm'}\n className=\"bg-transparent top-0 right-0 z-[1]\"\n >\n <AvatarFallbackText> {startCase(channel?.creator?.username?.charAt(0))}</AvatarFallbackText>\n <AvatarImage\n alt=\"user image\"\n style={{ borderRadius: 6, borderWidth: 2, borderColor: '#fff' }}\n source={{\n uri: channel?.creator?.picture,\n }}\n />\n </Avatar>\n </Box>\n <Box className=\"flex-1\">\n <ServiceChannelWithLastMessage\n channel={channel}\n lastMessage={lastMessage}\n subscribeToNewMessages={() =>\n subscribeToMore({\n document: THREAD_CHAT_ADDED,\n variables: {\n channelId: channel?.id?.toString(),\n postParentId: postParentId ? servicePostParentId : null,\n },\n updateQuery: (prev, { subscriptionData }: any) => {\n if (!subscriptionData.data) return prev;\n\n const newPostThreadData: any = subscriptionData?.data?.threadCreatedUpdated?.data;\n const newMessage: any = subscriptionData?.data?.threadCreatedUpdated?.lastMessage;\n const data =\n prev?.threadMessages?.data?.map((t: any) =>\n t.id === newPostThreadData?.id\n ? {\n ...t,\n replies: [...t?.replies, newMessage],\n replyCount: newPostThreadData?.replyCount,\n lastReplyAt: newPostThreadData?.lastReplyAt,\n updatedAt: newPostThreadData?.updatedAt,\n }\n : t,\n ) ?? [];\n\n return Object.assign({}, prev, {\n threadMessages: {\n ...prev?.threadMessages,\n totalCount: newPostThreadData?.totalCount ?? 0,\n data: data?.length > 0 ? data : [newPostThreadData],\n // totalCount: prev?.threadMessages?.totalCount + 1,\n //data: data,\n },\n });\n },\n })\n }\n />\n {/* <Text\n flex={1}\n color=\"gray.600\"\n p={0}\n m={0}\n w={'100%'}\n justifyContent={''}\n fontSize=\"lg\"\n fontWeight=\"semibold\"\n >\n {title}\n </Text> */}\n {/* <Text flex={0.1} color=\"gray.600\">\n {lastMessage?.message ?? ''}\n </Text> */}\n </Box>\n {/* <Text flex={0.2} color=\"gray.500\">\n {lastMessage ? createdAtText(lastMessage?.createdAt) : ''}\n </Text> */}\n </HStack>\n </Pressable>\n );\n};\n\nconst ServiceChannelWithLastMessage = React.memo(({ channel, lastMessage, subscribeToNewMessages }: any) => {\n React.useEffect(() => subscribeToNewMessages(), []);\n const count = 20;\n const title = channel?.title.slice(0, count) + (channel?.title.length > count ? '...' : '');\n return (\n <HStack space={'sm'} className=\"flex-1 justify-between\">\n <Box className=\"flex-[0.8]\">\n <Text color={colors.gray[600]} className=\"text-base text-wrap flex-wrap font-semibold\">\n {title}\n </Text>\n <Text color={colors.gray[600]} numberOfLines={1}>\n {/* {creatorAndMembersId?.length && creatorAndMembersId?.includes(currentUser?.id)\n ? lastMessageCreatorAndMembers?.message ?? ''\n : lastMessage?.message ?? ''} */}\n {lastMessage?.message ?? ''}\n </Text>\n </Box>\n\n <Box className=\"flex-[0.2]\">\n {/* {creatorAndMembersId?.length && creatorAndMembersId?.includes(currentUser?.id) ? (\n <Text color=\"gray.500\">\n {lastMessageCreatorAndMembers\n ? createdAtText(lastMessageCreatorAndMembers?.createdAt)\n : ''}\n </Text>\n ) : (\n <Text color=\"gray.500\">{lastMessage ? createdAtText(lastMessage?.createdAt) : ''}</Text>\n )} */}\n <Text color={colors.gray[500]}>{lastMessage ? createdAtText(lastMessage?.createdAt) : ''}</Text>\n </Box>\n </HStack>\n );\n});\n\nexport const ServiceDialogsListItem = React.memo(ServiceDialogsListItemComponent);\n"],"names":["React","_a","_b","_c","_d","THREAD_CHAT_ADDED"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ServiceDialogsListItem.js","sources":["../../../../src/screens/inbox/components/ServiceDialogsListItem.tsx"],"sourcesContent":["import React, { useMemo, useState, useCallback, useRef } from 'react';\nimport {\n Text,\n Image,\n Pressable,\n HStack,\n Box,\n AvatarGroup,\n Avatar,\n AvatarFallbackText,\n AvatarImage,\n AvatarBadge,\n View,\n} from '@admin-layout/gluestack-ui-mobile';\nimport { format, isToday, isYesterday } from 'date-fns';\nimport { useFocusEffect } from '@react-navigation/native';\nimport { IChannel, IUserAccount } from 'common';\nimport {\n useOnThreadCreatedUpdatedSubscription,\n useOnThreadChatMessageAddedSubscription,\n useThreadMessagesQuery,\n OnThreadCreatedUpdatedDocument as THREAD_CHAT_ADDED,\n OnThreadChatMessageAddedDocument as CHAT_MESSAGE_ADDED,\n} from 'common/graphql';\nimport { startCase } from 'lodash-es';\nimport colors from 'tailwindcss/colors';\nimport { serviceDialogsListItemXstate, Actions, BaseState } from './workflow/service-dialogs-list-item-xstate';\n\n// Helper function to safely create a Date object\nconst safeDate = (dateValue) => {\n if (!dateValue) return null;\n\n try {\n const date = new Date(dateValue);\n // Check if the date is valid by seeing if it returns a valid time value\n if (isNaN(date.getTime())) {\n console.warn('Invalid date value detected:', dateValue);\n return null;\n }\n return date;\n } catch (error) {\n console.warn('Error creating date from value:', dateValue, error);\n return null;\n }\n};\n\nconst createdAtText = (value: string) => {\n if (!value) return '';\n const date = safeDate(value);\n if (!date) return '';\n\n if (isToday(date)) return 'Today';\n if (isYesterday(date)) return 'Yesterday';\n return format(date, 'MMM dd, yyyy');\n};\n\nexport interface IDialogListChannel extends IChannel {\n users: IUserAccount[];\n}\n\nexport interface IDialogListItemProps {\n currentUser?: any;\n users?: any;\n selectedChannelId?: any;\n channel?: any;\n onOpen: (id: any, title: any, postParentId?: any) => void;\n refreshing: boolean;\n role: any;\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: string | null;\n currentUser: any;\n threadMessages: any[];\n loading: boolean;\n error: string | null;\n title: string;\n role: string;\n servicePostParentId: string | null;\n lastMessage: any;\n };\n value: string;\n matches?: (stateValue: string) => boolean;\n }\n\n // Initialize state with default values to prevent undefined errors\n const [state, setState] = useState<SafeStateType>({\n context: {\n channelId: null,\n currentUser: null,\n threadMessages: [],\n loading: false,\n error: null,\n title: '',\n role: '',\n servicePostParentId: null,\n lastMessage: null,\n },\n value: BaseState.Idle,\n matches: (stateValue) => stateValue === BaseState.Idle,\n });\n\n // Implement a send function that updates state safely\n const send = useCallback((event) => {\n try {\n // Handle specific events manually\n if (event.type === Actions.INITIAL_CONTEXT) {\n setState((prev) => ({\n ...prev,\n context: {\n ...prev.context,\n channelId: event.data?.channelId || null,\n currentUser: event.data?.currentUser || null,\n role: event.data?.role || null,\n loading: true,\n },\n value: BaseState.FetchingThreadMessages,\n }));\n } else if (event.type === Actions.UPDATE_THREAD_MESSAGES) {\n setState((prev) => {\n if (event.data?.threadMessages) {\n // Handling bulk messages (initial load)\n // If a direct last message was provided (from subscription), use it\n if (event.data?.directLastMessage) {\n console.log('Using direct last message from event:', {\n id: event.data.directLastMessage.id,\n message: event.data.directLastMessage.message?.substring(0, 20) + '...',\n });\n\n return {\n ...prev,\n context: {\n ...prev.context,\n threadMessages: event.data.threadMessages,\n lastMessage: event.data.directLastMessage,\n loading: false,\n },\n };\n }\n\n return {\n ...prev,\n context: {\n ...prev.context,\n threadMessages: event.data.threadMessages,\n lastMessage: computeLastMessage(event.data.threadMessages),\n loading: false,\n },\n };\n } else if (event.data?.message) {\n // Handling single message (from subscription)\n const newMessage = event.data.message;\n const updatedMessages = [...prev.context.threadMessages, newMessage];\n\n // Use the new message directly as the last message\n // This ensures immediate update on subscription\n console.log('Setting new message as lastMessage from subscription:', {\n id: newMessage.id,\n message: newMessage.message?.substring(0, 20) + '...',\n date: newMessage.createdAt || newMessage.updatedAt,\n });\n\n return {\n ...prev,\n context: {\n ...prev.context,\n threadMessages: updatedMessages,\n lastMessage: newMessage, // Use the new message directly\n loading: false,\n },\n };\n }\n return prev;\n });\n } else if (event.type === Actions.SET_TITLE) {\n setState((prev) => ({\n ...prev,\n context: {\n ...prev.context,\n title: event.data?.title || '',\n },\n }));\n } else if (event.type === Actions.SET_SERVICE_POST_PARENT_ID) {\n setState((prev) => ({\n ...prev,\n context: {\n ...prev.context,\n servicePostParentId: event.data?.servicePostParentId || null,\n },\n }));\n } else if (event.type === Actions.START_LOADING) {\n setState((prev) => ({\n ...prev,\n context: {\n ...prev.context,\n loading: true,\n },\n }));\n } else if (event.type === Actions.STOP_LOADING) {\n setState((prev) => ({\n ...prev,\n context: {\n ...prev.context,\n loading: false,\n },\n }));\n }\n } catch (error) {\n console.error('Error sending event to state machine:', error);\n }\n }, []);\n\n // Helper function to compute the last message from a list of messages\n const computeLastMessage = (threadMessages) => {\n if (!threadMessages || !threadMessages.length) return null;\n\n // Extract the post and replies from thread messages\n let posts = [];\n let replies = [];\n\n // Helper function to check if a message is an image or contains only image content\n const isTextMessage = (msg) => {\n if (!msg) return false;\n\n // If message is empty or only contains image-specific markers, ignore it\n if (!msg.message || msg.message === '') return false;\n\n // Check if message looks like an image URL or reference\n const isImageMessage =\n msg.message.includes('<img') ||\n msg.message.includes('[Image]') ||\n msg.message.includes('![') ||\n (/\\.(jpeg|jpg|gif|png|bmp|webp)/i.test(msg.message) &&\n (msg.message.includes('http') || msg.message.includes('/images/')));\n\n // Return true only for text messages (not image messages)\n return !isImageMessage;\n };\n\n threadMessages.forEach((thread) => {\n if (thread?.post && isTextMessage(thread.post)) {\n posts.push(thread.post);\n }\n if (thread?.replies?.length) {\n replies = [...replies, ...thread.replies.filter((r) => isTextMessage(r))];\n }\n });\n\n // Combine and sort all messages\n const allMessages = [...posts, ...replies];\n if (!allMessages.length) return null;\n\n // Return the most recent message - use safe date comparison\n return allMessages.reduce((a, b) => {\n const dateA = safeDate(a?.createdAt);\n const dateB = safeDate(b?.createdAt);\n\n // If either date is invalid, prefer the message with valid date\n if (!dateA) return b;\n if (!dateB) return a;\n\n return dateA > dateB ? a : b;\n }, allMessages[0]);\n };\n\n // Add a matches function that works with the current state value\n const stateWithMatches = useMemo(() => {\n return {\n ...state,\n matches: (stateValue) => {\n try {\n return state.value === stateValue;\n } catch (error) {\n console.error(`Error in matches function:`, error);\n return false;\n }\n },\n };\n }, [state]);\n\n // Return as a tuple to match useMachine API\n return [stateWithMatches, send] as const;\n}\n\nconst ServiceChannelWithLastMessage = React.memo(({ channel, lastMessage, subscribeToNewMessages }: any) => {\n React.useEffect(() => {\n // Subscribe and store the unsubscribe function\n const unsubscribe = subscribeToNewMessages();\n return () => {\n // Cleanup subscription on unmount\n if (unsubscribe && typeof unsubscribe === 'function') {\n unsubscribe();\n }\n };\n }, [subscribeToNewMessages]);\n\n // Debug output for component rendering\n React.useEffect(() => {\n console.log(`ServiceChannelWithLastMessage rendered for channel ${channel?.id}:`, {\n hasLastMessage: !!lastMessage,\n messageId: lastMessage?.id,\n messageText: lastMessage?.message?.substring(0, 20) + (lastMessage?.message?.length > 20 ? '...' : ''),\n date: lastMessage?.createdAt ? safeDate(lastMessage.createdAt)?.toISOString() : 'none',\n });\n }, [lastMessage, channel?.id]);\n\n const count = 30;\n const title = channel?.title.slice(0, count) + (channel?.title.length > count ? '...' : '');\n\n // Define message display text\n let displayMessage = 'No messages yet';\n\n if (lastMessage) {\n // Check for file attachments\n const hasFileAttachments = lastMessage.files?.data?.length > 0;\n\n // Check if the message appears to be an image\n const isImageMessage =\n lastMessage.message?.includes('<img') ||\n lastMessage.message?.includes('[Image]') ||\n lastMessage.message?.includes('![') ||\n (/\\.(jpeg|jpg|gif|png|bmp|webp)/i.test(lastMessage.message || '') &&\n ((lastMessage.message || '').includes('http') || (lastMessage.message || '').includes('/images/')));\n\n if (hasFileAttachments) {\n displayMessage = '📎 File attachment';\n } else if (isImageMessage) {\n displayMessage = '[Image]';\n } else if (lastMessage.message && lastMessage.message.trim() !== '') {\n displayMessage = lastMessage.message;\n } else {\n displayMessage = '(Empty message)';\n }\n }\n\n return (\n <HStack space={'sm'} className=\"flex-1 justify-between\">\n <Box className=\"flex-[0.8]\">\n <Text color={colors.gray[600]} className=\"text-base text-wrap flex-wrap font-semibold\">\n {title}\n </Text>\n <Text color={colors.gray[600]} numberOfLines={1}>\n {displayMessage}\n </Text>\n </Box>\n\n <Box className=\"flex-[0.2]\">\n <Text color={colors.gray[500]}>{lastMessage ? createdAtText(lastMessage?.createdAt) : ''}</Text>\n </Box>\n </HStack>\n );\n});\n\n/**\n * TODO:\n * - Get Reservation info: reservation date, status\n * - Add ability to get property information: name, logo\n */\nexport const ServiceDialogsListItemComponent: React.FC<IDialogListItemProps> = function DialogsListItem({\n currentUser,\n // users,\n selectedChannelId,\n channel,\n onOpen,\n refreshing,\n role,\n}) {\n // Create a ref to track if component is mounted\n const isMountedRef = useRef(true);\n // Define safe access functions\n const [state, send] = useSafeMachine(serviceDialogsListItemXstate);\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 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 // Query for thread messages\n const {\n data: threadMessages,\n loading: threadMessageLoading,\n error,\n refetch: refetchThreadMessages,\n subscribeToMore,\n } = useThreadMessagesQuery({\n variables: {\n channelId: channel?.id?.toString(),\n role,\n limit: 2,\n },\n fetchPolicy: 'cache-and-network',\n onCompleted: (data) => {\n console.log(\n `Completed thread messages query for channel ${channel?.id}:`,\n data?.threadMessages?.data?.length ? 'Has messages' : 'No messages',\n );\n },\n onError: (error) => {\n console.error(`Error fetching thread messages for channel ${channel?.id}:`, error);\n },\n });\n\n // Update state when channel or currentUser changes\n React.useEffect(() => {\n if (channel?.id) {\n safeSend({\n type: Actions.INITIAL_CONTEXT,\n data: {\n channelId: channel?.id?.toString(),\n currentUser,\n role,\n },\n });\n\n safeSend({\n type: Actions.SET_TITLE,\n data: {\n title: channel?.title || '',\n },\n });\n }\n\n return () => {\n isMountedRef.current = false;\n };\n }, [channel?.id, currentUser, role, safeSend]);\n\n // Update state when thread messages are loaded or refreshed\n React.useEffect(() => {\n if (threadMessages && isMountedRef.current) {\n console.log(\n `Updating thread messages for channel ${channel?.id}, count:`,\n threadMessages?.threadMessages?.data?.length || 0,\n );\n\n safeSend({\n type: Actions.UPDATE_THREAD_MESSAGES,\n data: {\n threadMessages: threadMessages?.threadMessages?.data || [],\n },\n });\n }\n }, [threadMessages, refreshing, channel?.id, safeSend]);\n\n // Use computed values from state\n const lastMessage = safeContextProperty('lastMessage', null);\n const servicePostParentId = safeContextProperty('servicePostParentId', null);\n\n // Update servicePostParentId when lastMessage changes\n React.useEffect(() => {\n if (lastMessage) {\n const sParentId = lastMessage?.parentId ? lastMessage?.parentId : lastMessage?.id;\n safeSend({\n type: Actions.SET_SERVICE_POST_PARENT_ID,\n data: {\n servicePostParentId: sParentId,\n },\n });\n }\n }, [lastMessage, safeSend]);\n\n const creatorAndMembersId = React.useMemo(() => {\n if (!channel?.members) return null;\n const membersIds: any =\n channel?.members\n ?.filter((m: any) => m !== null && m?.user?.id !== currentUser?.id)\n ?.map((mu: any) => mu?.user?.id) ?? [];\n const creatorId: any = channel?.creator?.id;\n const mergedIds: any = [].concat(membersIds, creatorId) ?? [];\n return mergedIds?.filter((m: any, pos: any) => mergedIds?.indexOf(m) === pos) ?? [];\n }, [channel, currentUser]);\n\n const postParentId = React.useMemo(() => {\n if (!creatorAndMembersId?.length) return null;\n\n return creatorAndMembersId?.length && creatorAndMembersId?.includes(currentUser?.id)\n ? null\n : lastMessage?.parentId\n ? lastMessage?.parentId\n : lastMessage?.id ?? 0;\n }, [creatorAndMembersId, lastMessage, currentUser]);\n\n // Function to force refresh the component state\n const refreshThreadState = useCallback(() => {\n if (channel?.id && isMountedRef.current) {\n console.log('Forcing thread state refresh for channel:', channel?.id);\n // First ensure we're in a loading state to trigger UI updates\n safeSend({ type: Actions.START_LOADING });\n\n // Refetch messages from server\n refetchThreadMessages({\n channelId: channel?.id?.toString(),\n role,\n limit: 2,\n })\n .then((result) => {\n // Update the state with fresh data\n if (result.data?.threadMessages?.data && isMountedRef.current) {\n console.log(\n `Refreshed ${result.data.threadMessages.data.length} thread messages for channel ${channel?.id}`,\n );\n\n safeSend({\n type: Actions.UPDATE_THREAD_MESSAGES,\n data: { threadMessages: result.data.threadMessages.data },\n });\n }\n safeSend({ type: Actions.STOP_LOADING });\n })\n .catch((err) => {\n console.error('Error refreshing thread state:', err);\n safeSend({ type: Actions.STOP_LOADING });\n });\n }\n }, [channel?.id, refetchThreadMessages, safeSend, isMountedRef, role]);\n\n // Refetch messages when screen is focused or refreshing\n useFocusEffect(\n React.useCallback(() => {\n if (!channel?.id) return;\n\n console.log('ServiceDialogsListItem focused for channel:', channel?.id);\n\n // Show loading state\n safeSend({ type: Actions.START_LOADING });\n\n // Use a direct refetch with network-only policy to force fresh data\n const fetchFreshData = async () => {\n try {\n // Force a network-only fetch\n const result = await refetchThreadMessages({\n channelId: channel?.id?.toString(),\n role,\n limit: 2,\n });\n\n // Log the refreshed data\n console.log(\n `FOCUS EFFECT: Refetched ${\n result?.data?.threadMessages?.data?.length || 0\n } messages for channel ${channel?.id}`,\n );\n\n if (result?.data?.threadMessages?.data && isMountedRef.current) {\n // Update state with fresh data\n safeSend({\n type: Actions.UPDATE_THREAD_MESSAGES,\n data: { threadMessages: result.data.threadMessages.data },\n });\n }\n } catch (error) {\n console.error('Error refetching thread messages on focus:', error);\n } finally {\n if (isMountedRef.current) {\n safeSend({ type: Actions.STOP_LOADING });\n }\n }\n };\n\n // Execute fetch\n fetchFreshData();\n\n return () => {\n // Cleanup function when unfocused\n };\n }, [refreshing, channel?.id, refetchThreadMessages, safeSend, role, isMountedRef]),\n );\n\n return (\n <Pressable\n onPress={() => channel?.id !== selectedChannelId && onOpen(channel?.id, channel?.title, postParentId)}\n className=\"flex-1 rounded-md border-gray-200 dark:border-gray-600 dark:bg-gray-700\"\n style={{ borderBottomWidth: 1, borderColor: '#e5e7eb', marginVertical: 0 }}\n >\n <HStack space={'md'} className=\"flex-1 w-[100%] px-2 py-3 items-center\">\n <Box className=\"flex-[0.1] items-start pl-3\">\n <Avatar\n key={'service-channels-key-' + channel?.id}\n size={'sm'}\n className=\"bg-transparent top-0 right-0 z-[1]\"\n >\n <AvatarFallbackText> {startCase(channel?.creator?.username?.charAt(0))}</AvatarFallbackText>\n <AvatarImage\n alt=\"user image\"\n style={{ borderRadius: 6, borderWidth: 2, borderColor: '#fff' }}\n source={{\n uri: channel?.creator?.picture,\n }}\n />\n </Avatar>\n </Box>\n <Box className=\"flex-1\">\n <ServiceChannelWithLastMessage\n channel={channel}\n lastMessage={lastMessage}\n subscribeToNewMessages={() =>\n subscribeToMore({\n document: THREAD_CHAT_ADDED,\n variables: {\n channelId: channel?.id?.toString(),\n postParentId: postParentId ? servicePostParentId : null,\n },\n updateQuery: (prev, { subscriptionData }: any) => {\n if (!subscriptionData.data) return prev;\n\n const newPostThreadData: any = subscriptionData?.data?.threadCreatedUpdated?.data;\n const newMessage: any = subscriptionData?.data?.threadCreatedUpdated?.lastMessage;\n\n console.log('New thread message subscription update:', {\n channelId: channel?.id,\n threadId: newPostThreadData?.id,\n hasMessage: !!newMessage,\n message: newMessage?.message?.substring(0, 20) + '...',\n });\n\n const data =\n prev?.threadMessages?.data?.map((t: any) =>\n t.id === newPostThreadData?.id\n ? {\n ...t,\n replies: [...t?.replies, newMessage],\n replyCount: newPostThreadData?.replyCount,\n lastReplyAt: newPostThreadData?.lastReplyAt,\n updatedAt: newPostThreadData?.updatedAt,\n }\n : t,\n ) ?? [];\n\n // Use the safe state update function\n if (isMountedRef.current) {\n safeSend({\n type: Actions.UPDATE_THREAD_MESSAGES,\n data: {\n threadMessages: data?.length > 0 ? data : [newPostThreadData],\n directLastMessage: newMessage, // Directly set the new message\n },\n });\n }\n\n return Object.assign({}, prev, {\n threadMessages: {\n ...prev?.threadMessages,\n totalCount: newPostThreadData?.totalCount ?? 0,\n data: data?.length > 0 ? data : [newPostThreadData],\n },\n });\n },\n })\n }\n />\n </Box>\n </HStack>\n </Pressable>\n );\n};\n\nexport const ServiceDialogsListItem = React.memo(ServiceDialogsListItemComponent);\n"],"names":["React","_a","_b","_c","error","_d","THREAD_CHAT_ADDED"],"mappings":"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"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import {setup,assign}from'xstate';import {merge}from'lodash-es';var __defProp = Object.defineProperty;
|
|
2
|
+
var __defProps = Object.defineProperties;
|
|
3
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
7
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
+
var __spreadValues = (a, b) => {
|
|
9
|
+
for (var prop in b || (b = {}))
|
|
10
|
+
if (__hasOwnProp.call(b, prop))
|
|
11
|
+
__defNormalProp(a, prop, b[prop]);
|
|
12
|
+
if (__getOwnPropSymbols)
|
|
13
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
14
|
+
if (__propIsEnum.call(b, prop))
|
|
15
|
+
__defNormalProp(a, prop, b[prop]);
|
|
16
|
+
}
|
|
17
|
+
return a;
|
|
18
|
+
};
|
|
19
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
|
+
var Actions = /* @__PURE__ */ ((Actions2) => {
|
|
21
|
+
Actions2["INITIAL_CONTEXT"] = "INITIAL_CONTEXT";
|
|
22
|
+
Actions2["ERROR_HANDLED"] = "ERROR_HANDLED";
|
|
23
|
+
Actions2["FETCH_MESSAGES"] = "FETCH_MESSAGES";
|
|
24
|
+
Actions2["UPDATE_MESSAGES"] = "UPDATE_MESSAGES";
|
|
25
|
+
Actions2["SUBSCRIBE_TO_MESSAGES"] = "SUBSCRIBE_TO_MESSAGES";
|
|
26
|
+
Actions2["SET_TITLE"] = "SET_TITLE";
|
|
27
|
+
Actions2["START_LOADING"] = "START_LOADING";
|
|
28
|
+
Actions2["STOP_LOADING"] = "STOP_LOADING";
|
|
29
|
+
return Actions2;
|
|
30
|
+
})(Actions || {});
|
|
31
|
+
var BaseState = /* @__PURE__ */ ((BaseState2) => {
|
|
32
|
+
BaseState2["Idle"] = "idle";
|
|
33
|
+
BaseState2["Error"] = "error";
|
|
34
|
+
BaseState2["FetchingMessages"] = "fetchingMessages";
|
|
35
|
+
return BaseState2;
|
|
36
|
+
})(BaseState || {});
|
|
37
|
+
setup({
|
|
38
|
+
types: {
|
|
39
|
+
context: {}
|
|
40
|
+
},
|
|
41
|
+
actions: {
|
|
42
|
+
errorState: assign(({
|
|
43
|
+
context,
|
|
44
|
+
event
|
|
45
|
+
}) => {
|
|
46
|
+
var _a;
|
|
47
|
+
return __spreadProps(__spreadValues({}, context), {
|
|
48
|
+
error: ((_a = event.data) == null ? void 0 : _a.message) || "An error occurred",
|
|
49
|
+
loading: false
|
|
50
|
+
});
|
|
51
|
+
}),
|
|
52
|
+
setInitialContext: assign(({
|
|
53
|
+
context,
|
|
54
|
+
event
|
|
55
|
+
}) => {
|
|
56
|
+
var _a, _b;
|
|
57
|
+
return merge(__spreadProps(__spreadValues({}, context), {
|
|
58
|
+
channelId: ((_a = event.data) == null ? void 0 : _a.channelId) || null,
|
|
59
|
+
currentUser: ((_b = event.data) == null ? void 0 : _b.currentUser) || null,
|
|
60
|
+
loading: true
|
|
61
|
+
}));
|
|
62
|
+
}),
|
|
63
|
+
setMessages: assign(({
|
|
64
|
+
context,
|
|
65
|
+
event
|
|
66
|
+
}) => {
|
|
67
|
+
var _a;
|
|
68
|
+
return __spreadProps(__spreadValues({}, context), {
|
|
69
|
+
messages: ((_a = event.data) == null ? void 0 : _a.messages) || [],
|
|
70
|
+
loading: false
|
|
71
|
+
});
|
|
72
|
+
}),
|
|
73
|
+
updateMessages: assign(({
|
|
74
|
+
context,
|
|
75
|
+
event
|
|
76
|
+
}) => {
|
|
77
|
+
var _a;
|
|
78
|
+
const newMessage = (_a = event.data) == null ? void 0 : _a.message;
|
|
79
|
+
if (!newMessage)
|
|
80
|
+
return context;
|
|
81
|
+
return __spreadProps(__spreadValues({}, context), {
|
|
82
|
+
messages: [...context.messages, newMessage]
|
|
83
|
+
});
|
|
84
|
+
}),
|
|
85
|
+
setTitle: assign(({
|
|
86
|
+
context,
|
|
87
|
+
event
|
|
88
|
+
}) => {
|
|
89
|
+
var _a;
|
|
90
|
+
return __spreadProps(__spreadValues({}, context), {
|
|
91
|
+
title: ((_a = event.data) == null ? void 0 : _a.title) || ""
|
|
92
|
+
});
|
|
93
|
+
}),
|
|
94
|
+
startLoading: assign(({
|
|
95
|
+
context
|
|
96
|
+
}) => {
|
|
97
|
+
return __spreadProps(__spreadValues({}, context), {
|
|
98
|
+
loading: true
|
|
99
|
+
});
|
|
100
|
+
}),
|
|
101
|
+
stopLoading: assign(({
|
|
102
|
+
context
|
|
103
|
+
}) => {
|
|
104
|
+
return __spreadProps(__spreadValues({}, context), {
|
|
105
|
+
loading: false
|
|
106
|
+
});
|
|
107
|
+
})
|
|
108
|
+
}
|
|
109
|
+
}).createMachine({
|
|
110
|
+
id: "dialogs-list-item",
|
|
111
|
+
initial: "idle" /* Idle */,
|
|
112
|
+
context: {
|
|
113
|
+
channelId: null,
|
|
114
|
+
currentUser: null,
|
|
115
|
+
messages: [],
|
|
116
|
+
loading: false,
|
|
117
|
+
error: null,
|
|
118
|
+
title: "",
|
|
119
|
+
channelMembers: [],
|
|
120
|
+
lastMessage: null
|
|
121
|
+
},
|
|
122
|
+
states: {
|
|
123
|
+
["idle" /* Idle */]: {
|
|
124
|
+
on: {
|
|
125
|
+
["INITIAL_CONTEXT" /* INITIAL_CONTEXT */]: {
|
|
126
|
+
target: "fetchingMessages" /* FetchingMessages */,
|
|
127
|
+
actions: ["setInitialContext"]
|
|
128
|
+
},
|
|
129
|
+
["UPDATE_MESSAGES" /* UPDATE_MESSAGES */]: {
|
|
130
|
+
target: "idle" /* Idle */,
|
|
131
|
+
actions: ["updateMessages"]
|
|
132
|
+
},
|
|
133
|
+
["SET_TITLE" /* SET_TITLE */]: {
|
|
134
|
+
target: "idle" /* Idle */,
|
|
135
|
+
actions: ["setTitle"]
|
|
136
|
+
},
|
|
137
|
+
["START_LOADING" /* START_LOADING */]: {
|
|
138
|
+
target: "idle" /* Idle */,
|
|
139
|
+
actions: ["startLoading"]
|
|
140
|
+
},
|
|
141
|
+
["STOP_LOADING" /* STOP_LOADING */]: {
|
|
142
|
+
target: "idle" /* Idle */,
|
|
143
|
+
actions: ["stopLoading"]
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
},
|
|
147
|
+
["error" /* Error */]: {
|
|
148
|
+
entry: ["errorState"],
|
|
149
|
+
on: {
|
|
150
|
+
["ERROR_HANDLED" /* ERROR_HANDLED */]: {
|
|
151
|
+
target: "idle" /* Idle */
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
["fetchingMessages" /* FetchingMessages */]: {
|
|
156
|
+
invoke: {
|
|
157
|
+
src: "fetchMessages",
|
|
158
|
+
input: ({
|
|
159
|
+
context,
|
|
160
|
+
event
|
|
161
|
+
}) => ({
|
|
162
|
+
context,
|
|
163
|
+
event
|
|
164
|
+
}),
|
|
165
|
+
onDone: {
|
|
166
|
+
target: "idle" /* Idle */,
|
|
167
|
+
actions: ["setMessages"]
|
|
168
|
+
},
|
|
169
|
+
onError: {
|
|
170
|
+
target: "error" /* Error */
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
});export{Actions,BaseState};//# sourceMappingURL=dialogs-list-item-xstate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dialogs-list-item-xstate.js","sources":["../../../../../src/screens/inbox/components/workflow/dialogs-list-item-xstate.ts"],"sourcesContent":["import { assign, setup } from 'xstate';\nimport { merge } from 'lodash-es';\n\nexport const enum Actions {\n INITIAL_CONTEXT = 'INITIAL_CONTEXT',\n ERROR_HANDLED = 'ERROR_HANDLED',\n FETCH_MESSAGES = 'FETCH_MESSAGES',\n UPDATE_MESSAGES = 'UPDATE_MESSAGES',\n SUBSCRIBE_TO_MESSAGES = 'SUBSCRIBE_TO_MESSAGES',\n SET_TITLE = 'SET_TITLE',\n START_LOADING = 'START_LOADING',\n STOP_LOADING = 'STOP_LOADING',\n}\n\nexport const enum BaseState {\n Idle = 'idle',\n Error = 'error',\n FetchingMessages = 'fetchingMessages',\n}\n\nexport const dialogsListItemXstate = setup({\n types: {\n context: {} as {\n channelId: string | null;\n currentUser: any;\n messages: any[];\n loading: boolean;\n error: string | null;\n title: string;\n channelMembers: any[];\n lastMessage: any;\n },\n },\n actions: {\n errorState: assign(({ context, event }) => {\n return {\n ...context,\n error: event.data?.message || 'An error occurred',\n loading: false,\n };\n }),\n setInitialContext: assign(({ context, event }) => {\n return merge({\n ...context,\n channelId: event.data?.channelId || null,\n currentUser: event.data?.currentUser || null,\n loading: true,\n });\n }),\n setMessages: assign(({ context, event }) => {\n return {\n ...context,\n messages: event.data?.messages || [],\n loading: false,\n };\n }),\n updateMessages: assign(({ context, event }) => {\n const newMessage = event.data?.message;\n if (!newMessage) return context;\n\n return {\n ...context,\n messages: [...context.messages, newMessage],\n };\n }),\n setTitle: assign(({ context, event }) => {\n return {\n ...context,\n title: event.data?.title || '',\n };\n }),\n startLoading: assign(({ context }) => {\n return {\n ...context,\n loading: true,\n };\n }),\n stopLoading: assign(({ context }) => {\n return {\n ...context,\n loading: false,\n };\n }),\n },\n}).createMachine({\n id: 'dialogs-list-item',\n initial: BaseState.Idle,\n context: {\n channelId: null,\n currentUser: null,\n messages: [],\n loading: false,\n error: null,\n title: '',\n channelMembers: [],\n lastMessage: null,\n },\n states: {\n [BaseState.Idle]: {\n on: {\n [Actions.INITIAL_CONTEXT]: {\n target: BaseState.FetchingMessages,\n actions: ['setInitialContext'],\n },\n [Actions.UPDATE_MESSAGES]: {\n target: BaseState.Idle,\n actions: ['updateMessages'],\n },\n [Actions.SET_TITLE]: {\n target: BaseState.Idle,\n actions: ['setTitle'],\n },\n [Actions.START_LOADING]: {\n target: BaseState.Idle,\n actions: ['startLoading'],\n },\n [Actions.STOP_LOADING]: {\n target: BaseState.Idle,\n actions: ['stopLoading'],\n },\n },\n },\n [BaseState.Error]: {\n entry: ['errorState'],\n on: {\n [Actions.ERROR_HANDLED]: {\n target: BaseState.Idle,\n },\n },\n },\n [BaseState.FetchingMessages]: {\n invoke: {\n src: 'fetchMessages',\n input: ({ context, event }) => ({ context, event }),\n onDone: {\n target: BaseState.Idle,\n actions: ['setMessages'],\n },\n onError: {\n target: BaseState.Error,\n },\n },\n },\n },\n} as any);\n"],"names":["Actions","BaseState"],"mappings":"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"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import {setup,assign}from'xstate';import {merge}from'lodash-es';var __defProp = Object.defineProperty;
|
|
2
|
+
var __defProps = Object.defineProperties;
|
|
3
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
7
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
+
var __spreadValues = (a, b) => {
|
|
9
|
+
for (var prop in b || (b = {}))
|
|
10
|
+
if (__hasOwnProp.call(b, prop))
|
|
11
|
+
__defNormalProp(a, prop, b[prop]);
|
|
12
|
+
if (__getOwnPropSymbols)
|
|
13
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
14
|
+
if (__propIsEnum.call(b, prop))
|
|
15
|
+
__defNormalProp(a, prop, b[prop]);
|
|
16
|
+
}
|
|
17
|
+
return a;
|
|
18
|
+
};
|
|
19
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
|
+
var Actions = /* @__PURE__ */ ((Actions2) => {
|
|
21
|
+
Actions2["INITIAL_CONTEXT"] = "INITIAL_CONTEXT";
|
|
22
|
+
Actions2["ERROR_HANDLED"] = "ERROR_HANDLED";
|
|
23
|
+
Actions2["FETCH_THREAD_MESSAGES"] = "FETCH_THREAD_MESSAGES";
|
|
24
|
+
Actions2["UPDATE_THREAD_MESSAGES"] = "UPDATE_THREAD_MESSAGES";
|
|
25
|
+
Actions2["SUBSCRIBE_TO_THREAD_MESSAGES"] = "SUBSCRIBE_TO_THREAD_MESSAGES";
|
|
26
|
+
Actions2["SET_TITLE"] = "SET_TITLE";
|
|
27
|
+
Actions2["START_LOADING"] = "START_LOADING";
|
|
28
|
+
Actions2["STOP_LOADING"] = "STOP_LOADING";
|
|
29
|
+
Actions2["SET_SERVICE_POST_PARENT_ID"] = "SET_SERVICE_POST_PARENT_ID";
|
|
30
|
+
return Actions2;
|
|
31
|
+
})(Actions || {});
|
|
32
|
+
var BaseState = /* @__PURE__ */ ((BaseState2) => {
|
|
33
|
+
BaseState2["Idle"] = "idle";
|
|
34
|
+
BaseState2["Error"] = "error";
|
|
35
|
+
BaseState2["FetchingThreadMessages"] = "fetchingThreadMessages";
|
|
36
|
+
return BaseState2;
|
|
37
|
+
})(BaseState || {});
|
|
38
|
+
setup({
|
|
39
|
+
types: {
|
|
40
|
+
context: {}
|
|
41
|
+
},
|
|
42
|
+
actions: {
|
|
43
|
+
errorState: assign(({
|
|
44
|
+
context,
|
|
45
|
+
event
|
|
46
|
+
}) => {
|
|
47
|
+
var _a;
|
|
48
|
+
return __spreadProps(__spreadValues({}, context), {
|
|
49
|
+
error: ((_a = event.data) == null ? void 0 : _a.message) || "An error occurred",
|
|
50
|
+
loading: false
|
|
51
|
+
});
|
|
52
|
+
}),
|
|
53
|
+
setInitialContext: assign(({
|
|
54
|
+
context,
|
|
55
|
+
event
|
|
56
|
+
}) => {
|
|
57
|
+
var _a, _b, _c;
|
|
58
|
+
return merge(__spreadProps(__spreadValues({}, context), {
|
|
59
|
+
channelId: ((_a = event.data) == null ? void 0 : _a.channelId) || null,
|
|
60
|
+
currentUser: ((_b = event.data) == null ? void 0 : _b.currentUser) || null,
|
|
61
|
+
role: ((_c = event.data) == null ? void 0 : _c.role) || null,
|
|
62
|
+
loading: true
|
|
63
|
+
}));
|
|
64
|
+
}),
|
|
65
|
+
setThreadMessages: assign(({
|
|
66
|
+
context,
|
|
67
|
+
event
|
|
68
|
+
}) => {
|
|
69
|
+
var _a;
|
|
70
|
+
return __spreadProps(__spreadValues({}, context), {
|
|
71
|
+
threadMessages: ((_a = event.data) == null ? void 0 : _a.threadMessages) || [],
|
|
72
|
+
loading: false
|
|
73
|
+
});
|
|
74
|
+
}),
|
|
75
|
+
updateThreadMessages: assign(({
|
|
76
|
+
context,
|
|
77
|
+
event
|
|
78
|
+
}) => {
|
|
79
|
+
var _a;
|
|
80
|
+
const newThreadMessage = (_a = event.data) == null ? void 0 : _a.message;
|
|
81
|
+
if (!newThreadMessage)
|
|
82
|
+
return context;
|
|
83
|
+
return __spreadProps(__spreadValues({}, context), {
|
|
84
|
+
threadMessages: [...context.threadMessages, newThreadMessage]
|
|
85
|
+
});
|
|
86
|
+
}),
|
|
87
|
+
setTitle: assign(({
|
|
88
|
+
context,
|
|
89
|
+
event
|
|
90
|
+
}) => {
|
|
91
|
+
var _a;
|
|
92
|
+
return __spreadProps(__spreadValues({}, context), {
|
|
93
|
+
title: ((_a = event.data) == null ? void 0 : _a.title) || ""
|
|
94
|
+
});
|
|
95
|
+
}),
|
|
96
|
+
setServicePostParentId: assign(({
|
|
97
|
+
context,
|
|
98
|
+
event
|
|
99
|
+
}) => {
|
|
100
|
+
var _a;
|
|
101
|
+
return __spreadProps(__spreadValues({}, context), {
|
|
102
|
+
servicePostParentId: ((_a = event.data) == null ? void 0 : _a.servicePostParentId) || null
|
|
103
|
+
});
|
|
104
|
+
}),
|
|
105
|
+
startLoading: assign(({
|
|
106
|
+
context
|
|
107
|
+
}) => {
|
|
108
|
+
return __spreadProps(__spreadValues({}, context), {
|
|
109
|
+
loading: true
|
|
110
|
+
});
|
|
111
|
+
}),
|
|
112
|
+
stopLoading: assign(({
|
|
113
|
+
context
|
|
114
|
+
}) => {
|
|
115
|
+
return __spreadProps(__spreadValues({}, context), {
|
|
116
|
+
loading: false
|
|
117
|
+
});
|
|
118
|
+
})
|
|
119
|
+
}
|
|
120
|
+
}).createMachine({
|
|
121
|
+
id: "service-dialogs-list-item",
|
|
122
|
+
initial: "idle" /* Idle */,
|
|
123
|
+
context: {
|
|
124
|
+
channelId: null,
|
|
125
|
+
currentUser: null,
|
|
126
|
+
threadMessages: [],
|
|
127
|
+
loading: false,
|
|
128
|
+
error: null,
|
|
129
|
+
title: "",
|
|
130
|
+
role: "",
|
|
131
|
+
servicePostParentId: null,
|
|
132
|
+
lastMessage: null
|
|
133
|
+
},
|
|
134
|
+
states: {
|
|
135
|
+
["idle" /* Idle */]: {
|
|
136
|
+
on: {
|
|
137
|
+
["INITIAL_CONTEXT" /* INITIAL_CONTEXT */]: {
|
|
138
|
+
target: "fetchingThreadMessages" /* FetchingThreadMessages */,
|
|
139
|
+
actions: ["setInitialContext"]
|
|
140
|
+
},
|
|
141
|
+
["UPDATE_THREAD_MESSAGES" /* UPDATE_THREAD_MESSAGES */]: {
|
|
142
|
+
target: "idle" /* Idle */,
|
|
143
|
+
actions: ["updateThreadMessages"]
|
|
144
|
+
},
|
|
145
|
+
["SET_TITLE" /* SET_TITLE */]: {
|
|
146
|
+
target: "idle" /* Idle */,
|
|
147
|
+
actions: ["setTitle"]
|
|
148
|
+
},
|
|
149
|
+
["SET_SERVICE_POST_PARENT_ID" /* SET_SERVICE_POST_PARENT_ID */]: {
|
|
150
|
+
target: "idle" /* Idle */,
|
|
151
|
+
actions: ["setServicePostParentId"]
|
|
152
|
+
},
|
|
153
|
+
["START_LOADING" /* START_LOADING */]: {
|
|
154
|
+
target: "idle" /* Idle */,
|
|
155
|
+
actions: ["startLoading"]
|
|
156
|
+
},
|
|
157
|
+
["STOP_LOADING" /* STOP_LOADING */]: {
|
|
158
|
+
target: "idle" /* Idle */,
|
|
159
|
+
actions: ["stopLoading"]
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
},
|
|
163
|
+
["error" /* Error */]: {
|
|
164
|
+
entry: ["errorState"],
|
|
165
|
+
on: {
|
|
166
|
+
["ERROR_HANDLED" /* ERROR_HANDLED */]: {
|
|
167
|
+
target: "idle" /* Idle */
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
},
|
|
171
|
+
["fetchingThreadMessages" /* FetchingThreadMessages */]: {
|
|
172
|
+
invoke: {
|
|
173
|
+
src: "fetchThreadMessages",
|
|
174
|
+
input: ({
|
|
175
|
+
context,
|
|
176
|
+
event
|
|
177
|
+
}) => ({
|
|
178
|
+
context,
|
|
179
|
+
event
|
|
180
|
+
}),
|
|
181
|
+
onDone: {
|
|
182
|
+
target: "idle" /* Idle */,
|
|
183
|
+
actions: ["setThreadMessages"]
|
|
184
|
+
},
|
|
185
|
+
onError: {
|
|
186
|
+
target: "error" /* Error */
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
});export{Actions,BaseState};//# sourceMappingURL=service-dialogs-list-item-xstate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-dialogs-list-item-xstate.js","sources":["../../../../../src/screens/inbox/components/workflow/service-dialogs-list-item-xstate.ts"],"sourcesContent":["import { assign, setup } from 'xstate';\nimport { merge } from 'lodash-es';\n\nexport const enum Actions {\n INITIAL_CONTEXT = 'INITIAL_CONTEXT',\n ERROR_HANDLED = 'ERROR_HANDLED',\n FETCH_THREAD_MESSAGES = 'FETCH_THREAD_MESSAGES',\n UPDATE_THREAD_MESSAGES = 'UPDATE_THREAD_MESSAGES',\n SUBSCRIBE_TO_THREAD_MESSAGES = 'SUBSCRIBE_TO_THREAD_MESSAGES',\n SET_TITLE = 'SET_TITLE',\n START_LOADING = 'START_LOADING',\n STOP_LOADING = 'STOP_LOADING',\n SET_SERVICE_POST_PARENT_ID = 'SET_SERVICE_POST_PARENT_ID',\n}\n\nexport const enum BaseState {\n Idle = 'idle',\n Error = 'error',\n FetchingThreadMessages = 'fetchingThreadMessages',\n}\n\nexport const serviceDialogsListItemXstate = setup({\n types: {\n context: {} as {\n channelId: string | null;\n currentUser: any;\n threadMessages: any[];\n loading: boolean;\n error: string | null;\n title: string;\n role: string;\n servicePostParentId: string | null;\n lastMessage: any;\n },\n },\n actions: {\n errorState: assign(({ context, event }) => {\n return {\n ...context,\n error: event.data?.message || 'An error occurred',\n loading: false,\n };\n }),\n setInitialContext: assign(({ context, event }) => {\n return merge({\n ...context,\n channelId: event.data?.channelId || null,\n currentUser: event.data?.currentUser || null,\n role: event.data?.role || null,\n loading: true,\n });\n }),\n setThreadMessages: assign(({ context, event }) => {\n return {\n ...context,\n threadMessages: event.data?.threadMessages || [],\n loading: false,\n };\n }),\n updateThreadMessages: assign(({ context, event }) => {\n const newThreadMessage = event.data?.message;\n if (!newThreadMessage) return context;\n\n return {\n ...context,\n threadMessages: [...context.threadMessages, newThreadMessage],\n };\n }),\n setTitle: assign(({ context, event }) => {\n return {\n ...context,\n title: event.data?.title || '',\n };\n }),\n setServicePostParentId: assign(({ context, event }) => {\n return {\n ...context,\n servicePostParentId: event.data?.servicePostParentId || null,\n };\n }),\n startLoading: assign(({ context }) => {\n return {\n ...context,\n loading: true,\n };\n }),\n stopLoading: assign(({ context }) => {\n return {\n ...context,\n loading: false,\n };\n }),\n },\n}).createMachine({\n id: 'service-dialogs-list-item',\n initial: BaseState.Idle,\n context: {\n channelId: null,\n currentUser: null,\n threadMessages: [],\n loading: false,\n error: null,\n title: '',\n role: '',\n servicePostParentId: null,\n lastMessage: null,\n },\n states: {\n [BaseState.Idle]: {\n on: {\n [Actions.INITIAL_CONTEXT]: {\n target: BaseState.FetchingThreadMessages,\n actions: ['setInitialContext'],\n },\n [Actions.UPDATE_THREAD_MESSAGES]: {\n target: BaseState.Idle,\n actions: ['updateThreadMessages'],\n },\n [Actions.SET_TITLE]: {\n target: BaseState.Idle,\n actions: ['setTitle'],\n },\n [Actions.SET_SERVICE_POST_PARENT_ID]: {\n target: BaseState.Idle,\n actions: ['setServicePostParentId'],\n },\n [Actions.START_LOADING]: {\n target: BaseState.Idle,\n actions: ['startLoading'],\n },\n [Actions.STOP_LOADING]: {\n target: BaseState.Idle,\n actions: ['stopLoading'],\n },\n },\n },\n [BaseState.Error]: {\n entry: ['errorState'],\n on: {\n [Actions.ERROR_HANDLED]: {\n target: BaseState.Idle,\n },\n },\n },\n [BaseState.FetchingThreadMessages]: {\n invoke: {\n src: 'fetchThreadMessages',\n input: ({ context, event }) => ({ context, event }),\n onDone: {\n target: BaseState.Idle,\n actions: ['setThreadMessages'],\n },\n onError: {\n target: BaseState.Error,\n },\n },\n },\n },\n} as any);\n"],"names":["Actions","BaseState"],"mappings":"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"}
|