@messenger-box/platform-mobile 10.0.3-alpha.20 → 10.0.3-alpha.201

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 (112) hide show
  1. package/lib/components/messages-container-ui/BuildModeView.js +428 -0
  2. package/lib/components/messages-container-ui/BuildModeView.js.map +1 -0
  3. package/lib/components/messages-container-ui/MessagesContainerUI.js +55 -0
  4. package/lib/components/messages-container-ui/MessagesContainerUI.js.map +1 -0
  5. package/lib/components/messages-container-ui/PlanModeView.js +336 -0
  6. package/lib/components/messages-container-ui/PlanModeView.js.map +1 -0
  7. package/lib/compute.js +2 -3
  8. package/lib/compute.js.map +1 -1
  9. package/lib/index.js +1 -1
  10. package/lib/index.js.map +1 -1
  11. package/lib/module.js.map +1 -1
  12. package/lib/queries/inboxQueries.js +62 -0
  13. package/lib/queries/inboxQueries.js.map +1 -0
  14. package/lib/routes.json +2 -3
  15. package/lib/screens/inbox/DialogMessages.js +8 -3
  16. package/lib/screens/inbox/DialogMessages.js.map +1 -1
  17. package/lib/screens/inbox/DialogThreadMessages.js +6 -11
  18. package/lib/screens/inbox/DialogThreadMessages.js.map +1 -1
  19. package/lib/screens/inbox/DialogThreads.js +58 -20
  20. package/lib/screens/inbox/DialogThreads.js.map +1 -1
  21. package/lib/screens/inbox/Inbox.js.map +1 -1
  22. package/lib/screens/inbox/components/CachedImage/consts.js +1 -1
  23. package/lib/screens/inbox/components/CachedImage/consts.js.map +1 -1
  24. package/lib/screens/inbox/components/CachedImage/index.js +125 -115
  25. package/lib/screens/inbox/components/CachedImage/index.js.map +1 -1
  26. package/lib/screens/inbox/components/DialogItem.js +160 -0
  27. package/lib/screens/inbox/components/DialogItem.js.map +1 -0
  28. package/lib/screens/inbox/components/GiftedChatInboxComponent.js +315 -0
  29. package/lib/screens/inbox/components/GiftedChatInboxComponent.js.map +1 -0
  30. package/lib/screens/inbox/components/SlackMessageContainer/ImageViewerModal.js +3 -1
  31. package/lib/screens/inbox/components/SlackMessageContainer/ImageViewerModal.js.map +1 -1
  32. package/lib/screens/inbox/components/SlackMessageContainer/PaymentMessage.js +194 -0
  33. package/lib/screens/inbox/components/SlackMessageContainer/PaymentMessage.js.map +1 -0
  34. package/lib/screens/inbox/components/SlackMessageContainer/SlackBubble.js +149 -36
  35. package/lib/screens/inbox/components/SlackMessageContainer/SlackBubble.js.map +1 -1
  36. package/lib/screens/inbox/components/SlackMessageContainer/SlackMessage.js +4 -5
  37. package/lib/screens/inbox/components/SlackMessageContainer/SlackMessage.js.map +1 -1
  38. package/lib/screens/inbox/components/SubscriptionHandler.js +22 -0
  39. package/lib/screens/inbox/components/SubscriptionHandler.js.map +1 -0
  40. package/lib/screens/inbox/components/ThreadsViewItem.js +67 -47
  41. package/lib/screens/inbox/components/ThreadsViewItem.js.map +1 -1
  42. package/lib/screens/inbox/config/config.js +4 -2
  43. package/lib/screens/inbox/config/config.js.map +1 -1
  44. package/lib/screens/inbox/containers/ConversationView.js +1099 -1094
  45. package/lib/screens/inbox/containers/ConversationView.js.map +1 -1
  46. package/lib/screens/inbox/containers/Dialogs.js +132 -534
  47. package/lib/screens/inbox/containers/Dialogs.js.map +1 -1
  48. package/lib/screens/inbox/containers/ThreadConversationView.js +876 -1357
  49. package/lib/screens/inbox/containers/ThreadConversationView.js.map +1 -1
  50. package/lib/screens/inbox/containers/ThreadsView.js +81 -54
  51. package/lib/screens/inbox/containers/ThreadsView.js.map +1 -1
  52. package/lib/screens/inbox/hooks/useInboxMessages.js +31 -0
  53. package/lib/screens/inbox/hooks/useInboxMessages.js.map +1 -0
  54. package/lib/screens/inbox/hooks/useSafeDialogThreadsMachine.js +108 -0
  55. package/lib/screens/inbox/hooks/useSafeDialogThreadsMachine.js.map +1 -0
  56. package/lib/screens/inbox/workflow/dialog-threads-xstate.js +151 -0
  57. package/lib/screens/inbox/workflow/dialog-threads-xstate.js.map +1 -0
  58. package/package.json +9 -7
  59. package/CHANGELOG.md +0 -164
  60. package/jest.config.js +0 -24
  61. package/lib/screens/inbox/components/DialogsListItem.js +0 -548
  62. package/lib/screens/inbox/components/DialogsListItem.js.map +0 -1
  63. package/lib/screens/inbox/components/ServiceDialogsListItem.js +0 -489
  64. package/lib/screens/inbox/components/ServiceDialogsListItem.js.map +0 -1
  65. package/lib/screens/inbox/components/workflow/dialogs-list-item-xstate.js +0 -175
  66. package/lib/screens/inbox/components/workflow/dialogs-list-item-xstate.js.map +0 -1
  67. package/lib/screens/inbox/components/workflow/service-dialogs-list-item-xstate.js +0 -191
  68. package/lib/screens/inbox/components/workflow/service-dialogs-list-item-xstate.js.map +0 -1
  69. package/lib/screens/inbox/containers/workflow/conversation-xstate.js +0 -380
  70. package/lib/screens/inbox/containers/workflow/conversation-xstate.js.map +0 -1
  71. package/lib/screens/inbox/containers/workflow/dialogs-xstate.js +0 -211
  72. package/lib/screens/inbox/containers/workflow/dialogs-xstate.js.map +0 -1
  73. package/lib/screens/inbox/containers/workflow/thread-conversation-xstate.js +0 -438
  74. package/lib/screens/inbox/containers/workflow/thread-conversation-xstate.js.map +0 -1
  75. package/rollup.config.mjs +0 -45
  76. package/src/components/index.ts +0 -0
  77. package/src/compute.ts +0 -63
  78. package/src/index.ts +0 -7
  79. package/src/module.ts +0 -10
  80. package/src/navigation/InboxNavigation.tsx +0 -102
  81. package/src/navigation/index.ts +0 -1
  82. package/src/screens/inbox/DialogMessages.tsx +0 -21
  83. package/src/screens/inbox/DialogThreadMessages.tsx +0 -97
  84. package/src/screens/inbox/DialogThreads.tsx +0 -129
  85. package/src/screens/inbox/Inbox.tsx +0 -17
  86. package/src/screens/inbox/components/CachedImage/consts.ts +0 -6
  87. package/src/screens/inbox/components/CachedImage/index.tsx +0 -223
  88. package/src/screens/inbox/components/DialogsHeader.tsx +0 -30
  89. package/src/screens/inbox/components/DialogsListItem.tsx +0 -819
  90. package/src/screens/inbox/components/ServiceDialogsListItem.tsx +0 -679
  91. package/src/screens/inbox/components/SlackMessageContainer/ImageViewerModal.tsx +0 -113
  92. package/src/screens/inbox/components/SlackMessageContainer/SlackBubble.tsx +0 -313
  93. package/src/screens/inbox/components/SlackMessageContainer/SlackMessage.tsx +0 -145
  94. package/src/screens/inbox/components/SlackMessageContainer/index.ts +0 -3
  95. package/src/screens/inbox/components/SupportServiceDialogsListItem.tsx +0 -301
  96. package/src/screens/inbox/components/ThreadsViewItem.tsx +0 -321
  97. package/src/screens/inbox/components/workflow/dialogs-list-item-xstate.ts +0 -145
  98. package/src/screens/inbox/components/workflow/service-dialogs-list-item-xstate.ts +0 -159
  99. package/src/screens/inbox/config/config.ts +0 -15
  100. package/src/screens/inbox/config/index.ts +0 -1
  101. package/src/screens/inbox/containers/ConversationView.tsx +0 -1782
  102. package/src/screens/inbox/containers/Dialogs.tsx +0 -794
  103. package/src/screens/inbox/containers/SupportServiceDialogs.tsx +0 -119
  104. package/src/screens/inbox/containers/ThreadConversationView.tsx +0 -2312
  105. package/src/screens/inbox/containers/ThreadsView.tsx +0 -305
  106. package/src/screens/inbox/containers/workflow/apollo/handleResult.ts +0 -20
  107. package/src/screens/inbox/containers/workflow/conversation-xstate.ts +0 -313
  108. package/src/screens/inbox/containers/workflow/dialogs-xstate.ts +0 -196
  109. package/src/screens/inbox/containers/workflow/thread-conversation-xstate.ts +0 -401
  110. package/src/screens/index.ts +0 -4
  111. package/tsconfig.json +0 -13
  112. package/webpack.config.js +0 -58
@@ -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/graphql';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,47 @@ 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) return prev;
59
+ const newThread = subscriptionData.data.threadCreatedUpdated.data;
60
+ if (!newThread) return prev;
61
+ const threads2 = prev.threadMessages.data || [];
62
+ const index = threads2.findIndex((t) => t.id === newThread.id);
63
+ let updatedThreads;
64
+ if (index > -1) {
65
+ updatedThreads = [...threads2];
66
+ updatedThreads[index] = newThread;
67
+ } else {
68
+ updatedThreads = [newThread, ...threads2];
69
+ }
70
+ return __spreadProps(__spreadValues({}, prev), {
71
+ threadMessages: __spreadProps(__spreadValues({}, prev.threadMessages), {
72
+ data: uniqBy(updatedThreads, "id")
73
+ })
74
+ });
75
+ }
76
+ });
77
+ }, [channelId, subscribeToMore]);
43
78
  useFocusEffect(React__default.useCallback(() => {
44
79
  var _a;
45
80
  navigation == null ? void 0 : navigation.setOptions({
@@ -51,23 +86,18 @@ const ThreadsViewComponent = ({
51
86
  limit: MESSAGES_PER_PAGE,
52
87
  repliesLimit2: 5
53
88
  });
89
+ const unsubscribe = subscribeToNewMessages();
54
90
  return () => {
91
+ if (unsubscribe) unsubscribe();
55
92
  };
56
93
  }, []));
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
- }, []);
94
+ React__default.useEffect(() => {
95
+ var _a;
96
+ if ((_a = threadCreatedUpdated == null ? void 0 : threadCreatedUpdated.threadCreatedUpdated) == null ? void 0 : _a.data) ;
97
+ }, [threadCreatedUpdated]);
67
98
  const threads = React__default.useMemo(() => {
68
99
  var _a, _b, _c, _d;
69
- if (((_b = (_a = data == null ? void 0 : data.threadMessages) == null ? void 0 : _a.data) == null ? void 0 : _b.length) == 0)
70
- return [];
100
+ if (((_b = (_a = data == null ? void 0 : data.threadMessages) == null ? void 0 : _a.data) == null ? void 0 : _b.length) == 0) return [];
71
101
  const threadsFiltered = ((_c = data == null ? void 0 : data.threadMessages) == null ? void 0 : _c.data) ? uniqBy([...(_d = data == null ? void 0 : data.threadMessages) == null ? void 0 : _d.data], ({
72
102
  id
73
103
  }) => id) : [];
@@ -75,8 +105,7 @@ const ThreadsViewComponent = ({
75
105
  }, [data]);
76
106
  React__default.useMemo(() => {
77
107
  var _a;
78
- if (!(threads == null ? void 0 : threads.length))
79
- return null;
108
+ if (!(threads == null ? void 0 : threads.length)) return null;
80
109
  return ((_a = threads == null ? void 0 : threads.map((t) => t == null ? void 0 : t.replies)) == null ? void 0 : _a.flat(1)) || [];
81
110
  }, [threads]);
82
111
  const handleSelectThread = useCallback((id, title, postParentId) => {
@@ -89,61 +118,59 @@ const ThreadsViewComponent = ({
89
118
  });
90
119
  }, []);
91
120
  const handleRefresh = useCallback(() => {
121
+ setRefresh(true);
92
122
  refetch({
93
123
  channelId: channelId == null ? void 0 : channelId.toString(),
94
124
  role: role == null ? void 0 : role.toString(),
95
125
  limit: MESSAGES_PER_PAGE,
96
126
  repliesLimit2: 5
127
+ }).finally(() => {
128
+ setRefresh(false);
97
129
  });
98
130
  }, []);
99
131
  const fetchMoreThreads = useCallback(() => {
100
132
  refetch({
101
133
  channelId: channelId == null ? void 0 : channelId.toString(),
102
134
  role: role == null ? void 0 : role.toString(),
103
- skip: threads == null ? void 0 : threads.length
135
+ limit: MESSAGES_PER_PAGE,
136
+ repliesLimit2: 5
104
137
  });
105
138
  }, []);
106
- console.log("threadLoading", threadLoading, " threads?.length=", threads == null ? void 0 : threads.length);
107
- return /* @__PURE__ */ React__default.createElement(Box, { className: "flex-1 p-2 pb-0 bg-gray-100 dark:border-gray-600 dark:bg-gray-700" }, /* @__PURE__ */ React__default.createElement(FlatList, { style: {
139
+ if (error) {
140
+ return /* @__PURE__ */ React__default.createElement(Box, { style: {
141
+ flex: 1,
142
+ justifyContent: "center",
143
+ alignItems: "center"
144
+ } }, /* @__PURE__ */ React__default.createElement(Text, null, "Error loading threads. ", error.message), /* @__PURE__ */ React__default.createElement(Button, { onPress: handleRefresh, style: {
145
+ marginTop: 4
146
+ } }, /* @__PURE__ */ React__default.createElement(Text, null, "Try Again")));
147
+ }
148
+ return /* @__PURE__ */ React__default.createElement(Box, { style: {
108
149
  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, { className: "h-0.5 bg-gray-200" }), 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, { className: "p-5" }, /* @__PURE__ */ React__default.createElement(Center, { className: "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 }));
150
+ } }, threadLoading && !(threads == null ? void 0 : threads.length) ? /* @__PURE__ */ React__default.createElement(Center, { style: {
151
+ flex: 1
152
+ } }, /* @__PURE__ */ React__default.createElement(Spinner, { size: "large" })) : (threads == null ? void 0 : threads.length) === 0 ? /* @__PURE__ */ React__default.createElement(Box, { style: {
153
+ flex: 1,
154
+ justifyContent: "center",
155
+ alignItems: "center"
156
+ } }, /* @__PURE__ */ React__default.createElement(Text, null, "No threads found")) : /* @__PURE__ */ React__default.createElement(FlatList, { data: threads, keyExtractor: (item) => item.id.toString(), renderItem: ({
157
+ item
158
+ }) => /* @__PURE__ */ React__default.createElement(ThreadViewItem, __spreadProps(__spreadValues({}, item), { onPress: handleSelectThread, channelId, channelsDetail })), refreshing, onRefresh: handleRefresh, onEndReached: fetchMoreThreads, onEndReachedThreshold: 0.5, contentContainerStyle: {
159
+ padding: 16
160
+ }, ItemSeparatorComponent: () => /* @__PURE__ */ React__default.createElement(Box, { style: {
161
+ height: 3
162
+ } }) }), /* @__PURE__ */ React__default.createElement(SubscriptionHandler, { subscribeToNewMessages, channelId }));
141
163
  };
142
164
  const SubscriptionHandler = ({
143
165
  subscribeToNewMessages,
144
166
  channelId
145
167
  }) => {
146
- useEffect(() => subscribeToNewMessages(), [channelId]);
147
- return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null);
168
+ useEffect(() => {
169
+ const unsubscribe = subscribeToNewMessages();
170
+ return () => {
171
+ if (unsubscribe) unsubscribe();
172
+ };
173
+ }, [channelId]);
174
+ return null;
148
175
  };
149
176
  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/graphql';\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 className=\"flex-1 p-2 pb-0 bg-gray-100 dark:border-gray-600 dark:bg-gray-700\">\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 className=\"h-0.5 bg-gray-200\" />}\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 className=\"p-5\">\n <Center className=\"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,gBAAA,CAAiB;AAAA,EAC/B,YAAA;AAAA,EACA,cAAA;AAAA,EACA,oBAAA;AAAA,EACA,qBAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA,EAAG;AACD,EAAA,MAAM;AAAA,IACJ,IAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACF,GAAI,aAAa,cAAc,CAAA;AAC/B,EAAA,MAAM,SAAA,GAAY,YAAY,MAAM;AAClC,IAAA,OAAO,eAAA,CAAgB;AAAA,MACrB,QAAA,EAAU,oBAAA;AAAA,MACV,SAAA,EAAW,qBAAA;AAAA,MACX,WAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,EACH,GAAG,CAAC,eAAA,EAAiB,sBAAsB,qBAAA,EAAuB,WAAA,EAAa,OAAO,CAAC,CAAA;AACvF,EAAA,OAAO;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};//# 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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"}