@messenger-box/platform-mobile 10.0.3-alpha.7 → 10.0.3-alpha.72

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/CHANGELOG.md +116 -0
  2. package/lib/compute.js +2 -3
  3. package/lib/compute.js.map +1 -1
  4. package/lib/index.js.map +1 -1
  5. package/lib/queries/inboxQueries.js +65 -0
  6. package/lib/queries/inboxQueries.js.map +1 -0
  7. package/lib/routes.json +2 -3
  8. package/lib/screens/inbox/DialogMessages.js +1 -1
  9. package/lib/screens/inbox/DialogMessages.js.map +1 -1
  10. package/lib/screens/inbox/DialogThreadMessages.js +4 -8
  11. package/lib/screens/inbox/DialogThreadMessages.js.map +1 -1
  12. package/lib/screens/inbox/DialogThreads.js +57 -12
  13. package/lib/screens/inbox/DialogThreads.js.map +1 -1
  14. package/lib/screens/inbox/Inbox.js +1 -1
  15. package/lib/screens/inbox/Inbox.js.map +1 -1
  16. package/lib/screens/inbox/components/CachedImage/consts.js +1 -1
  17. package/lib/screens/inbox/components/CachedImage/consts.js.map +1 -1
  18. package/lib/screens/inbox/components/CachedImage/index.js +168 -46
  19. package/lib/screens/inbox/components/CachedImage/index.js.map +1 -1
  20. package/lib/screens/inbox/components/DialogItem.js +169 -0
  21. package/lib/screens/inbox/components/DialogItem.js.map +1 -0
  22. package/lib/screens/inbox/components/GiftedChatInboxComponent.js +313 -0
  23. package/lib/screens/inbox/components/GiftedChatInboxComponent.js.map +1 -0
  24. package/lib/screens/inbox/components/SlackMessageContainer/SlackBubble.js +147 -31
  25. package/lib/screens/inbox/components/SlackMessageContainer/SlackBubble.js.map +1 -1
  26. package/lib/screens/inbox/components/SlackMessageContainer/SlackMessage.js +6 -1
  27. package/lib/screens/inbox/components/SlackMessageContainer/SlackMessage.js.map +1 -1
  28. package/lib/screens/inbox/components/SubscriptionHandler.js +24 -0
  29. package/lib/screens/inbox/components/SubscriptionHandler.js.map +1 -0
  30. package/lib/screens/inbox/components/ThreadsViewItem.js +66 -55
  31. package/lib/screens/inbox/components/ThreadsViewItem.js.map +1 -1
  32. package/lib/screens/inbox/config/config.js +2 -2
  33. package/lib/screens/inbox/config/config.js.map +1 -1
  34. package/lib/screens/inbox/containers/ConversationView.js +1111 -434
  35. package/lib/screens/inbox/containers/ConversationView.js.map +1 -1
  36. package/lib/screens/inbox/containers/Dialogs.js +193 -80
  37. package/lib/screens/inbox/containers/Dialogs.js.map +1 -1
  38. package/lib/screens/inbox/containers/ThreadConversationView.js +725 -216
  39. package/lib/screens/inbox/containers/ThreadConversationView.js.map +1 -1
  40. package/lib/screens/inbox/containers/ThreadsView.js +83 -50
  41. package/lib/screens/inbox/containers/ThreadsView.js.map +1 -1
  42. package/lib/screens/inbox/hooks/useInboxMessages.js +31 -0
  43. package/lib/screens/inbox/hooks/useInboxMessages.js.map +1 -0
  44. package/lib/screens/inbox/hooks/useSafeDialogThreadsMachine.js +108 -0
  45. package/lib/screens/inbox/hooks/useSafeDialogThreadsMachine.js.map +1 -0
  46. package/lib/screens/inbox/workflow/dialog-threads-xstate.js +151 -0
  47. package/lib/screens/inbox/workflow/dialog-threads-xstate.js.map +1 -0
  48. package/package.json +4 -4
  49. package/src/compute.ts +5 -6
  50. package/src/index.ts +2 -0
  51. package/src/navigation/InboxNavigation.tsx +3 -3
  52. package/src/queries/inboxQueries.ts +299 -0
  53. package/src/queries/index.d.ts +2 -0
  54. package/src/queries/index.ts +1 -0
  55. package/src/screens/inbox/DialogMessages.tsx +1 -1
  56. package/src/screens/inbox/DialogThreadMessages.tsx +7 -14
  57. package/src/screens/inbox/DialogThreads.tsx +55 -61
  58. package/src/screens/inbox/Inbox.tsx +1 -1
  59. package/src/screens/inbox/components/Actionsheet.tsx +30 -0
  60. package/src/screens/inbox/components/CachedImage/consts.ts +4 -3
  61. package/src/screens/inbox/components/CachedImage/index.tsx +232 -61
  62. package/src/screens/inbox/components/DialogItem.tsx +306 -0
  63. package/src/screens/inbox/components/DialogsHeader.tsx +6 -13
  64. package/src/screens/inbox/components/DialogsListItem.tsx +262 -198
  65. package/src/screens/inbox/components/ExpandableInput.tsx +460 -0
  66. package/src/screens/inbox/components/ExpandableInputActionSheet.tsx +518 -0
  67. package/src/screens/inbox/components/GiftedChatInboxComponent.tsx +411 -0
  68. package/src/screens/inbox/components/ServiceDialogsListItem.tsx +337 -194
  69. package/src/screens/inbox/components/SlackInput.tsx +23 -0
  70. package/src/screens/inbox/components/SlackMessageContainer/SlackBubble.tsx +233 -23
  71. package/src/screens/inbox/components/SlackMessageContainer/SlackMessage.tsx +1 -1
  72. package/src/screens/inbox/components/SmartLoader.tsx +61 -0
  73. package/src/screens/inbox/components/SubscriptionHandler.tsx +41 -0
  74. package/src/screens/inbox/components/SupportServiceDialogsListItem.tsx +53 -55
  75. package/src/screens/inbox/components/ThreadsViewItem.tsx +178 -285
  76. package/src/screens/inbox/components/workflow/dialogs-list-item-xstate.ts +145 -0
  77. package/src/screens/inbox/components/workflow/service-dialogs-list-item-xstate.ts +159 -0
  78. package/src/screens/inbox/config/config.ts +2 -2
  79. package/src/screens/inbox/containers/ConversationView.tsx +1843 -702
  80. package/src/screens/inbox/containers/ConversationView.tsx.bk +1467 -0
  81. package/src/screens/inbox/containers/Dialogs.tsx +402 -204
  82. package/src/screens/inbox/containers/SupportServiceDialogs.tsx +4 -4
  83. package/src/screens/inbox/containers/ThreadConversationView.tsx +1350 -319
  84. package/src/screens/inbox/containers/ThreadsView.tsx +105 -193
  85. package/src/screens/inbox/containers/workflow/apollo/handleResult.ts +20 -0
  86. package/src/screens/inbox/containers/workflow/conversation-xstate.ts +313 -0
  87. package/src/screens/inbox/containers/workflow/dialogs-xstate.ts +196 -0
  88. package/src/screens/inbox/containers/workflow/thread-conversation-xstate.ts +401 -0
  89. package/src/screens/inbox/hooks/useInboxMessages.ts +34 -0
  90. package/src/screens/inbox/hooks/useSafeDialogThreadsMachine.ts +136 -0
  91. package/src/screens/inbox/index.ts +37 -0
  92. package/src/screens/inbox/machines/threadsMachine.ts +147 -0
  93. package/src/screens/inbox/workflow/dialog-threads-xstate.ts +163 -0
  94. package/tsconfig.json +11 -54
  95. package/lib/screens/inbox/components/DialogsListItem.js +0 -171
  96. package/lib/screens/inbox/components/DialogsListItem.js.map +0 -1
  97. package/lib/screens/inbox/components/ServiceDialogsListItem.js +0 -171
  98. package/lib/screens/inbox/components/ServiceDialogsListItem.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import React__default,{useState,useCallback,useEffect}from'react';import {Box,FlatList,Center,Text}from'@admin-layout/gluestack-ui-mobile';import {Ionicons}from'@expo/vector-icons';import {useSelector,useDispatch}from'react-redux';import {useRoute,useNavigation,useIsFocused,useFocusEffect}from'@react-navigation/native';import {uniqBy,orderBy}from'lodash-es';import {OnThreadCreatedUpdatedDocument}from'common/lib/generated/generated.js';import {userSelector}from'@adminide-stack/user-auth0-client';import {ThreadViewItem}from'../components/ThreadsViewItem.js';import {config}from'../config/config.js';var __defProp = Object.defineProperty;
1
+ import React__default,{useState,useCallback,useEffect}from'react';import {Box,Text,Button,Center,Spinner,FlatList}from'@admin-layout/gluestack-ui-mobile';import {useSelector,useDispatch}from'react-redux';import {useRoute,useNavigation,useIsFocused,useFocusEffect}from'@react-navigation/native';import {uniqBy,orderBy}from'lodash-es';import {useThreadCreatedUpdatedSubscription,THREAD_CREATED_UPDATED}from'../../../queries/inboxQueries.js';import {userSelector}from'@adminide-stack/user-auth0-client';import {ThreadViewItem}from'../components/ThreadsViewItem.js';import {config}from'../config/config.js';var __defProp = Object.defineProperty;
2
2
  var __defProps = Object.defineProperties;
3
3
  var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
4
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
@@ -34,12 +34,49 @@ const ThreadsViewComponent = ({
34
34
  const {
35
35
  params
36
36
  } = useRoute();
37
- const auth = useSelector(userSelector);
37
+ useSelector(userSelector);
38
38
  useDispatch();
39
39
  const navigation = useNavigation();
40
40
  useIsFocused();
41
41
  const [refreshing, setRefresh] = useState(false);
42
- const [threadData, setThreadsData] = useState([]);
42
+ const {
43
+ data: threadCreatedUpdated
44
+ } = useThreadCreatedUpdatedSubscription({
45
+ variables: {
46
+ channelId: channelId == null ? void 0 : channelId.toString()
47
+ }
48
+ });
49
+ const subscribeToNewMessages = useCallback(() => {
50
+ return subscribeToMore({
51
+ document: THREAD_CREATED_UPDATED,
52
+ variables: {
53
+ channelId: channelId == null ? void 0 : channelId.toString()
54
+ },
55
+ updateQuery: (prev, {
56
+ subscriptionData
57
+ }) => {
58
+ if (!subscriptionData.data)
59
+ return prev;
60
+ const newThread = subscriptionData.data.threadCreatedUpdated.data;
61
+ if (!newThread)
62
+ return prev;
63
+ const threads2 = prev.threadMessages.data || [];
64
+ const index = threads2.findIndex((t) => t.id === newThread.id);
65
+ let updatedThreads;
66
+ if (index > -1) {
67
+ updatedThreads = [...threads2];
68
+ updatedThreads[index] = newThread;
69
+ } else {
70
+ updatedThreads = [newThread, ...threads2];
71
+ }
72
+ return __spreadProps(__spreadValues({}, prev), {
73
+ threadMessages: __spreadProps(__spreadValues({}, prev.threadMessages), {
74
+ data: uniqBy(updatedThreads, "id")
75
+ })
76
+ });
77
+ }
78
+ });
79
+ }, [channelId, subscribeToMore]);
43
80
  useFocusEffect(React__default.useCallback(() => {
44
81
  var _a;
45
82
  navigation == null ? void 0 : navigation.setOptions({
@@ -51,19 +88,16 @@ const ThreadsViewComponent = ({
51
88
  limit: MESSAGES_PER_PAGE,
52
89
  repliesLimit2: 5
53
90
  });
91
+ const unsubscribe = subscribeToNewMessages();
54
92
  return () => {
93
+ if (unsubscribe)
94
+ unsubscribe();
55
95
  };
56
96
  }, []));
57
- const setData = React__default.useCallback((newThreads) => {
58
- setThreadsData((oldThreads) => {
59
- const i = oldThreads.findIndex((el) => el.id === (newThreads == null ? void 0 : newThreads.id));
60
- if (i > -1)
61
- oldThreads[i] = newThreads;
62
- else
63
- oldThreads.push(newThreads);
64
- return oldThreads;
65
- });
66
- }, []);
97
+ React__default.useEffect(() => {
98
+ var _a;
99
+ if ((_a = threadCreatedUpdated == null ? void 0 : threadCreatedUpdated.threadCreatedUpdated) == null ? void 0 : _a.data) ;
100
+ }, [threadCreatedUpdated]);
67
101
  const threads = React__default.useMemo(() => {
68
102
  var _a, _b, _c, _d;
69
103
  if (((_b = (_a = data == null ? void 0 : data.threadMessages) == null ? void 0 : _a.data) == null ? void 0 : _b.length) == 0)
@@ -89,61 +123,60 @@ const ThreadsViewComponent = ({
89
123
  });
90
124
  }, []);
91
125
  const handleRefresh = useCallback(() => {
126
+ setRefresh(true);
92
127
  refetch({
93
128
  channelId: channelId == null ? void 0 : channelId.toString(),
94
129
  role: role == null ? void 0 : role.toString(),
95
130
  limit: MESSAGES_PER_PAGE,
96
131
  repliesLimit2: 5
132
+ }).finally(() => {
133
+ setRefresh(false);
97
134
  });
98
135
  }, []);
99
136
  const fetchMoreThreads = useCallback(() => {
100
137
  refetch({
101
138
  channelId: channelId == null ? void 0 : channelId.toString(),
102
139
  role: role == null ? void 0 : role.toString(),
103
- skip: threads == null ? void 0 : threads.length
140
+ limit: MESSAGES_PER_PAGE,
141
+ repliesLimit2: 5
104
142
  });
105
143
  }, []);
106
- console.log("threadLoading", threadLoading, " threads?.length=", threads == null ? void 0 : threads.length);
107
- return /* @__PURE__ */ React__default.createElement(Box, { flex: 1, p: "$2", pb: "$0", "$dark-borderColor": "$coolGray600", "$dark-backgroundColor": "$trueGray700", "$light-backgroundColor": "$trueGray50" }, /* @__PURE__ */ React__default.createElement(FlatList, { style: {
144
+ if (error) {
145
+ return /* @__PURE__ */ React__default.createElement(Box, { style: {
146
+ flex: 1,
147
+ justifyContent: "center",
148
+ alignItems: "center"
149
+ } }, /* @__PURE__ */ React__default.createElement(Text, null, "Error loading threads. ", error.message), /* @__PURE__ */ React__default.createElement(Button, { onPress: handleRefresh, style: {
150
+ marginTop: 4
151
+ } }, /* @__PURE__ */ React__default.createElement(Text, null, "Try Again")));
152
+ }
153
+ return /* @__PURE__ */ React__default.createElement(Box, { style: {
108
154
  flex: 1
109
- }, data: threads && (threads == null ? void 0 : threads.length) > 0 ? threads : [], onRefresh: handleRefresh, refreshing: threadLoading, contentContainerStyle: {
110
- paddingBottom: 60
111
- }, ItemSeparatorComponent: () => /* @__PURE__ */ React__default.createElement(Box, { height: "$0.5", backgroundColor: "$gray200" }), renderItem: ({
112
- item: thread,
113
- index
114
- }) => /* @__PURE__ */ React__default.createElement(ThreadViewItem, { key: index, onOpen: handleSelectThread, currentUser: auth, thread, role, setData }), ListEmptyComponent: () => /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, !threadLoading && (threads == null ? void 0 : threads.length) == 0 && /* @__PURE__ */ React__default.createElement(Box, { p: "$5" }, /* @__PURE__ */ React__default.createElement(Center, { mt: "$6" }, /* @__PURE__ */ React__default.createElement(Ionicons, { name: "chatbubbles", size: 50 }), /* @__PURE__ */ React__default.createElement(Text, null, "You don't have any message yet!")))), ListFooterComponent: () => /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(SubscriptionHandler, { channelId, subscribeToNewMessages: () => subscribeToMore({
115
- document: OnThreadCreatedUpdatedDocument,
116
- variables: {
117
- channelId: channelId == null ? void 0 : channelId.toString(),
118
- postParentId: null
119
- },
120
- updateQuery: (prev, {
121
- subscriptionData
122
- }) => {
123
- var _a, _b, _c, _d, _e, _f;
124
- if (!subscriptionData.data)
125
- return prev;
126
- const newPostThreadData = (_b = (_a = subscriptionData == null ? void 0 : subscriptionData.data) == null ? void 0 : _a.threadCreatedUpdated) == null ? void 0 : _b.data;
127
- const newMessage = (_d = (_c = subscriptionData == null ? void 0 : subscriptionData.data) == null ? void 0 : _c.threadCreatedUpdated) == null ? void 0 : _d.lastMessage;
128
- const data2 = (_f = (_e = prev == null ? void 0 : prev.threadMessages) == null ? void 0 : _e.data) == null ? void 0 : _f.map((t) => t.id === (newPostThreadData == null ? void 0 : newPostThreadData.id) ? __spreadProps(__spreadValues({}, t), {
129
- replies: [newMessage, ...t == null ? void 0 : t.replies],
130
- replyCount: newPostThreadData == null ? void 0 : newPostThreadData.replyCount,
131
- lastReplyAt: newPostThreadData == null ? void 0 : newPostThreadData.lastReplyAt,
132
- updatedAt: newPostThreadData == null ? void 0 : newPostThreadData.updatedAt
133
- }) : t);
134
- return Object.assign({}, prev, {
135
- threadMessages: __spreadProps(__spreadValues({}, prev == null ? void 0 : prev.threadMessages), {
136
- data: data2
137
- })
138
- });
139
- }
140
- }) })), keyExtractor: (item, index) => "threads-view-key" + index, onEndReached: fetchMoreThreads, onEndReachedThreshold: 0.1 }));
155
+ } }, threadLoading && !(threads == null ? void 0 : threads.length) ? /* @__PURE__ */ React__default.createElement(Center, { style: {
156
+ flex: 1
157
+ } }, /* @__PURE__ */ React__default.createElement(Spinner, { size: "large" })) : (threads == null ? void 0 : threads.length) === 0 ? /* @__PURE__ */ React__default.createElement(Box, { style: {
158
+ flex: 1,
159
+ justifyContent: "center",
160
+ alignItems: "center"
161
+ } }, /* @__PURE__ */ React__default.createElement(Text, null, "No threads found")) : /* @__PURE__ */ React__default.createElement(FlatList, { data: threads, keyExtractor: (item) => item.id.toString(), renderItem: ({
162
+ item
163
+ }) => /* @__PURE__ */ React__default.createElement(ThreadViewItem, __spreadProps(__spreadValues({}, item), { onPress: handleSelectThread, channelId, channelsDetail })), refreshing, onRefresh: handleRefresh, onEndReached: fetchMoreThreads, onEndReachedThreshold: 0.5, contentContainerStyle: {
164
+ padding: 16
165
+ }, ItemSeparatorComponent: () => /* @__PURE__ */ React__default.createElement(Box, { style: {
166
+ height: 3
167
+ } }) }), /* @__PURE__ */ React__default.createElement(SubscriptionHandler, { subscribeToNewMessages, channelId }));
141
168
  };
142
169
  const SubscriptionHandler = ({
143
170
  subscribeToNewMessages,
144
171
  channelId
145
172
  }) => {
146
- useEffect(() => subscribeToNewMessages(), [channelId]);
147
- return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null);
173
+ useEffect(() => {
174
+ const unsubscribe = subscribeToNewMessages();
175
+ return () => {
176
+ if (unsubscribe)
177
+ unsubscribe();
178
+ };
179
+ }, [channelId]);
180
+ return null;
148
181
  };
149
182
  const ThreadsView = ThreadsViewComponent;export{ThreadsView};//# sourceMappingURL=ThreadsView.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadsView.js","sources":["../../../../src/screens/inbox/containers/ThreadsView.tsx"],"sourcesContent":["import React, { useCallback, useMemo, useEffect, useState } from 'react';\nimport { FlatList, Box, Heading, Input, Text, Icon, Center, Spinner, Button } from '@admin-layout/gluestack-ui-mobile';\nimport { Ionicons } from '@expo/vector-icons';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useNavigation, useRoute, useIsFocused, useFocusEffect } from '@react-navigation/native';\nimport { orderBy, uniqBy, startCase } from 'lodash-es';\nimport {\n useThreadMessagesQuery,\n OnThreadCreatedUpdatedDocument as THREAD_CHAT_ADDED,\n useOnThreadCreatedUpdatedSubscription,\n} from 'common/lib/generated/generated.js';\nimport { userSelector } from '@adminide-stack/user-auth0-client';\nimport { CHANGE_SETTINGS_ACTION } from '@admin-layout/client';\nimport { ThreadViewItem } from '../components/ThreadsViewItem';\nimport { config } from '../config';\nconst { MESSAGES_PER_PAGE } = config;\n\nexport interface ThreadsViewProps {\n data: any;\n loading: boolean;\n refetch: any;\n subscribeToMore: any;\n error: any;\n channelId?: string;\n role?: string;\n channelsDetail?: any;\n refetchChannelDetail: (id: any) => Promise<any>;\n}\n\ninterface IThreadSubscriptionHandlerProps {\n subscribeToNewMessages: () => any;\n channelId: string | undefined;\n}\n\nconst ThreadsViewComponent = ({\n data,\n loading: threadLoading,\n refetch,\n subscribeToMore,\n error,\n channelId,\n role,\n channelsDetail,\n refetchChannelDetail,\n}: ThreadsViewProps) => {\n const { params } = useRoute<any>();\n const auth = useSelector(userSelector);\n const dispatch = useDispatch();\n const navigation = useNavigation<any>();\n const isFocused = useIsFocused();\n const [refreshing, setRefresh] = useState<boolean>(false);\n const [threadData, setThreadsData] = useState<any>([]);\n\n // const {\n // data,\n // loading: threadLoading,\n // error,\n // refetch,\n // subscribeToMore,\n // } = useThreadMessagesQuery({\n // variables: {\n // channelId: channelId?.toString(),\n // role: role?.toString(),\n // limit: MESSAGES_PER_PAGE,\n // repliesLimit2: 5,\n // },\n // // fetchPolicy: 'cache-and-network',\n // });\n\n // const { data: threadCreatedUpdated } = useOnThreadCreatedUpdatedSubscription({\n // variables: { channelId: channelId?.toString() },\n // });\n\n useFocusEffect(\n React.useCallback(() => {\n // Do something when the screen is focused\n navigation?.setOptions({ title: params?.title ?? 'Thread' });\n refetch({\n channelId: channelId?.toString(),\n role: role?.toString(),\n limit: MESSAGES_PER_PAGE,\n repliesLimit2: 5,\n });\n // .then(({ data }) => {\n // if (!data?.threadMessages?.data) {\n // return;\n // }\n\n // if (data?.threadMessages?.data?.length) {\n // const { data: newThreads } = data?.threadMessages;\n // setThreadsData((oldThreads: any) => uniqBy([...oldThreads, ...newThreads], ({ id }) => id));\n // }\n // });\n\n return () => {\n // Do something when the screen is unfocused\n // Useful for cleanup functions\n };\n }, []),\n );\n\n // React.useEffect(() => {\n // if (data?.threadMessages?.data?.length) {\n // const { data: newThreads } = data?.threadMessages;\n // setThreadsData((oldThreads: any) => uniqBy([...oldThreads, ...newThreads], ({ id }) => id));\n // }\n // }, [data]);\n\n // React.useEffect(() => {\n // if (threadCreatedUpdated?.threadCreatedUpdated?.data) {\n // const { data: newThreads } = threadCreatedUpdated?.threadCreatedUpdated;\n\n // setThreadsData((oldThreads: any) => {\n // const i = oldThreads.findIndex((el: any) => el.id === newThreads?.id);\n // if (i > -1) oldThreads[i] = newThreads; // (2)\n // else oldThreads.push(newThreads);\n // return oldThreads;\n // });\n // // setThreadsData((oldThreads: any) => uniqBy([...oldThreads, newThreads], ({ id }) => id));\n // }\n // }, [threadCreatedUpdated]);\n\n const setData = React.useCallback((newThreads: any) => {\n setThreadsData((oldThreads: any) => {\n const i = oldThreads.findIndex((el: any) => el.id === newThreads?.id);\n if (i > -1) oldThreads[i] = newThreads; // (2)\n else oldThreads.push(newThreads);\n return oldThreads;\n });\n // setThreadsData((oldThreads: any) => uniqBy([...oldThreads, newThreads], ({ id }) => id));\n }, []);\n\n // const threads = React.useMemo(() => {\n // if (!threadData?.length) return null;\n // return orderBy(threadData, ['updatedAt'], ['desc']) || [];\n // //return threadData || [];\n // }, [threadData]);\n\n const threads = React.useMemo(() => {\n // if (!data?.threadMessages?.data?.length) return null;\n // const { data: newThreads } = data?.threadMessages;\n if (data?.threadMessages?.data?.length == 0) return [];\n const threadsFiltered = data?.threadMessages?.data\n ? uniqBy([...data?.threadMessages?.data], ({ id }: any) => id)\n : [];\n return orderBy(threadsFiltered, ['updatedAt'], ['desc']) || [];\n }, [data]);\n\n const threadReplies = React.useMemo(() => {\n if (!threads?.length) return null;\n return threads?.map((t: any) => t?.replies)?.flat(1) || [];\n //return threadData || [];\n }, [threads]);\n\n const handleSelectThread = useCallback((id: any, title: any, postParentId: any) => {\n navigation.navigate(config.THREAD_MESSEGE_PATH as any, {\n channelId: id,\n role: role?.toString(),\n title: title,\n postParentId: postParentId,\n hideTabBar: true,\n });\n // if (params?.channelId) {\n // navigation.navigate(config.THREAD_MESSEGE_PATH as any, {\n // channelId: params?.channelId,\n // title: params?.title ?? null,\n // postParentId: postParentId,\n // hideTabBar: true,\n // });\n // } else {\n // navigation.navigate(config.THREAD_MESSEGE_PATH as any, {\n // channelId: id,\n // title: title,\n // postParentId: postParentId,\n // hideTabBar: true,\n // });\n // }\n }, []);\n\n const handleRefresh = useCallback(() => {\n refetch({\n channelId: channelId?.toString(),\n role: role?.toString(),\n limit: MESSAGES_PER_PAGE,\n repliesLimit2: 5,\n });\n // .then(({ data }) => {\n // if (!data?.threadMessages?.data) {\n // return;\n // }\n\n // if (data?.threadMessages?.data?.length) {\n // const { data: newThreads } = data?.threadMessages;\n // setThreadsData((oldThreads: any) => uniqBy([...oldThreads, ...newThreads], ({ id }) => id));\n // }\n // });\n }, []);\n\n const fetchMoreThreads = useCallback(() => {\n refetch({\n channelId: channelId?.toString(),\n role: role?.toString(),\n skip: threads?.length,\n });\n }, []);\n\n // if (!threadReplies || threadReplies?.length == 0) {\n // return (\n // <Center w=\"full\" bg={'f8f8f8'} height={'full'}>\n // You don't have any message yet!\n // </Center>\n // );\n // }\n console.log('threadLoading', threadLoading, ' threads?.length=', threads?.length);\n\n return (\n <Box\n flex={1}\n p={'$2'}\n pb={'$0'}\n $dark-borderColor=\"$coolGray600\"\n $dark-backgroundColor=\"$trueGray700\"\n $light-backgroundColor=\"$trueGray50\"\n >\n <FlatList\n style={{ flex: 1 }}\n data={threads && threads?.length > 0 ? threads : []}\n onRefresh={handleRefresh}\n refreshing={threadLoading}\n contentContainerStyle={{ paddingBottom: 60 }}\n ItemSeparatorComponent={() => <Box height=\"$0.5\" backgroundColor=\"$gray200\" />}\n renderItem={({ item: thread, index }) => (\n <ThreadViewItem\n key={index}\n onOpen={handleSelectThread}\n currentUser={auth}\n thread={thread}\n role={role}\n setData={setData}\n />\n )}\n ListEmptyComponent={() => (\n <>\n {/* {!threadLoading || threads?.length == 0} */}\n {!threadLoading && threads?.length == 0 && (\n <Box p={'$5'}>\n <Center mt={'$6'}>\n <Ionicons name=\"chatbubbles\" size={50} />\n <Text>You don't have any message yet!</Text>\n </Center>\n </Box>\n )}\n </>\n )}\n ListFooterComponent={() => (\n <>\n <SubscriptionHandler\n channelId={channelId}\n subscribeToNewMessages={() =>\n subscribeToMore({\n document: THREAD_CHAT_ADDED,\n variables: {\n channelId: channelId?.toString(),\n postParentId: null,\n },\n updateQuery: (prev, { subscriptionData }: any) => {\n if (!subscriptionData.data) return prev;\n const newPostThreadData: any =\n subscriptionData?.data?.threadCreatedUpdated?.data;\n const newMessage: any =\n subscriptionData?.data?.threadCreatedUpdated?.lastMessage;\n const data = prev?.threadMessages?.data?.map((t: any) =>\n t.id === newPostThreadData?.id\n ? {\n ...t,\n replies: [newMessage, ...t?.replies],\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: prev?.threadMessages?.totalCount + 1,\n data: data,\n },\n });\n },\n })\n }\n />\n </>\n )}\n keyExtractor={(item, index) => 'threads-view-key' + index}\n onEndReached={fetchMoreThreads}\n onEndReachedThreshold={0.1}\n />\n </Box>\n );\n};\n\nconst SubscriptionHandler = ({ subscribeToNewMessages, channelId }: IThreadSubscriptionHandlerProps) => {\n useEffect(() => subscribeToNewMessages(), [channelId]);\n return <></>;\n};\n\nexport const ThreadsView = ThreadsViewComponent;\n\n// export const ThreadsView = React.memo(ThreadsViewComponent);\n"],"names":["React","THREAD_CHAT_ADDED","data"],"mappings":"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"}
1
+ {"version":3,"file":"ThreadsView.js","sources":["../../../../src/screens/inbox/containers/ThreadsView.tsx"],"sourcesContent":["import React, { useCallback, useMemo, useEffect, useState } from 'react';\nimport { FlatList, Box, Heading, Input, Text, Icon, Center, Spinner, Button } from '@admin-layout/gluestack-ui-mobile';\nimport { Ionicons } from '@expo/vector-icons';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useNavigation, useRoute, useIsFocused, useFocusEffect } from '@react-navigation/native';\nimport { orderBy, uniqBy, startCase } from 'lodash-es';\nimport {\n useThreadMessagesQuery,\n THREAD_CREATED_UPDATED,\n useThreadCreatedUpdatedSubscription,\n} from '../../../queries/inboxQueries';\nimport { userSelector } from '@adminide-stack/user-auth0-client';\nimport { CHANGE_SETTINGS_ACTION } from '@admin-layout/client';\nimport { ThreadViewItem } from '../components/ThreadsViewItem';\nimport { config } from '../config';\nimport { Actions } from '../workflow/dialog-threads-xstate';\nconst { MESSAGES_PER_PAGE } = config;\n\nexport interface ThreadsViewProps {\n data: any;\n loading: boolean;\n refetch: any;\n subscribeToMore: any;\n error: any;\n channelId?: string;\n role?: string;\n channelsDetail?: any;\n refetchChannelDetail: (id: any) => Promise<any>;\n}\n\ninterface IThreadSubscriptionHandlerProps {\n subscribeToNewMessages: () => any;\n channelId: string | undefined;\n}\n\nconst ThreadsViewComponent = ({\n data,\n loading: threadLoading,\n refetch,\n subscribeToMore,\n error,\n channelId,\n role,\n channelsDetail,\n refetchChannelDetail,\n}: ThreadsViewProps) => {\n const { params } = useRoute<any>();\n const auth = useSelector(userSelector);\n const dispatch = useDispatch();\n const navigation = useNavigation<any>();\n const isFocused = useIsFocused();\n const [refreshing, setRefresh] = useState<boolean>(false);\n\n // Use thread subscription for real-time updates\n const { data: threadCreatedUpdated } = useThreadCreatedUpdatedSubscription({\n variables: { channelId: channelId?.toString() },\n });\n\n // Subscribe to thread updates\n const subscribeToNewMessages = useCallback(() => {\n return subscribeToMore({\n document: THREAD_CREATED_UPDATED,\n variables: { channelId: channelId?.toString() },\n updateQuery: (prev: any, { subscriptionData }: any) => {\n if (!subscriptionData.data) return prev;\n\n const newThread = subscriptionData.data.threadCreatedUpdated.data;\n if (!newThread) return prev;\n\n const threads = prev.threadMessages.data || [];\n const index = threads.findIndex((t: any) => t.id === newThread.id);\n\n let updatedThreads;\n if (index > -1) {\n // Update existing thread\n updatedThreads = [...threads];\n updatedThreads[index] = newThread;\n } else {\n // Add new thread\n updatedThreads = [newThread, ...threads];\n }\n\n return {\n ...prev,\n threadMessages: {\n ...prev.threadMessages,\n data: uniqBy(updatedThreads, 'id'),\n },\n };\n },\n });\n }, [channelId, subscribeToMore]);\n\n useFocusEffect(\n React.useCallback(() => {\n // Do something when the screen is focused\n navigation?.setOptions({ title: params?.title ?? 'Thread' });\n refetch({\n channelId: channelId?.toString(),\n role: role?.toString(),\n limit: MESSAGES_PER_PAGE,\n repliesLimit2: 5,\n });\n\n // Setup subscription\n const unsubscribe = subscribeToNewMessages();\n\n return () => {\n // Unsubscribe on cleanup\n if (unsubscribe) unsubscribe();\n };\n }, []),\n );\n\n // Effect for thread updates from subscription\n React.useEffect(() => {\n if (threadCreatedUpdated?.threadCreatedUpdated?.data) {\n // The subscription handler will handle updates\n }\n }, [threadCreatedUpdated]);\n\n const threads = React.useMemo(() => {\n if (data?.threadMessages?.data?.length == 0) return [];\n const threadsFiltered = data?.threadMessages?.data\n ? uniqBy([...data?.threadMessages?.data], ({ id }: any) => id)\n : [];\n return orderBy(threadsFiltered, ['updatedAt'], ['desc']) || [];\n }, [data]);\n\n const threadReplies = React.useMemo(() => {\n if (!threads?.length) return null;\n return threads?.map((t: any) => t?.replies)?.flat(1) || [];\n }, [threads]);\n\n const handleSelectThread = useCallback((id: any, title: any, postParentId: any) => {\n navigation.navigate(config.THREAD_MESSEGE_PATH as any, {\n channelId: id,\n role: role?.toString(),\n title: title,\n postParentId: postParentId,\n hideTabBar: true,\n });\n }, []);\n\n const handleRefresh = useCallback(() => {\n setRefresh(true);\n refetch({\n channelId: channelId?.toString(),\n role: role?.toString(),\n limit: MESSAGES_PER_PAGE,\n repliesLimit2: 5,\n }).finally(() => {\n setRefresh(false);\n });\n }, []);\n\n const fetchMoreThreads = useCallback(() => {\n refetch({\n channelId: channelId?.toString(),\n role: role?.toString(),\n limit: MESSAGES_PER_PAGE,\n repliesLimit2: 5,\n });\n }, []);\n\n if (error) {\n return (\n <Box style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>\n <Text>Error loading threads. {error.message}</Text>\n <Button onPress={handleRefresh} style={{ marginTop: 4 }}>\n <Text>Try Again</Text>\n </Button>\n </Box>\n );\n }\n\n return (\n <Box style={{ flex: 1 }}>\n {threadLoading && !threads?.length ? (\n <Center style={{ flex: 1 }}>\n <Spinner size=\"large\" />\n </Center>\n ) : threads?.length === 0 ? (\n <Box style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>\n <Text>No threads found</Text>\n </Box>\n ) : (\n <FlatList\n data={threads}\n keyExtractor={(item) => item.id.toString()}\n renderItem={({ item }) => (\n <ThreadViewItem\n {...item}\n onPress={handleSelectThread}\n channelId={channelId}\n channelsDetail={channelsDetail}\n />\n )}\n refreshing={refreshing}\n onRefresh={handleRefresh}\n onEndReached={fetchMoreThreads}\n onEndReachedThreshold={0.5}\n contentContainerStyle={{ padding: 16 }}\n ItemSeparatorComponent={() => <Box style={{ height: 3 }} />}\n />\n )}\n <SubscriptionHandler subscribeToNewMessages={subscribeToNewMessages} channelId={channelId} />\n </Box>\n );\n};\n\n// Component to handle subscription logic\nconst SubscriptionHandler = ({ subscribeToNewMessages, channelId }: IThreadSubscriptionHandlerProps) => {\n useEffect(() => {\n const unsubscribe = subscribeToNewMessages();\n return () => {\n if (unsubscribe) unsubscribe();\n };\n }, [channelId]);\n\n return null;\n};\n\nexport const ThreadsView = ThreadsViewComponent;\n"],"names":["threads","React"],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import {useCallback}from'react';function useInboxMessages({
2
+ useQueryHook,
3
+ queryVariables,
4
+ subscriptionDocument,
5
+ subscriptionVariables,
6
+ updateQuery,
7
+ onError
8
+ }) {
9
+ const {
10
+ data,
11
+ loading,
12
+ error,
13
+ refetch,
14
+ subscribeToMore
15
+ } = useQueryHook(queryVariables);
16
+ const subscribe = useCallback(() => {
17
+ return subscribeToMore({
18
+ document: subscriptionDocument,
19
+ variables: subscriptionVariables,
20
+ updateQuery,
21
+ onError
22
+ });
23
+ }, [subscribeToMore, subscriptionDocument, subscriptionVariables, updateQuery, onError]);
24
+ return {
25
+ data,
26
+ loading,
27
+ error,
28
+ refetch,
29
+ subscribe
30
+ };
31
+ }export{useInboxMessages};//# sourceMappingURL=useInboxMessages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInboxMessages.js","sources":["../../../../src/screens/inbox/hooks/useInboxMessages.ts"],"sourcesContent":["import { useCallback } from 'react';\n\n/**\n * useInboxMessages - a generic hook for fetching and subscribing to messages\n *\n * @param useQueryHook - Apollo query hook (e.g., useChannelMessagesQuery)\n * @param queryVariables - variables for the query\n * @param subscriptionDocument - GraphQL subscription document\n * @param subscriptionVariables - variables for the subscription\n * @param updateQuery - Apollo updateQuery function (optional)\n * @param onError - error handler (optional)\n * @returns { data, loading, error, refetch, subscribe }\n */\nexport function useInboxMessages({\n useQueryHook,\n queryVariables,\n subscriptionDocument,\n subscriptionVariables,\n updateQuery,\n onError,\n}) {\n const { data, loading, error, refetch, subscribeToMore } = useQueryHook(queryVariables);\n\n const subscribe = useCallback(() => {\n return subscribeToMore({\n document: subscriptionDocument,\n variables: subscriptionVariables,\n updateQuery,\n onError,\n });\n }, [subscribeToMore, subscriptionDocument, subscriptionVariables, updateQuery, onError]);\n\n return { data, loading, error, refetch, subscribe };\n}\n"],"names":[],"mappings":"gCAaO,SAAS,gBAAiB,CAAA;AAAA,EAC/B,YAAA;AAAA,EACA,cAAA;AAAA,EACA,oBAAA;AAAA,EACA,qBAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAG,EAAA;AACD,EAAM,MAAA;AAAA,IACJ,IAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACF,GAAI,aAAa,cAAc,CAAA;AAC/B,EAAM,MAAA,SAAA,GAAY,YAAY,MAAM;AAClC,IAAA,OAAO,eAAgB,CAAA;AAAA,MACrB,QAAU,EAAA,oBAAA;AAAA,MACV,SAAW,EAAA,qBAAA;AAAA,MACX,WAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,KACA,CAAC,eAAA,EAAiB,sBAAsB,qBAAuB,EAAA,WAAA,EAAa,OAAO,CAAC,CAAA;AACvF,EAAO,OAAA;AAAA,IACL,IAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACF;AACF"}
@@ -0,0 +1,108 @@
1
+ import {useState,useCallback,useMemo}from'react';import {BaseState,Actions}from'../workflow/dialog-threads-xstate.js';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
+ function useSafeDialogThreadsMachine() {
21
+ const [state, setState] = useState({
22
+ context: {
23
+ channelId: void 0,
24
+ postParentId: void 0,
25
+ role: void 0,
26
+ channelsDetail: null,
27
+ threadData: [],
28
+ loading: true,
29
+ error: null
30
+ },
31
+ value: BaseState.Idle,
32
+ matches: (value) => value === BaseState.Idle
33
+ });
34
+ const matches = useCallback((value) => value === state.value, [state.value]);
35
+ useMemo(() => {
36
+ setState((prev) => __spreadProps(__spreadValues({}, prev), {
37
+ matches
38
+ }));
39
+ }, [matches]);
40
+ const send = useCallback((event) => {
41
+ try {
42
+ if (event.type === Actions.INITIALIZE) {
43
+ setState((prev) => {
44
+ var _a, _b, _c;
45
+ return __spreadProps(__spreadValues({}, prev), {
46
+ context: __spreadProps(__spreadValues({}, prev.context), {
47
+ channelId: (_a = event.data) == null ? void 0 : _a.channelId,
48
+ postParentId: (_b = event.data) == null ? void 0 : _b.postParentId,
49
+ role: (_c = event.data) == null ? void 0 : _c.role,
50
+ loading: true,
51
+ error: null
52
+ }),
53
+ value: BaseState.LoadingChannel
54
+ });
55
+ });
56
+ } else if (event.type === Actions.SET_CHANNEL_DETAIL) {
57
+ setState((prev) => {
58
+ var _a;
59
+ return __spreadProps(__spreadValues({}, prev), {
60
+ context: __spreadProps(__spreadValues({}, prev.context), {
61
+ channelsDetail: (_a = event.data) == null ? void 0 : _a.channelsDetail,
62
+ loading: false
63
+ }),
64
+ value: BaseState.LoadingThreads
65
+ });
66
+ });
67
+ } else if (event.type === Actions.SET_THREADS) {
68
+ setState((prev) => {
69
+ var _a;
70
+ return __spreadProps(__spreadValues({}, prev), {
71
+ context: __spreadProps(__spreadValues({}, prev.context), {
72
+ threadData: ((_a = event.data) == null ? void 0 : _a.threadData) || [],
73
+ loading: false
74
+ }),
75
+ value: BaseState.Active
76
+ });
77
+ });
78
+ } else if (event.type === Actions.FETCH_THREADS) {
79
+ setState((prev) => __spreadProps(__spreadValues({}, prev), {
80
+ context: __spreadProps(__spreadValues({}, prev.context), {
81
+ loading: true
82
+ }),
83
+ value: BaseState.LoadingThreads
84
+ }));
85
+ } else if (event.type === Actions.ERROR) {
86
+ setState((prev) => {
87
+ var _a;
88
+ return __spreadProps(__spreadValues({}, prev), {
89
+ context: __spreadProps(__spreadValues({}, prev.context), {
90
+ error: (_a = event.data) == null ? void 0 : _a.error,
91
+ loading: false
92
+ }),
93
+ value: BaseState.Error
94
+ });
95
+ });
96
+ }
97
+ } catch (error) {
98
+ setState((prev) => __spreadProps(__spreadValues({}, prev), {
99
+ context: __spreadProps(__spreadValues({}, prev.context), {
100
+ error,
101
+ loading: false
102
+ }),
103
+ value: BaseState.Error
104
+ }));
105
+ }
106
+ }, []);
107
+ return [state, send];
108
+ }export{useSafeDialogThreadsMachine as default,useSafeDialogThreadsMachine};//# sourceMappingURL=useSafeDialogThreadsMachine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSafeDialogThreadsMachine.js","sources":["../../../../src/screens/inbox/hooks/useSafeDialogThreadsMachine.ts"],"sourcesContent":["import { useState, useCallback, useMemo } from 'react';\nimport { BaseState, Actions, dialogThreadsXstate } from '../workflow/dialog-threads-xstate';\n\n// Define proper types for the state and context\nexport interface DialogThreadsContext {\n channelId?: string;\n postParentId?: string | number;\n role?: string;\n channelsDetail: any;\n threadData: any[];\n loading: boolean;\n error: any;\n}\n\nexport interface DialogThreadsState {\n context: DialogThreadsContext;\n value: BaseState;\n matches: (stateValue: string) => boolean;\n}\n\n// Define proper action types\nexport type DialogThreadsEvent =\n | { type: typeof Actions.INITIALIZE; data: { channelId?: string; postParentId?: string | number; role?: string } }\n | { type: typeof Actions.FETCH_CHANNEL_DETAIL; data: { id: string } }\n | { type: typeof Actions.SET_CHANNEL_DETAIL; data: { channelsDetail: any } }\n | { type: typeof Actions.FETCH_THREADS; data?: any }\n | { type: typeof Actions.SET_THREADS; data: { threadData: any[] } }\n | { type: typeof Actions.ERROR; data: { error: any } };\n\n/**\n * Custom hook to safely use the dialog threads state machine\n * This provides a fallback implementation in case useMachine from XState has issues\n */\nexport function useSafeDialogThreadsMachine(): [DialogThreadsState, (event: DialogThreadsEvent) => void] {\n // Initialize with default state from the machine's initial context\n const [state, setState] = useState<DialogThreadsState>({\n context: {\n channelId: undefined,\n postParentId: undefined,\n role: undefined,\n channelsDetail: null,\n threadData: [],\n loading: true,\n error: null,\n },\n value: BaseState.Idle,\n matches: (value: string) => value === BaseState.Idle,\n });\n\n // Create a memoized function to determine state matching\n const matches = useCallback((value: string) => value === state.value, [state.value]);\n\n // Update the matches function when state changes\n useMemo(() => {\n setState((prev) => ({\n ...prev,\n matches,\n }));\n }, [matches]);\n\n // Create a safe send function to handle events\n const send = useCallback((event: DialogThreadsEvent) => {\n try {\n // Handle specific events based on the event type\n if (event.type === Actions.INITIALIZE) {\n setState((prev) => ({\n ...prev,\n context: {\n ...prev.context,\n channelId: event.data?.channelId,\n postParentId: event.data?.postParentId,\n role: event.data?.role,\n loading: true,\n error: null,\n },\n value: BaseState.LoadingChannel,\n }));\n } else if (event.type === Actions.SET_CHANNEL_DETAIL) {\n setState((prev) => ({\n ...prev,\n context: {\n ...prev.context,\n channelsDetail: event.data?.channelsDetail,\n loading: false,\n },\n value: BaseState.LoadingThreads,\n }));\n } else if (event.type === Actions.SET_THREADS) {\n setState((prev) => ({\n ...prev,\n context: {\n ...prev.context,\n threadData: event.data?.threadData || [],\n loading: false,\n },\n value: BaseState.Active,\n }));\n } else if (event.type === Actions.FETCH_THREADS) {\n setState((prev) => ({\n ...prev,\n context: {\n ...prev.context,\n loading: true,\n },\n value: BaseState.LoadingThreads,\n }));\n } else if (event.type === Actions.ERROR) {\n setState((prev) => ({\n ...prev,\n context: {\n ...prev.context,\n error: event.data?.error,\n loading: false,\n },\n value: BaseState.Error,\n }));\n }\n } catch (error) {\n // Handle errors gracefully\n setState((prev) => ({\n ...prev,\n context: {\n ...prev.context,\n error,\n loading: false,\n },\n value: BaseState.Error,\n }));\n }\n }, []);\n\n // Return as a tuple to match useMachine API\n return [state, send];\n}\n\nexport default useSafeDialogThreadsMachine;\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,151 @@
1
+ import {setup,assign}from'xstate';var BaseState = /* @__PURE__ */ ((BaseState2) => {
2
+ BaseState2["Idle"] = "idle";
3
+ BaseState2["LoadingChannel"] = "loadingChannel";
4
+ BaseState2["LoadingThreads"] = "loadingThreads";
5
+ BaseState2["Active"] = "active";
6
+ BaseState2["Error"] = "error";
7
+ return BaseState2;
8
+ })(BaseState || {});
9
+ var Actions = /* @__PURE__ */ ((Actions2) => {
10
+ Actions2["INITIALIZE"] = "INITIALIZE";
11
+ Actions2["FETCH_CHANNEL_DETAIL"] = "FETCH_CHANNEL_DETAIL";
12
+ Actions2["SET_CHANNEL_DETAIL"] = "SET_CHANNEL_DETAIL";
13
+ Actions2["FETCH_THREADS"] = "FETCH_THREADS";
14
+ Actions2["SET_THREADS"] = "SET_THREADS";
15
+ Actions2["ERROR"] = "ERROR";
16
+ return Actions2;
17
+ })(Actions || {});
18
+ setup({
19
+ types: {
20
+ context: {},
21
+ events: {}
22
+ },
23
+ actions: {
24
+ setInitialContext: assign({
25
+ channelId: ({
26
+ event
27
+ }) => {
28
+ if (event.type === "INITIALIZE" /* INITIALIZE */) {
29
+ return event.data.channelId;
30
+ }
31
+ return void 0;
32
+ },
33
+ postParentId: ({
34
+ event
35
+ }) => {
36
+ if (event.type === "INITIALIZE" /* INITIALIZE */) {
37
+ return event.data.postParentId;
38
+ }
39
+ return void 0;
40
+ },
41
+ role: ({
42
+ event
43
+ }) => {
44
+ if (event.type === "INITIALIZE" /* INITIALIZE */) {
45
+ return event.data.role;
46
+ }
47
+ return void 0;
48
+ },
49
+ loading: true,
50
+ error: null
51
+ }),
52
+ setChannelDetail: assign({
53
+ channelsDetail: ({
54
+ event
55
+ }) => {
56
+ if (event.type === "SET_CHANNEL_DETAIL" /* SET_CHANNEL_DETAIL */) {
57
+ return event.data.channelsDetail;
58
+ }
59
+ return null;
60
+ },
61
+ loading: false
62
+ }),
63
+ setThreads: assign({
64
+ threadData: ({
65
+ event
66
+ }) => {
67
+ if (event.type === "SET_THREADS" /* SET_THREADS */) {
68
+ return event.data.threadData;
69
+ }
70
+ return [];
71
+ },
72
+ loading: false
73
+ }),
74
+ setError: assign({
75
+ error: ({
76
+ event
77
+ }) => {
78
+ if (event.type === "ERROR" /* ERROR */) {
79
+ return event.data.error;
80
+ }
81
+ return null;
82
+ },
83
+ loading: false
84
+ }),
85
+ setLoading: assign({
86
+ loading: true
87
+ })
88
+ }
89
+ }).createMachine({
90
+ id: "dialogThreads",
91
+ initial: "idle" /* Idle */,
92
+ context: {
93
+ channelId: void 0,
94
+ postParentId: void 0,
95
+ role: void 0,
96
+ channelsDetail: null,
97
+ threadData: [],
98
+ loading: true,
99
+ error: null
100
+ },
101
+ states: {
102
+ ["idle" /* Idle */]: {
103
+ on: {
104
+ ["INITIALIZE" /* INITIALIZE */]: {
105
+ target: "loadingChannel" /* LoadingChannel */,
106
+ actions: "setInitialContext"
107
+ }
108
+ }
109
+ },
110
+ ["loadingChannel" /* LoadingChannel */]: {
111
+ on: {
112
+ ["SET_CHANNEL_DETAIL" /* SET_CHANNEL_DETAIL */]: {
113
+ target: "loadingThreads" /* LoadingThreads */,
114
+ actions: "setChannelDetail"
115
+ },
116
+ ["ERROR" /* ERROR */]: {
117
+ target: "error" /* Error */,
118
+ actions: "setError"
119
+ }
120
+ }
121
+ },
122
+ ["loadingThreads" /* LoadingThreads */]: {
123
+ on: {
124
+ ["SET_THREADS" /* SET_THREADS */]: {
125
+ target: "active" /* Active */,
126
+ actions: "setThreads"
127
+ },
128
+ ["ERROR" /* ERROR */]: {
129
+ target: "error" /* Error */,
130
+ actions: "setError"
131
+ }
132
+ }
133
+ },
134
+ ["active" /* Active */]: {
135
+ on: {
136
+ ["FETCH_THREADS" /* FETCH_THREADS */]: {
137
+ target: "loadingThreads" /* LoadingThreads */,
138
+ actions: "setLoading"
139
+ }
140
+ }
141
+ },
142
+ ["error" /* Error */]: {
143
+ on: {
144
+ ["INITIALIZE" /* INITIALIZE */]: {
145
+ target: "loadingChannel" /* LoadingChannel */,
146
+ actions: "setInitialContext"
147
+ }
148
+ }
149
+ }
150
+ }
151
+ });export{Actions,BaseState};//# sourceMappingURL=dialog-threads-xstate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog-threads-xstate.js","sources":["../../../../src/screens/inbox/workflow/dialog-threads-xstate.ts"],"sourcesContent":["import { assign, setup } from 'xstate';\nimport { threadsMachineConfig } from '../machines/threadsMachine';\n\nexport enum BaseState {\n Idle = 'idle',\n LoadingChannel = 'loadingChannel',\n LoadingThreads = 'loadingThreads',\n Active = 'active',\n Error = 'error',\n}\n\nexport enum Actions {\n INITIALIZE = 'INITIALIZE',\n FETCH_CHANNEL_DETAIL = 'FETCH_CHANNEL_DETAIL',\n SET_CHANNEL_DETAIL = 'SET_CHANNEL_DETAIL',\n FETCH_THREADS = 'FETCH_THREADS',\n SET_THREADS = 'SET_THREADS',\n ERROR = 'ERROR',\n}\n\n// Type definitions for the event data\ntype InitializeEventData = { channelId?: string; postParentId?: string; role?: string };\ntype ChannelDetailEventData = { id: string };\ntype SetChannelDetailEventData = { channelsDetail: any };\ntype SetThreadsEventData = { threadData: any[] };\ntype ErrorEventData = { error: any };\n\nexport const dialogThreadsXstate = setup({\n types: {\n context: {} as {\n channelId?: string;\n postParentId?: string;\n role?: string;\n channelsDetail: any;\n threadData: any[];\n loading: boolean;\n error: any;\n },\n events: {} as\n | { type: typeof Actions.INITIALIZE; data: InitializeEventData }\n | { type: typeof Actions.FETCH_CHANNEL_DETAIL; data: ChannelDetailEventData }\n | { type: typeof Actions.SET_CHANNEL_DETAIL; data: SetChannelDetailEventData }\n | { type: typeof Actions.FETCH_THREADS; data?: {} }\n | { type: typeof Actions.SET_THREADS; data: SetThreadsEventData }\n | { type: typeof Actions.ERROR; data: ErrorEventData },\n },\n actions: {\n setInitialContext: assign({\n channelId: ({ event }) => {\n if (event.type === Actions.INITIALIZE) {\n return event.data.channelId;\n }\n return undefined;\n },\n postParentId: ({ event }) => {\n if (event.type === Actions.INITIALIZE) {\n return event.data.postParentId;\n }\n return undefined;\n },\n role: ({ event }) => {\n if (event.type === Actions.INITIALIZE) {\n return event.data.role;\n }\n return undefined;\n },\n loading: true,\n error: null,\n }),\n setChannelDetail: assign({\n channelsDetail: ({ event }) => {\n if (event.type === Actions.SET_CHANNEL_DETAIL) {\n return event.data.channelsDetail;\n }\n return null;\n },\n loading: false,\n }),\n setThreads: assign({\n threadData: ({ event }) => {\n if (event.type === Actions.SET_THREADS) {\n return event.data.threadData;\n }\n return [];\n },\n loading: false,\n }),\n setError: assign({\n error: ({ event }) => {\n if (event.type === Actions.ERROR) {\n return event.data.error;\n }\n return null;\n },\n loading: false,\n }),\n setLoading: assign({\n loading: true,\n }),\n },\n}).createMachine({\n id: 'dialogThreads',\n initial: BaseState.Idle,\n context: {\n channelId: undefined,\n postParentId: undefined,\n role: undefined,\n channelsDetail: null,\n threadData: [],\n loading: true,\n error: null,\n },\n states: {\n [BaseState.Idle]: {\n on: {\n [Actions.INITIALIZE]: {\n target: BaseState.LoadingChannel,\n actions: 'setInitialContext',\n },\n },\n },\n [BaseState.LoadingChannel]: {\n on: {\n [Actions.SET_CHANNEL_DETAIL]: {\n target: BaseState.LoadingThreads,\n actions: 'setChannelDetail',\n },\n [Actions.ERROR]: {\n target: BaseState.Error,\n actions: 'setError',\n },\n },\n },\n [BaseState.LoadingThreads]: {\n on: {\n [Actions.SET_THREADS]: {\n target: BaseState.Active,\n actions: 'setThreads',\n },\n [Actions.ERROR]: {\n target: BaseState.Error,\n actions: 'setError',\n },\n },\n },\n [BaseState.Active]: {\n on: {\n [Actions.FETCH_THREADS]: {\n target: BaseState.LoadingThreads,\n actions: 'setLoading',\n },\n },\n },\n [BaseState.Error]: {\n on: {\n [Actions.INITIALIZE]: {\n target: BaseState.LoadingChannel,\n actions: 'setInitialContext',\n },\n },\n },\n },\n});\n"],"names":["BaseState","Actions"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@messenger-box/platform-mobile",
3
- "version": "10.0.3-alpha.7",
3
+ "version": "10.0.3-alpha.72",
4
4
  "description": "Sample core for higher packages to depend on",
5
5
  "license": "ISC",
6
6
  "author": "CDMBase LLC",
@@ -22,8 +22,8 @@
22
22
  "watch-ts": "tsc --watch"
23
23
  },
24
24
  "dependencies": {
25
- "@messenger-box/core": "10.0.3-alpha.7",
26
- "@messenger-box/platform-client": "10.0.3-alpha.7",
25
+ "@messenger-box/core": "10.0.3-alpha.72",
26
+ "@messenger-box/platform-client": "10.0.3-alpha.72",
27
27
  "base-64": "1.0.0",
28
28
  "react-native-gifted-chat": "1.0.4"
29
29
  },
@@ -43,5 +43,5 @@
43
43
  "typescript": {
44
44
  "definition": "lib/index.d.ts"
45
45
  },
46
- "gitHead": "6c95ed48d37a8f95b0c3db71c1922c0e9e76bcfe"
46
+ "gitHead": "b4e54a34578a1a63afbe7ab48644b86e5cc8858f"
47
47
  }