@messenger-box/platform-mobile 10.0.3-alpha.34 → 10.0.3-alpha.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/lib/screens/inbox/components/CachedImage/index.js +125 -93
- package/lib/screens/inbox/components/CachedImage/index.js.map +1 -1
- package/lib/screens/inbox/components/DialogsListItem.js +80 -256
- package/lib/screens/inbox/components/DialogsListItem.js.map +1 -1
- package/lib/screens/inbox/components/ServiceDialogsListItem.js +222 -324
- package/lib/screens/inbox/components/ServiceDialogsListItem.js.map +1 -1
- package/lib/screens/inbox/components/SlackMessageContainer/SlackBubble.js +0 -2
- package/lib/screens/inbox/components/SlackMessageContainer/SlackBubble.js.map +1 -1
- package/lib/screens/inbox/containers/ConversationView.js +487 -888
- package/lib/screens/inbox/containers/ConversationView.js.map +1 -1
- package/lib/screens/inbox/containers/Dialogs.js +243 -547
- package/lib/screens/inbox/containers/Dialogs.js.map +1 -1
- package/lib/screens/inbox/containers/ThreadConversationView.js +409 -1364
- package/lib/screens/inbox/containers/ThreadConversationView.js.map +1 -1
- package/package.json +4 -4
- package/src/screens/inbox/components/CachedImage/index.tsx +191 -140
- package/src/screens/inbox/components/DialogsListItem.tsx +112 -345
- package/src/screens/inbox/components/ServiceDialogsListItem.tsx +316 -437
- package/src/screens/inbox/components/SlackMessageContainer/SlackBubble.tsx +2 -4
- package/src/screens/inbox/containers/ConversationView.tsx +676 -993
- package/src/screens/inbox/containers/ConversationView.tsx.bk +1467 -0
- package/src/screens/inbox/containers/Dialogs.tsx +345 -636
- package/src/screens/inbox/containers/ThreadConversationView.tsx +661 -1887
- package/lib/screens/inbox/components/workflow/dialogs-list-item-xstate.js +0 -175
- package/lib/screens/inbox/components/workflow/dialogs-list-item-xstate.js.map +0 -1
- package/lib/screens/inbox/components/workflow/service-dialogs-list-item-xstate.js +0 -191
- package/lib/screens/inbox/components/workflow/service-dialogs-list-item-xstate.js.map +0 -1
- package/lib/screens/inbox/containers/workflow/conversation-xstate.js +0 -380
- package/lib/screens/inbox/containers/workflow/conversation-xstate.js.map +0 -1
- package/lib/screens/inbox/containers/workflow/dialogs-xstate.js +0 -211
- package/lib/screens/inbox/containers/workflow/dialogs-xstate.js.map +0 -1
- package/lib/screens/inbox/containers/workflow/thread-conversation-xstate.js +0 -438
- package/lib/screens/inbox/containers/workflow/thread-conversation-xstate.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React__default,{useRef,
|
|
1
|
+
import React__default,{useRef,useState,useEffect,useCallback,useMemo}from'react';import {Pressable,HStack,Box,AvatarGroup,Avatar,AvatarFallbackText,AvatarBadge,Text,AvatarImage}from'@admin-layout/gluestack-ui-mobile';import {isToday,isYesterday,format}from'date-fns';import {useFocusEffect}from'@react-navigation/native';import {useMessagesQuery,useOnChatMessageAddedSubscription,OnChatMessageAddedDocument}from'common/graphql';import {startCase}from'lodash-es';import colors from'tailwindcss/colors';var __defProp = Object.defineProperty;
|
|
2
2
|
var __defProps = Object.defineProperties;
|
|
3
3
|
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
4
|
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
@@ -27,127 +27,6 @@ const createdAtText = (value) => {
|
|
|
27
27
|
return "Yesterday";
|
|
28
28
|
return format(new Date(value), "MMM dd, yyyy");
|
|
29
29
|
};
|
|
30
|
-
function useSafeMachine(machine) {
|
|
31
|
-
const [state, setState] = useState({
|
|
32
|
-
context: {
|
|
33
|
-
channelId: null,
|
|
34
|
-
currentUser: null,
|
|
35
|
-
messages: [],
|
|
36
|
-
loading: false,
|
|
37
|
-
error: null,
|
|
38
|
-
title: "",
|
|
39
|
-
channelMembers: [],
|
|
40
|
-
lastMessage: null
|
|
41
|
-
},
|
|
42
|
-
value: BaseState.Idle,
|
|
43
|
-
matches: (stateValue) => stateValue === BaseState.Idle
|
|
44
|
-
});
|
|
45
|
-
const send = useCallback((event) => {
|
|
46
|
-
try {
|
|
47
|
-
if (event.type === Actions.INITIAL_CONTEXT) {
|
|
48
|
-
setState((prev) => {
|
|
49
|
-
var _a, _b;
|
|
50
|
-
return __spreadProps(__spreadValues({}, prev), {
|
|
51
|
-
context: __spreadProps(__spreadValues({}, prev.context), {
|
|
52
|
-
channelId: ((_a = event.data) == null ? void 0 : _a.channelId) || null,
|
|
53
|
-
currentUser: ((_b = event.data) == null ? void 0 : _b.currentUser) || null,
|
|
54
|
-
loading: true
|
|
55
|
-
}),
|
|
56
|
-
value: BaseState.FetchingMessages
|
|
57
|
-
});
|
|
58
|
-
});
|
|
59
|
-
} else if (event.type === Actions.UPDATE_MESSAGES) {
|
|
60
|
-
setState((prev) => {
|
|
61
|
-
var _a, _b, _c, _d, _e, _f;
|
|
62
|
-
if ((_a = event.data) == null ? void 0 : _a.messages) {
|
|
63
|
-
const messages = event.data.messages;
|
|
64
|
-
if ((_b = event.data) == null ? void 0 : _b.directLastMessage) {
|
|
65
|
-
console.log("Using direct last message from event:", {
|
|
66
|
-
id: event.data.directLastMessage.id,
|
|
67
|
-
message: ((_c = event.data.directLastMessage.message) == null ? void 0 : _c.substring(0, 20)) + "..."
|
|
68
|
-
});
|
|
69
|
-
return __spreadProps(__spreadValues({}, prev), {
|
|
70
|
-
context: __spreadProps(__spreadValues({}, prev.context), {
|
|
71
|
-
messages,
|
|
72
|
-
lastMessage: event.data.directLastMessage,
|
|
73
|
-
loading: false
|
|
74
|
-
})
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
const sortedMessages = [...messages].sort((a, b) => new Date((b == null ? void 0 : b.updatedAt) || (b == null ? void 0 : b.createdAt)).getTime() - new Date((a == null ? void 0 : a.updatedAt) || (a == null ? void 0 : a.createdAt)).getTime());
|
|
78
|
-
const newLastMessage = sortedMessages.length > 0 ? sortedMessages[0] : null;
|
|
79
|
-
if (newLastMessage) {
|
|
80
|
-
console.log("Setting last message from bulk update:", {
|
|
81
|
-
id: newLastMessage.id,
|
|
82
|
-
message: ((_d = newLastMessage.message) == null ? void 0 : _d.substring(0, 20)) + "...",
|
|
83
|
-
date: newLastMessage.updatedAt || newLastMessage.createdAt
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
return __spreadProps(__spreadValues({}, prev), {
|
|
87
|
-
context: __spreadProps(__spreadValues({}, prev.context), {
|
|
88
|
-
messages,
|
|
89
|
-
lastMessage: newLastMessage,
|
|
90
|
-
loading: false
|
|
91
|
-
})
|
|
92
|
-
});
|
|
93
|
-
} else if ((_e = event.data) == null ? void 0 : _e.message) {
|
|
94
|
-
const newMessage = event.data.message;
|
|
95
|
-
const updatedMessages = [...prev.context.messages, newMessage];
|
|
96
|
-
console.log("Setting new message as lastMessage from subscription:", {
|
|
97
|
-
id: newMessage.id,
|
|
98
|
-
message: ((_f = newMessage.message) == null ? void 0 : _f.substring(0, 20)) + "...",
|
|
99
|
-
date: newMessage.createdAt || newMessage.updatedAt
|
|
100
|
-
});
|
|
101
|
-
return __spreadProps(__spreadValues({}, prev), {
|
|
102
|
-
context: __spreadProps(__spreadValues({}, prev.context), {
|
|
103
|
-
messages: updatedMessages,
|
|
104
|
-
lastMessage: newMessage,
|
|
105
|
-
loading: false
|
|
106
|
-
})
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
return prev;
|
|
110
|
-
});
|
|
111
|
-
} else if (event.type === Actions.SET_TITLE) {
|
|
112
|
-
setState((prev) => {
|
|
113
|
-
var _a;
|
|
114
|
-
return __spreadProps(__spreadValues({}, prev), {
|
|
115
|
-
context: __spreadProps(__spreadValues({}, prev.context), {
|
|
116
|
-
title: ((_a = event.data) == null ? void 0 : _a.title) || ""
|
|
117
|
-
})
|
|
118
|
-
});
|
|
119
|
-
});
|
|
120
|
-
} else if (event.type === Actions.START_LOADING) {
|
|
121
|
-
setState((prev) => __spreadProps(__spreadValues({}, prev), {
|
|
122
|
-
context: __spreadProps(__spreadValues({}, prev.context), {
|
|
123
|
-
loading: true
|
|
124
|
-
})
|
|
125
|
-
}));
|
|
126
|
-
} else if (event.type === Actions.STOP_LOADING) {
|
|
127
|
-
setState((prev) => __spreadProps(__spreadValues({}, prev), {
|
|
128
|
-
context: __spreadProps(__spreadValues({}, prev.context), {
|
|
129
|
-
loading: false
|
|
130
|
-
})
|
|
131
|
-
}));
|
|
132
|
-
}
|
|
133
|
-
} catch (error) {
|
|
134
|
-
console.error("Error sending event to state machine:", error);
|
|
135
|
-
}
|
|
136
|
-
}, []);
|
|
137
|
-
const stateWithMatches = useMemo(() => {
|
|
138
|
-
return __spreadProps(__spreadValues({}, state), {
|
|
139
|
-
matches: (stateValue) => {
|
|
140
|
-
try {
|
|
141
|
-
return state.value === stateValue;
|
|
142
|
-
} catch (error) {
|
|
143
|
-
console.error(`Error in matches function:`, error);
|
|
144
|
-
return false;
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
});
|
|
148
|
-
}, [state]);
|
|
149
|
-
return [stateWithMatches, send];
|
|
150
|
-
}
|
|
151
30
|
const LastMessageComponent = ({
|
|
152
31
|
subscribeToNewMessages,
|
|
153
32
|
title,
|
|
@@ -195,34 +74,13 @@ const DialogsListItemComponent = function DialogsListItem2({
|
|
|
195
74
|
onOpen,
|
|
196
75
|
forceRefresh
|
|
197
76
|
}) {
|
|
198
|
-
var _a, _b, _c, _d
|
|
77
|
+
var _a, _b, _c, _d;
|
|
199
78
|
const isMountedRef = useRef(true);
|
|
200
79
|
const parentId = null;
|
|
201
|
-
const [
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
} catch (error) {
|
|
206
|
-
console.error("Error accessing state.context:", error);
|
|
207
|
-
return {};
|
|
208
|
-
}
|
|
209
|
-
}, [state]);
|
|
210
|
-
const safeContextProperty = useCallback((property, defaultValue = null) => {
|
|
211
|
-
var _a2, _b2;
|
|
212
|
-
try {
|
|
213
|
-
return (_b2 = (_a2 = state == null ? void 0 : state.context) == null ? void 0 : _a2[property]) != null ? _b2 : defaultValue;
|
|
214
|
-
} catch (error) {
|
|
215
|
-
console.error(`Error accessing state.context.${property}:`, error);
|
|
216
|
-
return defaultValue;
|
|
217
|
-
}
|
|
218
|
-
}, [state]);
|
|
219
|
-
const safeSend = useCallback((event) => {
|
|
220
|
-
try {
|
|
221
|
-
send(event);
|
|
222
|
-
} catch (error) {
|
|
223
|
-
console.error("Error sending event to state machine:", error, event);
|
|
224
|
-
}
|
|
225
|
-
}, [send]);
|
|
80
|
+
const [loading, setLoading] = useState(false);
|
|
81
|
+
const [title, setTitle] = useState("");
|
|
82
|
+
const [messages, setMessages] = useState([]);
|
|
83
|
+
const [lastMessage, setLastMessage] = useState(null);
|
|
226
84
|
const {
|
|
227
85
|
data: messagesQuery,
|
|
228
86
|
loading: messageLoading,
|
|
@@ -238,8 +96,15 @@ const DialogsListItemComponent = function DialogsListItem2({
|
|
|
238
96
|
refetchWritePolicy: "overwrite",
|
|
239
97
|
nextFetchPolicy: "network-only",
|
|
240
98
|
onCompleted: (data) => {
|
|
241
|
-
var _a2, _b2;
|
|
99
|
+
var _a2, _b2, _c2;
|
|
242
100
|
console.log(`Completed message query for channel ${channel == null ? void 0 : channel.id}:`, ((_b2 = (_a2 = data == null ? void 0 : data.messages) == null ? void 0 : _a2.data) == null ? void 0 : _b2.length) ? "Has messages" : "No messages");
|
|
101
|
+
if ((_c2 = data == null ? void 0 : data.messages) == null ? void 0 : _c2.data) {
|
|
102
|
+
setMessages(data.messages.data);
|
|
103
|
+
const sortedMessages = [...data.messages.data].sort((a, b) => new Date((b == null ? void 0 : b.updatedAt) || (b == null ? void 0 : b.createdAt)).getTime() - new Date((a == null ? void 0 : a.updatedAt) || (a == null ? void 0 : a.createdAt)).getTime());
|
|
104
|
+
if (sortedMessages.length > 0) {
|
|
105
|
+
setLastMessage(sortedMessages[0]);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
243
108
|
},
|
|
244
109
|
onError: (error) => {
|
|
245
110
|
console.error(`Error fetching messages for channel ${channel == null ? void 0 : channel.id}:`, error);
|
|
@@ -255,26 +120,16 @@ const DialogsListItemComponent = function DialogsListItem2({
|
|
|
255
120
|
}
|
|
256
121
|
});
|
|
257
122
|
useEffect(() => {
|
|
258
|
-
|
|
259
|
-
safeSend({
|
|
260
|
-
type: Actions.INITIAL_CONTEXT,
|
|
261
|
-
data: {
|
|
262
|
-
channelId: channel.id,
|
|
263
|
-
currentUser
|
|
264
|
-
}
|
|
265
|
-
});
|
|
266
|
-
}
|
|
123
|
+
isMountedRef.current = true;
|
|
267
124
|
return () => {
|
|
268
125
|
isMountedRef.current = false;
|
|
269
126
|
};
|
|
270
|
-
}, [
|
|
127
|
+
}, []);
|
|
271
128
|
const refreshDialogState = useCallback(() => {
|
|
272
129
|
var _a2;
|
|
273
130
|
if ((channel == null ? void 0 : channel.id) && isMountedRef.current) {
|
|
274
131
|
console.log("Forcing dialog state refresh for channel:", channel == null ? void 0 : channel.id);
|
|
275
|
-
|
|
276
|
-
type: Actions.START_LOADING
|
|
277
|
-
});
|
|
132
|
+
setLoading(true);
|
|
278
133
|
const options = {
|
|
279
134
|
channelId: (_a2 = channel == null ? void 0 : channel.id) == null ? void 0 : _a2.toString(),
|
|
280
135
|
parentId,
|
|
@@ -293,26 +148,17 @@ const DialogsListItemComponent = function DialogsListItem2({
|
|
|
293
148
|
date: latestMessage.createdAt || latestMessage.updatedAt
|
|
294
149
|
});
|
|
295
150
|
}
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
data: {
|
|
299
|
-
messages: result.data.messages.data
|
|
300
|
-
}
|
|
301
|
-
});
|
|
151
|
+
setMessages(result.data.messages.data);
|
|
152
|
+
setLastMessage(latestMessage);
|
|
302
153
|
}
|
|
303
|
-
|
|
304
|
-
type: Actions.STOP_LOADING
|
|
305
|
-
});
|
|
154
|
+
setLoading(false);
|
|
306
155
|
}).catch((err) => {
|
|
307
156
|
console.error("Error refreshing dialog state:", err);
|
|
308
|
-
|
|
309
|
-
type: Actions.STOP_LOADING
|
|
310
|
-
});
|
|
157
|
+
setLoading(false);
|
|
311
158
|
});
|
|
312
159
|
}
|
|
313
|
-
}, [channel == null ? void 0 : channel.id, refetchMessages,
|
|
160
|
+
}, [channel == null ? void 0 : channel.id, refetchMessages, isMountedRef, parentId]);
|
|
314
161
|
const firstRenderRef = useRef(true);
|
|
315
|
-
useRef(0);
|
|
316
162
|
useFocusEffect(React__default.useCallback(() => {
|
|
317
163
|
if (!(channel == null ? void 0 : channel.id))
|
|
318
164
|
return;
|
|
@@ -323,11 +169,9 @@ const DialogsListItemComponent = function DialogsListItem2({
|
|
|
323
169
|
return;
|
|
324
170
|
}
|
|
325
171
|
console.log("FOCUS EFFECT: Force refetching messages on navigation back for channel:", channel == null ? void 0 : channel.id);
|
|
326
|
-
|
|
327
|
-
type: Actions.START_LOADING
|
|
328
|
-
});
|
|
172
|
+
setLoading(true);
|
|
329
173
|
const fetchFreshData = async () => {
|
|
330
|
-
var _a2, _b2, _c2, _d2,
|
|
174
|
+
var _a2, _b2, _c2, _d2, _e, _f;
|
|
331
175
|
try {
|
|
332
176
|
const options = {
|
|
333
177
|
channelId: (_a2 = channel == null ? void 0 : channel.id) == null ? void 0 : _a2.toString(),
|
|
@@ -336,60 +180,31 @@ const DialogsListItemComponent = function DialogsListItem2({
|
|
|
336
180
|
};
|
|
337
181
|
const result = await refetchMessages(options);
|
|
338
182
|
console.log(`FOCUS EFFECT: Refetched ${((_d2 = (_c2 = (_b2 = result == null ? void 0 : result.data) == null ? void 0 : _b2.messages) == null ? void 0 : _c2.data) == null ? void 0 : _d2.length) || 0} messages for channel ${channel == null ? void 0 : channel.id}`);
|
|
339
|
-
if (((_f = (
|
|
340
|
-
const currentMessages =
|
|
183
|
+
if (((_f = (_e = result == null ? void 0 : result.data) == null ? void 0 : _e.messages) == null ? void 0 : _f.data) && isMountedRef.current) {
|
|
184
|
+
const currentMessages = messages;
|
|
341
185
|
const fetchedMessages = result.data.messages.data;
|
|
342
186
|
console.log("Data comparison:", {
|
|
343
187
|
currentCount: currentMessages.length,
|
|
344
188
|
fetchedCount: fetchedMessages.length,
|
|
345
189
|
isDifferent: JSON.stringify(currentMessages) !== JSON.stringify(fetchedMessages)
|
|
346
190
|
});
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
}
|
|
352
|
-
});
|
|
191
|
+
const sortedMessages = [...fetchedMessages].sort((a, b) => new Date((b == null ? void 0 : b.updatedAt) || (b == null ? void 0 : b.createdAt)).getTime() - new Date((a == null ? void 0 : a.updatedAt) || (a == null ? void 0 : a.createdAt)).getTime());
|
|
192
|
+
const latestMessage = sortedMessages.length > 0 ? sortedMessages[0] : null;
|
|
193
|
+
setMessages(fetchedMessages);
|
|
194
|
+
setLastMessage(latestMessage);
|
|
353
195
|
}
|
|
354
196
|
} catch (error) {
|
|
355
197
|
console.error("Error refetching messages on focus:", error);
|
|
356
198
|
} finally {
|
|
357
199
|
if (isMountedRef.current) {
|
|
358
|
-
|
|
359
|
-
type: Actions.STOP_LOADING
|
|
360
|
-
});
|
|
200
|
+
setLoading(false);
|
|
361
201
|
}
|
|
362
202
|
}
|
|
363
203
|
};
|
|
364
204
|
fetchFreshData();
|
|
365
205
|
return () => {
|
|
366
206
|
};
|
|
367
|
-
}, [channel == null ? void 0 : channel.id, refetchMessages,
|
|
368
|
-
React__default.useEffect(() => {
|
|
369
|
-
var _a2, _b2, _c2, _d2, _e2;
|
|
370
|
-
if (((_a2 = messagesQuery == null ? void 0 : messagesQuery.messages) == null ? void 0 : _a2.data) && isMountedRef.current) {
|
|
371
|
-
const messages = messagesQuery.messages.data;
|
|
372
|
-
const messagesWithFiles = messages.filter((msg) => {
|
|
373
|
-
var _a3, _b3;
|
|
374
|
-
return ((_b3 = (_a3 = msg == null ? void 0 : msg.files) == null ? void 0 : _a3.data) == null ? void 0 : _b3.length) > 0;
|
|
375
|
-
});
|
|
376
|
-
console.log(`Updating messages for channel ${channel == null ? void 0 : channel.id}, count:`, messages.length, `(${messagesWithFiles.length} with files)`);
|
|
377
|
-
if (messages.length > 0) {
|
|
378
|
-
console.log("First message sample:", {
|
|
379
|
-
id: messages[0].id,
|
|
380
|
-
message: ((_b2 = messages[0].message) == null ? void 0 : _b2.substring(0, 20)) + "...",
|
|
381
|
-
createdAt: messages[0].createdAt,
|
|
382
|
-
hasFiles: ((_e2 = (_d2 = (_c2 = messages[0]) == null ? void 0 : _c2.files) == null ? void 0 : _d2.data) == null ? void 0 : _e2.length) > 0
|
|
383
|
-
});
|
|
384
|
-
}
|
|
385
|
-
safeSend({
|
|
386
|
-
type: Actions.UPDATE_MESSAGES,
|
|
387
|
-
data: {
|
|
388
|
-
messages
|
|
389
|
-
}
|
|
390
|
-
});
|
|
391
|
-
}
|
|
392
|
-
}, [messagesQuery, safeSend, channel == null ? void 0 : channel.id, isMountedRef]);
|
|
207
|
+
}, [channel == null ? void 0 : channel.id, refetchMessages, messages, isMountedRef, parentId]));
|
|
393
208
|
useEffect(() => {
|
|
394
209
|
if ((channel == null ? void 0 : channel.id) && isMountedRef.current) {
|
|
395
210
|
const timer = setTimeout(() => {
|
|
@@ -417,12 +232,10 @@ const DialogsListItemComponent = function DialogsListItem2({
|
|
|
417
232
|
var _a3, _b2;
|
|
418
233
|
if (((_b2 = (_a3 = result == null ? void 0 : result.data) == null ? void 0 : _a3.messages) == null ? void 0 : _b2.data) && isMountedRef.current) {
|
|
419
234
|
console.log(`Force refresh completed for channel ${channel == null ? void 0 : channel.id} with ${result.data.messages.data.length} messages`);
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
}
|
|
425
|
-
});
|
|
235
|
+
const sortedMessages = [...result.data.messages.data].sort((a, b) => new Date((b == null ? void 0 : b.updatedAt) || (b == null ? void 0 : b.createdAt)).getTime() - new Date((a == null ? void 0 : a.updatedAt) || (a == null ? void 0 : a.createdAt)).getTime());
|
|
236
|
+
const latestMessage = sortedMessages.length > 0 ? sortedMessages[0] : null;
|
|
237
|
+
setMessages(result.data.messages.data);
|
|
238
|
+
setLastMessage(latestMessage);
|
|
426
239
|
}
|
|
427
240
|
}).catch((error) => {
|
|
428
241
|
console.error(`Error force refreshing channel ${channel == null ? void 0 : channel.id}:`, error);
|
|
@@ -431,7 +244,7 @@ const DialogsListItemComponent = function DialogsListItem2({
|
|
|
431
244
|
}, 50);
|
|
432
245
|
return () => clearTimeout(timer);
|
|
433
246
|
}
|
|
434
|
-
}, [channel == null ? void 0 : channel.id, forceRefresh, isMountedRef, refetchMessages,
|
|
247
|
+
}, [channel == null ? void 0 : channel.id, forceRefresh, isMountedRef, refetchMessages, parentId]);
|
|
435
248
|
const channelMembers = useMemo(() => {
|
|
436
249
|
var _a2, _b2, _c2;
|
|
437
250
|
return (_c2 = (_b2 = (_a2 = channel == null ? void 0 : channel.members) == null ? void 0 : _a2.filter((ch) => {
|
|
@@ -446,37 +259,54 @@ const DialogsListItemComponent = function DialogsListItem2({
|
|
|
446
259
|
var _a3;
|
|
447
260
|
return (u == null ? void 0 : u.givenName) + " " + ((_a3 = u == null ? void 0 : u.familyName) != null ? _a3 : "");
|
|
448
261
|
})) == null ? void 0 : _a2.filter((mu) => mu)) == null ? void 0 : _b2.join(", ")) != null ? _c2 : "";
|
|
449
|
-
|
|
450
|
-
type: Actions.SET_TITLE,
|
|
451
|
-
data: {
|
|
452
|
-
title: titleString
|
|
453
|
-
}
|
|
454
|
-
});
|
|
262
|
+
setTitle(titleString);
|
|
455
263
|
}
|
|
456
|
-
}, [channelMembers,
|
|
457
|
-
const
|
|
458
|
-
const titleString = safeContextProperty("title", "");
|
|
264
|
+
}, [channelMembers, isMountedRef]);
|
|
265
|
+
const displayTitle = useMemo(() => {
|
|
459
266
|
const length = 30;
|
|
460
|
-
return
|
|
461
|
-
}, [
|
|
462
|
-
const lastMessage = useMemo(() => {
|
|
463
|
-
const message = safeContextProperty("lastMessage", null);
|
|
464
|
-
return message;
|
|
465
|
-
}, [safeContextProperty, (_d = (_c = state.context) == null ? void 0 : _c.messages) == null ? void 0 : _d.length]);
|
|
267
|
+
return title.length > length ? title.substring(0, length - 3) + "..." : title;
|
|
268
|
+
}, [title]);
|
|
466
269
|
useEffect(() => {
|
|
467
270
|
var _a2, _b2;
|
|
468
271
|
console.log(`DialogsListItem for channel ${channel == null ? void 0 : channel.id}: `, {
|
|
469
272
|
hasLastMessage: !!lastMessage,
|
|
470
273
|
message: ((_a2 = lastMessage == null ? void 0 : lastMessage.message) == null ? void 0 : _a2.substring(0, 20)) + (((_b2 = lastMessage == null ? void 0 : lastMessage.message) == null ? void 0 : _b2.length) > 20 ? "..." : ""),
|
|
471
|
-
messagesCount:
|
|
274
|
+
messagesCount: messages.length
|
|
472
275
|
});
|
|
473
|
-
}, [channel == null ? void 0 : channel.id, lastMessage,
|
|
474
|
-
|
|
276
|
+
}, [channel == null ? void 0 : channel.id, lastMessage, messages.length]);
|
|
277
|
+
useEffect(() => {
|
|
278
|
+
var _a2;
|
|
279
|
+
if ((newMessage == null ? void 0 : newMessage.chatMessageAdded) && (channel == null ? void 0 : channel.id)) {
|
|
280
|
+
const incomingMessage = newMessage.chatMessageAdded;
|
|
281
|
+
if (messages.some((msg) => msg.id === incomingMessage.id)) {
|
|
282
|
+
console.log("Message already in local state, skipping update:", incomingMessage.id);
|
|
283
|
+
return;
|
|
284
|
+
}
|
|
285
|
+
console.log("New message received from subscription:", {
|
|
286
|
+
channelId: channel.id,
|
|
287
|
+
messageId: incomingMessage.id,
|
|
288
|
+
message: ((_a2 = incomingMessage.message) == null ? void 0 : _a2.substring(0, 20)) + "...",
|
|
289
|
+
timestamp: incomingMessage.createdAt
|
|
290
|
+
});
|
|
291
|
+
setMessages((prevMessages) => [...prevMessages, incomingMessage]);
|
|
292
|
+
setLastMessage(incomingMessage);
|
|
293
|
+
}
|
|
294
|
+
}, [newMessage, channel == null ? void 0 : channel.id, messages]);
|
|
295
|
+
useEffect(() => {
|
|
296
|
+
if ((channel == null ? void 0 : channel.lastMessage) && channel.lastMessage.id) {
|
|
297
|
+
console.log("Channel has lastMessage property:", channel.lastMessage.id);
|
|
298
|
+
if (!messages.some((msg) => msg.id === channel.lastMessage.id)) {
|
|
299
|
+
setMessages((prevMessages) => [...prevMessages, channel.lastMessage]);
|
|
300
|
+
setLastMessage(channel.lastMessage);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}, [(_c = channel == null ? void 0 : channel.lastMessage) == null ? void 0 : _c.id, messages]);
|
|
304
|
+
return /* @__PURE__ */ React__default.createElement(Pressable, { onPress: () => onOpen(channel == null ? void 0 : channel.id, displayTitle), className: "flex-1 border-gray-200 rounded-md dark:border-gray-600 dark:bg-gray-700", style: {
|
|
475
305
|
borderBottomWidth: 1,
|
|
476
306
|
borderColor: "#e5e7eb",
|
|
477
307
|
marginVertical: 0,
|
|
478
308
|
paddingHorizontal: 10
|
|
479
|
-
} }, /* @__PURE__ */ React__default.createElement(HStack, { space: "md", className: "flex-1 w-[100%] py-3 items-center" }, /* @__PURE__ */ React__default.createElement(Box, { className: "flex-[0.1] items-start pl-3" }, /* @__PURE__ */ React__default.createElement(AvatarGroup, null, channelMembers && (channelMembers == null ? void 0 : channelMembers.length) > 0 && ((
|
|
309
|
+
} }, /* @__PURE__ */ React__default.createElement(HStack, { space: "md", className: "flex-1 w-[100%] py-3 items-center" }, /* @__PURE__ */ React__default.createElement(Box, { className: "flex-[0.1] items-start pl-3" }, /* @__PURE__ */ React__default.createElement(AvatarGroup, null, channelMembers && (channelMembers == null ? void 0 : channelMembers.length) > 0 && ((_d = channelMembers == null ? void 0 : channelMembers.slice(0, 1)) == null ? void 0 : _d.map((ch, i) => {
|
|
480
310
|
var _a2;
|
|
481
311
|
return /* @__PURE__ */ React__default.createElement(Avatar, { key: "dialogs-list-" + i, size: "sm", className: `bg-transparent top-[${i == 1 ? "4" : "0"}] right-[${i == 1 ? "-2" : "0"}] z-[${i == 1 ? 5 : 1}]` }, /* @__PURE__ */ React__default.createElement(AvatarFallbackText, null, startCase((_a2 = ch == null ? void 0 : ch.username) == null ? void 0 : _a2.charAt(0))), (channelMembers == null ? void 0 : channelMembers.length) > 1 && /* @__PURE__ */ React__default.createElement(AvatarBadge, { style: {
|
|
482
312
|
width: "100%",
|
|
@@ -497,7 +327,7 @@ const DialogsListItemComponent = function DialogsListItem2({
|
|
|
497
327
|
width: 10,
|
|
498
328
|
height: 10
|
|
499
329
|
} })));
|
|
500
|
-
})))), /* @__PURE__ */ React__default.createElement(Box, { className: "flex-1" }, /* @__PURE__ */ React__default.createElement(LastMessageComponent, { key: `last-msg-${(lastMessage == null ? void 0 : lastMessage.id) || "none"}-${
|
|
330
|
+
})))), /* @__PURE__ */ React__default.createElement(Box, { className: "flex-1" }, /* @__PURE__ */ React__default.createElement(LastMessageComponent, { key: `last-msg-${(lastMessage == null ? void 0 : lastMessage.id) || "none"}-${messages.length}`, title: displayTitle, lastMessage, channelId: channel == null ? void 0 : channel.id, subscribeToNewMessages: () => {
|
|
501
331
|
var _a2;
|
|
502
332
|
return subscribeToMore({
|
|
503
333
|
document: OnChatMessageAddedDocument,
|
|
@@ -507,7 +337,7 @@ const DialogsListItemComponent = function DialogsListItem2({
|
|
|
507
337
|
updateQuery: (prev, {
|
|
508
338
|
subscriptionData
|
|
509
339
|
}) => {
|
|
510
|
-
var _a3, _b2, _c2, _d2,
|
|
340
|
+
var _a3, _b2, _c2, _d2, _e, _f;
|
|
511
341
|
if (!subscriptionData.data)
|
|
512
342
|
return prev;
|
|
513
343
|
const newMessage2 = (_a3 = subscriptionData == null ? void 0 : subscriptionData.data) == null ? void 0 : _a3.chatMessageAdded;
|
|
@@ -516,20 +346,14 @@ const DialogsListItemComponent = function DialogsListItem2({
|
|
|
516
346
|
messageId: newMessage2.id,
|
|
517
347
|
message: ((_b2 = newMessage2.message) == null ? void 0 : _b2.substring(0, 20)) + "...",
|
|
518
348
|
hasFiles: ((_d2 = (_c2 = newMessage2 == null ? void 0 : newMessage2.files) == null ? void 0 : _c2.data) == null ? void 0 : _d2.length) > 0,
|
|
519
|
-
filesCount: ((_f = (
|
|
349
|
+
filesCount: ((_f = (_e = newMessage2 == null ? void 0 : newMessage2.files) == null ? void 0 : _e.data) == null ? void 0 : _f.length) || 0,
|
|
520
350
|
timestamp: newMessage2.createdAt || newMessage2.updatedAt
|
|
521
351
|
});
|
|
522
352
|
if (isMountedRef.current) {
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
type: Actions.UPDATE_MESSAGES,
|
|
528
|
-
data: {
|
|
529
|
-
messages: updatedMessages,
|
|
530
|
-
directLastMessage: newMessage2
|
|
531
|
-
}
|
|
532
|
-
});
|
|
353
|
+
if (!messages.some((msg) => msg.id === newMessage2.id)) {
|
|
354
|
+
setMessages((prevMessages) => [...prevMessages, newMessage2]);
|
|
355
|
+
setLastMessage(newMessage2);
|
|
356
|
+
}
|
|
533
357
|
}
|
|
534
358
|
const existingMessages = prev == null ? void 0 : prev.messages;
|
|
535
359
|
const previousData = (existingMessages == null ? void 0 : existingMessages.data) ? [...existingMessages.data, newMessage2] : [];
|