@messenger-box/platform-mobile 10.0.3-alpha.5 → 10.0.3-alpha.50
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 +92 -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,171 +0,0 @@
|
|
|
1
|
-
import React__default,{useMemo}from'react';import {HStack,Box,Text,Pressable,Avatar,AvatarFallbackText,AvatarImage}from'@admin-layout/gluestack-ui-mobile';import {isToday,isYesterday,format}from'date-fns';import {useFocusEffect}from'@react-navigation/native';import {useThreadMessagesQuery,OnThreadCreatedUpdatedDocument}from'common/lib/generated/generated.js';import {startCase}from'lodash-es';var __defProp = Object.defineProperty;
|
|
2
|
-
var __defProps = Object.defineProperties;
|
|
3
|
-
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
|
-
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
7
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
-
var __spreadValues = (a, b) => {
|
|
9
|
-
for (var prop in b || (b = {}))
|
|
10
|
-
if (__hasOwnProp.call(b, prop))
|
|
11
|
-
__defNormalProp(a, prop, b[prop]);
|
|
12
|
-
if (__getOwnPropSymbols)
|
|
13
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
14
|
-
if (__propIsEnum.call(b, prop))
|
|
15
|
-
__defNormalProp(a, prop, b[prop]);
|
|
16
|
-
}
|
|
17
|
-
return a;
|
|
18
|
-
};
|
|
19
|
-
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
|
-
const createdAtText = (value) => {
|
|
21
|
-
if (!value)
|
|
22
|
-
return "";
|
|
23
|
-
let date = new Date(value);
|
|
24
|
-
if (isToday(date))
|
|
25
|
-
return "Today";
|
|
26
|
-
if (isYesterday(date))
|
|
27
|
-
return "Yesterday";
|
|
28
|
-
return format(new Date(value), "MMM dd, yyyy");
|
|
29
|
-
};
|
|
30
|
-
const ServiceDialogsListItemComponent = function DialogsListItem({
|
|
31
|
-
currentUser,
|
|
32
|
-
selectedChannelId,
|
|
33
|
-
channel,
|
|
34
|
-
onOpen,
|
|
35
|
-
refreshing,
|
|
36
|
-
role
|
|
37
|
-
}) {
|
|
38
|
-
var _a, _b, _c, _d;
|
|
39
|
-
const [servicePostParentId, setServicePostParentId] = React__default.useState(null);
|
|
40
|
-
const {
|
|
41
|
-
data: threadMessages,
|
|
42
|
-
loading: threadMessageLoading,
|
|
43
|
-
error,
|
|
44
|
-
refetch: refetchThreadMessages,
|
|
45
|
-
subscribeToMore
|
|
46
|
-
} = useThreadMessagesQuery({
|
|
47
|
-
variables: {
|
|
48
|
-
channelId: (_a = channel == null ? void 0 : channel.id) == null ? void 0 : _a.toString(),
|
|
49
|
-
role,
|
|
50
|
-
limit: 2
|
|
51
|
-
},
|
|
52
|
-
fetchPolicy: "cache-and-network"
|
|
53
|
-
});
|
|
54
|
-
useFocusEffect(React__default.useCallback(() => {
|
|
55
|
-
var _a2;
|
|
56
|
-
refetchThreadMessages({
|
|
57
|
-
channelId: (_a2 = channel == null ? void 0 : channel.id) == null ? void 0 : _a2.toString(),
|
|
58
|
-
role,
|
|
59
|
-
limit: 2
|
|
60
|
-
});
|
|
61
|
-
return () => {
|
|
62
|
-
};
|
|
63
|
-
}, [refreshing]));
|
|
64
|
-
const lastMessage = useMemo(() => {
|
|
65
|
-
var _a2, _b2, _c2, _d2, _e, _f, _g;
|
|
66
|
-
if (!((_b2 = (_a2 = threadMessages == null ? void 0 : threadMessages.threadMessages) == null ? void 0 : _a2.data) == null ? void 0 : _b2.length)) {
|
|
67
|
-
return null;
|
|
68
|
-
}
|
|
69
|
-
const {
|
|
70
|
-
data
|
|
71
|
-
} = threadMessages.threadMessages;
|
|
72
|
-
const replies = (_e = (_d2 = (_c2 = data == null ? void 0 : data.map((t) => t == null ? void 0 : t.replies)) == null ? void 0 : _c2.flat(1)) == null ? void 0 : _d2.filter((p) => (p == null ? void 0 : p.message) !== "")) != null ? _e : [];
|
|
73
|
-
if (replies == null ? void 0 : replies.length) {
|
|
74
|
-
return replies[0];
|
|
75
|
-
} else {
|
|
76
|
-
const post = (_g = (_f = data == null ? void 0 : data.find((t) => {
|
|
77
|
-
var _a3;
|
|
78
|
-
return ((_a3 = t == null ? void 0 : t.post) == null ? void 0 : _a3.message) !== "";
|
|
79
|
-
})) != null ? _f : data == null ? void 0 : data.find((t) => {
|
|
80
|
-
return t == null ? void 0 : t.post;
|
|
81
|
-
})) != null ? _g : null;
|
|
82
|
-
return post ? post == null ? void 0 : post.post : null;
|
|
83
|
-
}
|
|
84
|
-
}, [threadMessages]);
|
|
85
|
-
React__default.useEffect(() => {
|
|
86
|
-
if (lastMessage) {
|
|
87
|
-
const sParentId = (lastMessage == null ? void 0 : lastMessage.parentId) ? lastMessage == null ? void 0 : lastMessage.parentId : lastMessage == null ? void 0 : lastMessage.id;
|
|
88
|
-
setServicePostParentId(sParentId);
|
|
89
|
-
}
|
|
90
|
-
}, [lastMessage]);
|
|
91
|
-
const creatorAndMembersId = React__default.useMemo(() => {
|
|
92
|
-
var _a2, _b2, _c2, _d2, _e, _f;
|
|
93
|
-
if (!(channel == null ? void 0 : channel.members))
|
|
94
|
-
return null;
|
|
95
|
-
const membersIds = (_c2 = (_b2 = (_a2 = channel == null ? void 0 : channel.members) == null ? void 0 : _a2.filter((m) => {
|
|
96
|
-
var _a3;
|
|
97
|
-
return m !== null && ((_a3 = m == null ? void 0 : m.user) == null ? void 0 : _a3.id) !== (currentUser == null ? void 0 : currentUser.id);
|
|
98
|
-
})) == null ? void 0 : _b2.map((mu) => {
|
|
99
|
-
var _a3;
|
|
100
|
-
return (_a3 = mu == null ? void 0 : mu.user) == null ? void 0 : _a3.id;
|
|
101
|
-
})) != null ? _c2 : [];
|
|
102
|
-
const creatorId = (_d2 = channel == null ? void 0 : channel.creator) == null ? void 0 : _d2.id;
|
|
103
|
-
const mergedIds = (_e = [].concat(membersIds, creatorId)) != null ? _e : [];
|
|
104
|
-
return (_f = mergedIds == null ? void 0 : mergedIds.filter((m, pos) => (mergedIds == null ? void 0 : mergedIds.indexOf(m)) === pos)) != null ? _f : [];
|
|
105
|
-
}, [channel]);
|
|
106
|
-
const postParentId = React__default.useMemo(() => {
|
|
107
|
-
var _a2;
|
|
108
|
-
if (!(creatorAndMembersId == null ? void 0 : creatorAndMembersId.length))
|
|
109
|
-
return null;
|
|
110
|
-
return (creatorAndMembersId == null ? void 0 : creatorAndMembersId.length) && (creatorAndMembersId == null ? void 0 : creatorAndMembersId.includes(currentUser == null ? void 0 : currentUser.id)) ? null : (lastMessage == null ? void 0 : lastMessage.parentId) ? lastMessage == null ? void 0 : lastMessage.parentId : (_a2 = lastMessage == null ? void 0 : lastMessage.id) != null ? _a2 : 0;
|
|
111
|
-
}, [creatorAndMembersId, lastMessage]);
|
|
112
|
-
return /* @__PURE__ */ React__default.createElement(Pressable, { onPress: () => (channel == null ? void 0 : channel.id) !== selectedChannelId && onOpen(channel == null ? void 0 : channel.id, channel == null ? void 0 : channel.title, postParentId), borderWidth: "$1", borderRadius: "$md", borderColor: "$trueGray200", flex: 1, "$dark-borderColor": "$coolGray600", "$dark-backgroundColor": "$trueGray700", "$light-backgroundColor": "$trueGray50", "$light-borderColor": "$trueGray200" }, /* @__PURE__ */ React__default.createElement(
|
|
113
|
-
HStack,
|
|
114
|
-
{
|
|
115
|
-
py: "$3",
|
|
116
|
-
space: "sm",
|
|
117
|
-
w: "100%",
|
|
118
|
-
flex: 1,
|
|
119
|
-
justifyContent: "space-between",
|
|
120
|
-
alignItems: "center"
|
|
121
|
-
},
|
|
122
|
-
/* @__PURE__ */ React__default.createElement(Box, { flex: 0.1, alignItems: "flex-start", pl: "$3" }, /* @__PURE__ */ React__default.createElement(Avatar, { key: "service-channels-key-" + (channel == null ? void 0 : channel.id), bg: "transparent", size: "sm", top: "$0", right: "$0", zIndex: 1 }, /* @__PURE__ */ React__default.createElement(AvatarFallbackText, null, " ", startCase((_c = (_b = channel == null ? void 0 : channel.creator) == null ? void 0 : _b.username) == null ? void 0 : _c.charAt(0))), /* @__PURE__ */ React__default.createElement(AvatarImage, { alt: "user image", style: {
|
|
123
|
-
borderRadius: 6,
|
|
124
|
-
borderWidth: 2,
|
|
125
|
-
borderColor: "#fff"
|
|
126
|
-
}, source: {
|
|
127
|
-
uri: (_d = channel == null ? void 0 : channel.creator) == null ? void 0 : _d.picture
|
|
128
|
-
} }))),
|
|
129
|
-
/* @__PURE__ */ React__default.createElement(Box, { flex: 0.9 }, /* @__PURE__ */ React__default.createElement(ServiceChannelWithLastMessage, { channel, lastMessage, subscribeToNewMessages: () => {
|
|
130
|
-
var _a2;
|
|
131
|
-
return subscribeToMore({
|
|
132
|
-
document: OnThreadCreatedUpdatedDocument,
|
|
133
|
-
variables: {
|
|
134
|
-
channelId: (_a2 = channel == null ? void 0 : channel.id) == null ? void 0 : _a2.toString(),
|
|
135
|
-
postParentId: postParentId ? servicePostParentId : null
|
|
136
|
-
},
|
|
137
|
-
updateQuery: (prev, {
|
|
138
|
-
subscriptionData
|
|
139
|
-
}) => {
|
|
140
|
-
var _a3, _b2, _c2, _d2, _e, _f, _g, _h;
|
|
141
|
-
if (!subscriptionData.data)
|
|
142
|
-
return prev;
|
|
143
|
-
const newPostThreadData = (_b2 = (_a3 = subscriptionData == null ? void 0 : subscriptionData.data) == null ? void 0 : _a3.threadCreatedUpdated) == null ? void 0 : _b2.data;
|
|
144
|
-
const newMessage = (_d2 = (_c2 = subscriptionData == null ? void 0 : subscriptionData.data) == null ? void 0 : _c2.threadCreatedUpdated) == null ? void 0 : _d2.lastMessage;
|
|
145
|
-
const data = (_g = (_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), {
|
|
146
|
-
replies: [...t == null ? void 0 : t.replies, newMessage],
|
|
147
|
-
replyCount: newPostThreadData == null ? void 0 : newPostThreadData.replyCount,
|
|
148
|
-
lastReplyAt: newPostThreadData == null ? void 0 : newPostThreadData.lastReplyAt,
|
|
149
|
-
updatedAt: newPostThreadData == null ? void 0 : newPostThreadData.updatedAt
|
|
150
|
-
}) : t)) != null ? _g : [];
|
|
151
|
-
return Object.assign({}, prev, {
|
|
152
|
-
threadMessages: __spreadProps(__spreadValues({}, prev == null ? void 0 : prev.threadMessages), {
|
|
153
|
-
totalCount: (_h = newPostThreadData == null ? void 0 : newPostThreadData.totalCount) != null ? _h : 0,
|
|
154
|
-
data: (data == null ? void 0 : data.length) > 0 ? data : [newPostThreadData]
|
|
155
|
-
})
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
});
|
|
159
|
-
} }))
|
|
160
|
-
));
|
|
161
|
-
};
|
|
162
|
-
const ServiceChannelWithLastMessage = React__default.memo(({
|
|
163
|
-
channel,
|
|
164
|
-
lastMessage,
|
|
165
|
-
subscribeToNewMessages
|
|
166
|
-
}) => {
|
|
167
|
-
var _a;
|
|
168
|
-
React__default.useEffect(() => subscribeToNewMessages(), []);
|
|
169
|
-
return /* @__PURE__ */ React__default.createElement(HStack, { space: "sm", flex: 1, justifyContent: "center", alignItems: "center" }, /* @__PURE__ */ React__default.createElement(Box, { flex: 0.8 }, /* @__PURE__ */ React__default.createElement(Text, { color: "$trueGray600", fontSize: "$lg", flexWrap: "wrap", fontWeight: "$semibold" }, channel == null ? void 0 : channel.title), /* @__PURE__ */ React__default.createElement(Text, { color: "$trueGray600", numberOfLines: 1 }, (_a = lastMessage == null ? void 0 : lastMessage.message) != null ? _a : "")), /* @__PURE__ */ React__default.createElement(Box, { flex: 0.2 }, /* @__PURE__ */ React__default.createElement(Text, { color: "$trueGray500" }, lastMessage ? createdAtText(lastMessage == null ? void 0 : lastMessage.createdAt) : "")));
|
|
170
|
-
});
|
|
171
|
-
const ServiceDialogsListItem = React__default.memo(ServiceDialogsListItemComponent);export{ServiceDialogsListItem,ServiceDialogsListItemComponent};//# sourceMappingURL=ServiceDialogsListItem.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ServiceDialogsListItem.js","sources":["../../../../src/screens/inbox/components/ServiceDialogsListItem.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport {\n Text,\n Image,\n Pressable,\n HStack,\n Box,\n AvatarGroup,\n Avatar,\n AvatarFallbackText,\n AvatarImage,\n AvatarBadge,\n View,\n} from '@admin-layout/gluestack-ui-mobile';\nimport { format, isToday, isYesterday } from 'date-fns';\nimport { useFocusEffect } from '@react-navigation/native';\nimport { IChannel, IUserAccount } from 'common';\nimport {\n useOnThreadCreatedUpdatedSubscription,\n useOnThreadChatMessageAddedSubscription,\n useThreadMessagesQuery,\n OnThreadCreatedUpdatedDocument as THREAD_CHAT_ADDED,\n OnThreadChatMessageAddedDocument as CHAT_MESSAGE_ADDED,\n} from 'common/lib/generated/generated.js';\nimport { startCase } from 'lodash-es';\n\nconst createdAtText = (value: string) => {\n if (!value) return '';\n let date = new Date(value);\n if (isToday(date)) return 'Today';\n if (isYesterday(date)) return 'Yesterday';\n return format(new Date(value), 'MMM dd, yyyy');\n};\n\nexport interface IDialogListChannel extends IChannel {\n users: IUserAccount[];\n}\n\nexport interface IDialogListItemProps {\n currentUser?: any;\n users?: any;\n selectedChannelId?: any;\n channel?: any;\n onOpen: (id: any, title: any, postParentId?: any) => void;\n refreshing: boolean;\n role: any;\n}\n\n/**\n * TODO:\n * - Get Reservation info: reservation date, status\n * - Add ability to get property information: name, logo\n */\nexport const ServiceDialogsListItemComponent: React.FC<IDialogListItemProps> = function DialogsListItem({\n currentUser,\n // users,\n selectedChannelId,\n channel,\n onOpen,\n refreshing,\n role,\n}) {\n const [servicePostParentId, setServicePostParentId] = React.useState(null);\n const {\n data: threadMessages,\n loading: threadMessageLoading,\n error,\n refetch: refetchThreadMessages,\n subscribeToMore,\n } = useThreadMessagesQuery({\n variables: {\n channelId: channel?.id?.toString(),\n role,\n limit: 2,\n },\n fetchPolicy: 'cache-and-network',\n });\n\n useFocusEffect(\n React.useCallback(() => {\n // Do something when the screen is focused\n // refetchMessages({ channelId: channel?.id?.toString(), limit: 25 });\n refetchThreadMessages({ channelId: channel?.id?.toString(), role, limit: 2 });\n return () => {\n // Do something when the screen is unfocused\n // Useful for cleanup functions\n };\n }, [refreshing]),\n );\n\n const lastMessage = useMemo(() => {\n if (!threadMessages?.threadMessages?.data?.length) {\n return null;\n }\n const { data }: any = threadMessages.threadMessages;\n const replies =\n data\n ?.map((t: any) => t?.replies)\n ?.flat(1)\n ?.filter((p: any) => p?.message !== '') ?? [];\n if (replies?.length) {\n return replies[0];\n // return replies[replies.length - 1];\n } else {\n const post =\n data?.find((t: any) => {\n return t?.post?.message !== '';\n }) ??\n data?.find((t: any) => {\n return t?.post;\n }) ??\n null;\n return post ? post?.post : null;\n }\n }, [threadMessages]);\n\n React.useEffect(() => {\n if (lastMessage) {\n const sParentId = lastMessage?.parentId ? lastMessage?.parentId : lastMessage?.id;\n setServicePostParentId(sParentId);\n }\n }, [lastMessage]);\n\n const creatorAndMembersId = React.useMemo(() => {\n if (!channel?.members) return null;\n const membersIds: any =\n channel?.members\n ?.filter((m: any) => m !== null && m?.user?.id !== currentUser?.id)\n ?.map((mu: any) => mu?.user?.id) ?? [];\n const creatorId: any = channel?.creator?.id;\n const mergedIds: any = [].concat(membersIds, creatorId) ?? [];\n return mergedIds?.filter((m: any, pos: any) => mergedIds?.indexOf(m) === pos) ?? [];\n }, [channel]);\n\n const postParentId = React.useMemo(() => {\n if (!creatorAndMembersId?.length) return null;\n\n return creatorAndMembersId?.length && creatorAndMembersId?.includes(currentUser?.id)\n ? null\n : lastMessage?.parentId\n ? lastMessage?.parentId\n : lastMessage?.id ?? 0;\n }, [creatorAndMembersId, lastMessage]);\n\n // const { data: threadCreatedUpdated } = useOnThreadCreatedUpdatedSubscription({\n // variables: {\n // channelId: channel?.id?.toString(),\n // postParentId:\n // postParentId == null\n // ? null\n // : lastMessage?.parentId\n // ? lastMessage?.parentId ?? null\n // : lastMessage?.id ?? null,\n // },\n // });\n\n // React.useEffect(() => {\n // if (threadCreatedUpdated?.threadCreatedUpdated?.data) {\n // refetchThreadMessages({ channelId: channel?.id?.toString(), role, limit: 2 });\n // }\n // }, [threadCreatedUpdated]);\n\n return (\n <Pressable\n onPress={() => channel?.id !== selectedChannelId && onOpen(channel?.id, channel?.title, postParentId)}\n borderWidth={'$1'}\n borderRadius={'$md'}\n borderColor={'$trueGray200'}\n flex={1}\n $dark-borderColor=\"$coolGray600\"\n $dark-backgroundColor=\"$trueGray700\"\n $light-backgroundColor=\"$trueGray50\"\n $light-borderColor=\"$trueGray200\"\n >\n <HStack\n // px={2}\n // pl={3}\n py={'$3'}\n space={'sm'}\n w={'100%'}\n flex={1}\n // direction={'row'}\n justifyContent={'space-between'}\n alignItems={'center'}\n >\n <Box flex={0.1} alignItems={'flex-start'} pl={'$3'}>\n <Avatar\n key={'service-channels-key-' + channel?.id}\n bg={'transparent'}\n size={'sm'}\n top={'$0'}\n right={'$0'}\n zIndex={1}\n >\n <AvatarFallbackText> {startCase(channel?.creator?.username?.charAt(0))}</AvatarFallbackText>\n <AvatarImage\n alt=\"user image\"\n style={{ borderRadius: 6, borderWidth: 2, borderColor: '#fff' }}\n source={{\n uri: channel?.creator?.picture,\n }}\n />\n </Avatar>\n </Box>\n <Box flex={0.9}>\n <ServiceChannelWithLastMessage\n channel={channel}\n lastMessage={lastMessage}\n subscribeToNewMessages={() =>\n subscribeToMore({\n document: THREAD_CHAT_ADDED,\n variables: {\n channelId: channel?.id?.toString(),\n postParentId: postParentId ? servicePostParentId : null,\n },\n updateQuery: (prev, { subscriptionData }: any) => {\n if (!subscriptionData.data) return prev;\n\n const newPostThreadData: any = subscriptionData?.data?.threadCreatedUpdated?.data;\n const newMessage: any = subscriptionData?.data?.threadCreatedUpdated?.lastMessage;\n const data =\n prev?.threadMessages?.data?.map((t: any) =>\n t.id === newPostThreadData?.id\n ? {\n ...t,\n replies: [...t?.replies, newMessage],\n replyCount: newPostThreadData?.replyCount,\n lastReplyAt: newPostThreadData?.lastReplyAt,\n updatedAt: newPostThreadData?.updatedAt,\n }\n : t,\n ) ?? [];\n\n return Object.assign({}, prev, {\n threadMessages: {\n ...prev?.threadMessages,\n totalCount: newPostThreadData?.totalCount ?? 0,\n data: data?.length > 0 ? data : [newPostThreadData],\n // totalCount: prev?.threadMessages?.totalCount + 1,\n //data: data,\n },\n });\n },\n })\n }\n />\n {/* <Text\n flex={1}\n color=\"gray.600\"\n p={0}\n m={0}\n w={'100%'}\n justifyContent={''}\n fontSize=\"lg\"\n fontWeight=\"semibold\"\n >\n {title}\n </Text> */}\n {/* <Text flex={0.1} color=\"gray.600\">\n {lastMessage?.message ?? ''}\n </Text> */}\n </Box>\n {/* <Text flex={0.2} color=\"gray.500\">\n {lastMessage ? createdAtText(lastMessage?.createdAt) : ''}\n </Text> */}\n </HStack>\n </Pressable>\n );\n};\n\nconst ServiceChannelWithLastMessage = React.memo(({ channel, lastMessage, subscribeToNewMessages }: any) => {\n React.useEffect(() => subscribeToNewMessages(), []);\n return (\n <HStack space={'sm'} flex={1} justifyContent={'center'} alignItems={'center'}>\n <Box flex={0.8}>\n <Text color=\"$trueGray600\" fontSize=\"$lg\" flexWrap={'wrap'} fontWeight=\"$semibold\">\n {channel?.title}\n </Text>\n <Text color=\"$trueGray600\" numberOfLines={1}>\n {/* {creatorAndMembersId?.length && creatorAndMembersId?.includes(currentUser?.id)\n ? lastMessageCreatorAndMembers?.message ?? ''\n : lastMessage?.message ?? ''} */}\n {lastMessage?.message ?? ''}\n </Text>\n </Box>\n\n <Box flex={0.2}>\n {/* {creatorAndMembersId?.length && creatorAndMembersId?.includes(currentUser?.id) ? (\n <Text color=\"gray.500\">\n {lastMessageCreatorAndMembers\n ? createdAtText(lastMessageCreatorAndMembers?.createdAt)\n : ''}\n </Text>\n ) : (\n <Text color=\"gray.500\">{lastMessage ? createdAtText(lastMessage?.createdAt) : ''}</Text>\n )} */}\n <Text color=\"$trueGray500\">{lastMessage ? createdAtText(lastMessage?.createdAt) : ''}</Text>\n </Box>\n </HStack>\n );\n});\n\nexport const ServiceDialogsListItem = React.memo(ServiceDialogsListItemComponent);\n"],"names":["React","_a","_b","_c","_d","THREAD_CHAT_ADDED"],"mappings":"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"}
|