@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.
- package/CHANGELOG.md +116 -0
- package/lib/compute.js +2 -3
- package/lib/compute.js.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/queries/inboxQueries.js +65 -0
- package/lib/queries/inboxQueries.js.map +1 -0
- package/lib/routes.json +2 -3
- package/lib/screens/inbox/DialogMessages.js +1 -1
- package/lib/screens/inbox/DialogMessages.js.map +1 -1
- package/lib/screens/inbox/DialogThreadMessages.js +4 -8
- package/lib/screens/inbox/DialogThreadMessages.js.map +1 -1
- package/lib/screens/inbox/DialogThreads.js +57 -12
- package/lib/screens/inbox/DialogThreads.js.map +1 -1
- package/lib/screens/inbox/Inbox.js +1 -1
- package/lib/screens/inbox/Inbox.js.map +1 -1
- package/lib/screens/inbox/components/CachedImage/consts.js +1 -1
- package/lib/screens/inbox/components/CachedImage/consts.js.map +1 -1
- package/lib/screens/inbox/components/CachedImage/index.js +168 -46
- package/lib/screens/inbox/components/CachedImage/index.js.map +1 -1
- package/lib/screens/inbox/components/DialogItem.js +169 -0
- package/lib/screens/inbox/components/DialogItem.js.map +1 -0
- package/lib/screens/inbox/components/GiftedChatInboxComponent.js +313 -0
- package/lib/screens/inbox/components/GiftedChatInboxComponent.js.map +1 -0
- package/lib/screens/inbox/components/SlackMessageContainer/SlackBubble.js +147 -31
- package/lib/screens/inbox/components/SlackMessageContainer/SlackBubble.js.map +1 -1
- package/lib/screens/inbox/components/SlackMessageContainer/SlackMessage.js +6 -1
- package/lib/screens/inbox/components/SlackMessageContainer/SlackMessage.js.map +1 -1
- package/lib/screens/inbox/components/SubscriptionHandler.js +24 -0
- package/lib/screens/inbox/components/SubscriptionHandler.js.map +1 -0
- package/lib/screens/inbox/components/ThreadsViewItem.js +66 -55
- package/lib/screens/inbox/components/ThreadsViewItem.js.map +1 -1
- package/lib/screens/inbox/config/config.js +2 -2
- package/lib/screens/inbox/config/config.js.map +1 -1
- package/lib/screens/inbox/containers/ConversationView.js +1111 -434
- package/lib/screens/inbox/containers/ConversationView.js.map +1 -1
- package/lib/screens/inbox/containers/Dialogs.js +193 -80
- package/lib/screens/inbox/containers/Dialogs.js.map +1 -1
- package/lib/screens/inbox/containers/ThreadConversationView.js +725 -216
- package/lib/screens/inbox/containers/ThreadConversationView.js.map +1 -1
- package/lib/screens/inbox/containers/ThreadsView.js +83 -50
- package/lib/screens/inbox/containers/ThreadsView.js.map +1 -1
- package/lib/screens/inbox/hooks/useInboxMessages.js +31 -0
- package/lib/screens/inbox/hooks/useInboxMessages.js.map +1 -0
- package/lib/screens/inbox/hooks/useSafeDialogThreadsMachine.js +108 -0
- package/lib/screens/inbox/hooks/useSafeDialogThreadsMachine.js.map +1 -0
- package/lib/screens/inbox/workflow/dialog-threads-xstate.js +151 -0
- package/lib/screens/inbox/workflow/dialog-threads-xstate.js.map +1 -0
- package/package.json +4 -4
- package/src/compute.ts +5 -6
- package/src/index.ts +2 -0
- package/src/navigation/InboxNavigation.tsx +3 -3
- package/src/queries/inboxQueries.ts +299 -0
- package/src/queries/index.d.ts +2 -0
- package/src/queries/index.ts +1 -0
- package/src/screens/inbox/DialogMessages.tsx +1 -1
- package/src/screens/inbox/DialogThreadMessages.tsx +7 -14
- package/src/screens/inbox/DialogThreads.tsx +55 -61
- package/src/screens/inbox/Inbox.tsx +1 -1
- package/src/screens/inbox/components/Actionsheet.tsx +30 -0
- package/src/screens/inbox/components/CachedImage/consts.ts +4 -3
- package/src/screens/inbox/components/CachedImage/index.tsx +232 -61
- package/src/screens/inbox/components/DialogItem.tsx +306 -0
- package/src/screens/inbox/components/DialogsHeader.tsx +6 -13
- package/src/screens/inbox/components/DialogsListItem.tsx +262 -198
- package/src/screens/inbox/components/ExpandableInput.tsx +460 -0
- package/src/screens/inbox/components/ExpandableInputActionSheet.tsx +518 -0
- package/src/screens/inbox/components/GiftedChatInboxComponent.tsx +411 -0
- package/src/screens/inbox/components/ServiceDialogsListItem.tsx +337 -194
- package/src/screens/inbox/components/SlackInput.tsx +23 -0
- package/src/screens/inbox/components/SlackMessageContainer/SlackBubble.tsx +233 -23
- package/src/screens/inbox/components/SlackMessageContainer/SlackMessage.tsx +1 -1
- package/src/screens/inbox/components/SmartLoader.tsx +61 -0
- package/src/screens/inbox/components/SubscriptionHandler.tsx +41 -0
- package/src/screens/inbox/components/SupportServiceDialogsListItem.tsx +53 -55
- package/src/screens/inbox/components/ThreadsViewItem.tsx +178 -285
- package/src/screens/inbox/components/workflow/dialogs-list-item-xstate.ts +145 -0
- package/src/screens/inbox/components/workflow/service-dialogs-list-item-xstate.ts +159 -0
- package/src/screens/inbox/config/config.ts +2 -2
- package/src/screens/inbox/containers/ConversationView.tsx +1843 -702
- package/src/screens/inbox/containers/ConversationView.tsx.bk +1467 -0
- package/src/screens/inbox/containers/Dialogs.tsx +402 -204
- package/src/screens/inbox/containers/SupportServiceDialogs.tsx +4 -4
- package/src/screens/inbox/containers/ThreadConversationView.tsx +1350 -319
- package/src/screens/inbox/containers/ThreadsView.tsx +105 -193
- package/src/screens/inbox/containers/workflow/apollo/handleResult.ts +20 -0
- package/src/screens/inbox/containers/workflow/conversation-xstate.ts +313 -0
- package/src/screens/inbox/containers/workflow/dialogs-xstate.ts +196 -0
- package/src/screens/inbox/containers/workflow/thread-conversation-xstate.ts +401 -0
- package/src/screens/inbox/hooks/useInboxMessages.ts +34 -0
- package/src/screens/inbox/hooks/useSafeDialogThreadsMachine.ts +136 -0
- package/src/screens/inbox/index.ts +37 -0
- package/src/screens/inbox/machines/threadsMachine.ts +147 -0
- package/src/screens/inbox/workflow/dialog-threads-xstate.ts +163 -0
- package/tsconfig.json +11 -54
- package/lib/screens/inbox/components/DialogsListItem.js +0 -171
- package/lib/screens/inbox/components/DialogsListItem.js.map +0 -1
- package/lib/screens/inbox/components/ServiceDialogsListItem.js +0 -171
- 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,
|
|
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
|
-
|
|
37
|
+
useSelector(userSelector);
|
|
38
38
|
useDispatch();
|
|
39
39
|
const navigation = useNavigation();
|
|
40
40
|
useIsFocused();
|
|
41
41
|
const [refreshing, setRefresh] = useState(false);
|
|
42
|
-
const
|
|
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
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
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
|
-
|
|
140
|
+
limit: MESSAGES_PER_PAGE,
|
|
141
|
+
repliesLimit2: 5
|
|
104
142
|
});
|
|
105
143
|
}, []);
|
|
106
|
-
|
|
107
|
-
|
|
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
|
-
},
|
|
110
|
-
|
|
111
|
-
},
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
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(() =>
|
|
147
|
-
|
|
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":"kCAEY,IAAA,SAAA,qBAAAA,UAAL,KAAA;AACL,EAAAA,WAAA,MAAO,CAAA,GAAA,MAAA;AACP,EAAAA,WAAA,gBAAiB,CAAA,GAAA,gBAAA;AACjB,EAAAA,WAAA,gBAAiB,CAAA,GAAA,gBAAA;AACjB,EAAAA,WAAA,QAAS,CAAA,GAAA,QAAA;AACT,EAAAA,WAAA,OAAQ,CAAA,GAAA,OAAA;AALE,EAAAA,OAAAA,UAAAA;AAAA,CAAA,EAAA,SAAA,IAAA,EAAA;AAOA,IAAA,OAAA,qBAAAC,QAAL,KAAA;AACL,EAAAA,SAAA,YAAa,CAAA,GAAA,YAAA;AACb,EAAAA,SAAA,sBAAuB,CAAA,GAAA,sBAAA;AACvB,EAAAA,SAAA,oBAAqB,CAAA,GAAA,oBAAA;AACrB,EAAAA,SAAA,eAAgB,CAAA,GAAA,eAAA;AAChB,EAAAA,SAAA,aAAc,CAAA,GAAA,aAAA;AACd,EAAAA,SAAA,OAAQ,CAAA,GAAA,OAAA;AANE,EAAAA,OAAAA,QAAAA;AAAA,CAAA,EAAA,OAAA,IAAA,EAAA;AA2BuB,KAAM,CAAA;AAAA,EACvC,KAAO,EAAA;AAAA,IACL,SAAS,EAAC;AAAA,IASV,QAAQ;AAAC,GAmBX;AAAA,EACA,OAAS,EAAA;AAAA,IACP,mBAAmB,MAAO,CAAA;AAAA,MACxB,WAAW,CAAC;AAAA,QACV;AAAA,OACI,KAAA;AACJ,QAAI,IAAA,KAAA,CAAM,SAAS,YAAoB,mBAAA;AACrC,UAAA,OAAO,MAAM,IAAK,CAAA,SAAA;AAAA;AAEpB,QAAO,OAAA,MAAA;AAAA,OACT;AAAA,MACA,cAAc,CAAC;AAAA,QACb;AAAA,OACI,KAAA;AACJ,QAAI,IAAA,KAAA,CAAM,SAAS,YAAoB,mBAAA;AACrC,UAAA,OAAO,MAAM,IAAK,CAAA,YAAA;AAAA;AAEpB,QAAO,OAAA,MAAA;AAAA,OACT;AAAA,MACA,MAAM,CAAC;AAAA,QACL;AAAA,OACI,KAAA;AACJ,QAAI,IAAA,KAAA,CAAM,SAAS,YAAoB,mBAAA;AACrC,UAAA,OAAO,MAAM,IAAK,CAAA,IAAA;AAAA;AAEpB,QAAO,OAAA,MAAA;AAAA,OACT;AAAA,MACA,OAAS,EAAA,IAAA;AAAA,MACT,KAAO,EAAA;AAAA,KACR,CAAA;AAAA,IACD,kBAAkB,MAAO,CAAA;AAAA,MACvB,gBAAgB,CAAC;AAAA,QACf;AAAA,OACI,KAAA;AACJ,QAAI,IAAA,KAAA,CAAM,SAAS,oBAA4B,2BAAA;AAC7C,UAAA,OAAO,MAAM,IAAK,CAAA,cAAA;AAAA;AAEpB,QAAO,OAAA,IAAA;AAAA,OACT;AAAA,MACA,OAAS,EAAA;AAAA,KACV,CAAA;AAAA,IACD,YAAY,MAAO,CAAA;AAAA,MACjB,YAAY,CAAC;AAAA,QACX;AAAA,OACI,KAAA;AACJ,QAAI,IAAA,KAAA,CAAM,SAAS,aAAqB,oBAAA;AACtC,UAAA,OAAO,MAAM,IAAK,CAAA,UAAA;AAAA;AAEpB,QAAA,OAAO,EAAC;AAAA,OACV;AAAA,MACA,OAAS,EAAA;AAAA,KACV,CAAA;AAAA,IACD,UAAU,MAAO,CAAA;AAAA,MACf,OAAO,CAAC;AAAA,QACN;AAAA,OACI,KAAA;AACJ,QAAI,IAAA,KAAA,CAAM,SAAS,OAAe,cAAA;AAChC,UAAA,OAAO,MAAM,IAAK,CAAA,KAAA;AAAA;AAEpB,QAAO,OAAA,IAAA;AAAA,OACT;AAAA,MACA,OAAS,EAAA;AAAA,KACV,CAAA;AAAA,IACD,YAAY,MAAO,CAAA;AAAA,MACjB,OAAS,EAAA;AAAA,KACV;AAAA;AAEL,CAAC,EAAE,aAAc,CAAA;AAAA,EACf,EAAI,EAAA,eAAA;AAAA,EACJ,OAAS,EAAA,MAAA;AAAA,EACT,OAAS,EAAA;AAAA,IACP,SAAW,EAAA,MAAA;AAAA,IACX,YAAc,EAAA,MAAA;AAAA,IACd,IAAM,EAAA,MAAA;AAAA,IACN,cAAgB,EAAA,IAAA;AAAA,IAChB,YAAY,EAAC;AAAA,IACb,OAAS,EAAA,IAAA;AAAA,IACT,KAAO,EAAA;AAAA,GACT;AAAA,EACA,MAAQ,EAAA;AAAA,IACN,CAAC,MAAiB,cAAA;AAAA,MAChB,EAAI,EAAA;AAAA,QACF,CAAC,YAAqB,oBAAA;AAAA,UACpB,MAAQ,EAAA,gBAAA;AAAA,UACR,OAAS,EAAA;AAAA;AACX;AACF,KACF;AAAA,IACA,CAAC,gBAA2B,wBAAA;AAAA,MAC1B,EAAI,EAAA;AAAA,QACF,CAAC,oBAA6B,4BAAA;AAAA,UAC5B,MAAQ,EAAA,gBAAA;AAAA,UACR,OAAS,EAAA;AAAA,SACX;AAAA,QACA,CAAC,OAAgB,eAAA;AAAA,UACf,MAAQ,EAAA,OAAA;AAAA,UACR,OAAS,EAAA;AAAA;AACX;AACF,KACF;AAAA,IACA,CAAC,gBAA2B,wBAAA;AAAA,MAC1B,EAAI,EAAA;AAAA,QACF,CAAC,aAAsB,qBAAA;AAAA,UACrB,MAAQ,EAAA,QAAA;AAAA,UACR,OAAS,EAAA;AAAA,SACX;AAAA,QACA,CAAC,OAAgB,eAAA;AAAA,UACf,MAAQ,EAAA,OAAA;AAAA,UACR,OAAS,EAAA;AAAA;AACX;AACF,KACF;AAAA,IACA,CAAC,QAAmB,gBAAA;AAAA,MAClB,EAAI,EAAA;AAAA,QACF,CAAC,eAAwB,uBAAA;AAAA,UACvB,MAAQ,EAAA,gBAAA;AAAA,UACR,OAAS,EAAA;AAAA;AACX;AACF,KACF;AAAA,IACA,CAAC,OAAkB,eAAA;AAAA,MACjB,EAAI,EAAA;AAAA,QACF,CAAC,YAAqB,oBAAA;AAAA,UACpB,MAAQ,EAAA,gBAAA;AAAA,UACR,OAAS,EAAA;AAAA;AACX;AACF;AACF;AAEJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@messenger-box/platform-mobile",
|
|
3
|
-
"version": "10.0.3-alpha.
|
|
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.
|
|
26
|
-
"@messenger-box/platform-client": "10.0.3-alpha.
|
|
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": "
|
|
46
|
+
"gitHead": "b4e54a34578a1a63afbe7ab48644b86e5cc8858f"
|
|
47
47
|
}
|