@messenger-box/platform-mobile 10.0.3-alpha.23 → 10.0.3-alpha.232

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/lib/components/messages-container-ui/BuildModeView.js +428 -0
  2. package/lib/components/messages-container-ui/BuildModeView.js.map +1 -0
  3. package/lib/components/messages-container-ui/MessagesContainerUI.js +55 -0
  4. package/lib/components/messages-container-ui/MessagesContainerUI.js.map +1 -0
  5. package/lib/components/messages-container-ui/PlanModeView.js +336 -0
  6. package/lib/components/messages-container-ui/PlanModeView.js.map +1 -0
  7. package/lib/compute.js +2 -3
  8. package/lib/compute.js.map +1 -1
  9. package/lib/index.js +1 -1
  10. package/lib/index.js.map +1 -1
  11. package/lib/module.js.map +1 -1
  12. package/lib/queries/inboxQueries.js +62 -0
  13. package/lib/queries/inboxQueries.js.map +1 -0
  14. package/lib/routes.json +2 -3
  15. package/lib/screens/inbox/DialogMessages.js +8 -3
  16. package/lib/screens/inbox/DialogMessages.js.map +1 -1
  17. package/lib/screens/inbox/DialogThreadMessages.js +6 -11
  18. package/lib/screens/inbox/DialogThreadMessages.js.map +1 -1
  19. package/lib/screens/inbox/DialogThreads.js +9 -11
  20. package/lib/screens/inbox/DialogThreads.js.map +1 -1
  21. package/lib/screens/inbox/Inbox.js.map +1 -1
  22. package/lib/screens/inbox/components/CachedImage/consts.js +1 -1
  23. package/lib/screens/inbox/components/CachedImage/consts.js.map +1 -1
  24. package/lib/screens/inbox/components/CachedImage/index.js +125 -96
  25. package/lib/screens/inbox/components/CachedImage/index.js.map +1 -1
  26. package/lib/screens/inbox/components/DialogItem.js +160 -0
  27. package/lib/screens/inbox/components/DialogItem.js.map +1 -0
  28. package/lib/screens/inbox/components/GiftedChatInboxComponent.js +315 -0
  29. package/lib/screens/inbox/components/GiftedChatInboxComponent.js.map +1 -0
  30. package/lib/screens/inbox/components/SlackMessageContainer/ImageViewerModal.js +3 -1
  31. package/lib/screens/inbox/components/SlackMessageContainer/ImageViewerModal.js.map +1 -1
  32. package/lib/screens/inbox/components/SlackMessageContainer/PaymentMessage.js +194 -0
  33. package/lib/screens/inbox/components/SlackMessageContainer/PaymentMessage.js.map +1 -0
  34. package/lib/screens/inbox/components/SlackMessageContainer/SlackBubble.js +149 -36
  35. package/lib/screens/inbox/components/SlackMessageContainer/SlackBubble.js.map +1 -1
  36. package/lib/screens/inbox/components/SlackMessageContainer/SlackMessage.js +4 -5
  37. package/lib/screens/inbox/components/SlackMessageContainer/SlackMessage.js.map +1 -1
  38. package/lib/screens/inbox/components/SubscriptionHandler.js +22 -0
  39. package/lib/screens/inbox/components/SubscriptionHandler.js.map +1 -0
  40. package/lib/screens/inbox/components/ThreadsViewItem.js +2 -4
  41. package/lib/screens/inbox/components/ThreadsViewItem.js.map +1 -1
  42. package/lib/screens/inbox/config/config.js +4 -2
  43. package/lib/screens/inbox/config/config.js.map +1 -1
  44. package/lib/screens/inbox/containers/ConversationView.js +1093 -1090
  45. package/lib/screens/inbox/containers/ConversationView.js.map +1 -1
  46. package/lib/screens/inbox/containers/Dialogs.js +130 -577
  47. package/lib/screens/inbox/containers/Dialogs.js.map +1 -1
  48. package/lib/screens/inbox/containers/ThreadConversationView.js +864 -1408
  49. package/lib/screens/inbox/containers/ThreadConversationView.js.map +1 -1
  50. package/lib/screens/inbox/containers/ThreadsView.js +9 -15
  51. package/lib/screens/inbox/containers/ThreadsView.js.map +1 -1
  52. package/lib/screens/inbox/hooks/useInboxMessages.js +31 -0
  53. package/lib/screens/inbox/hooks/useInboxMessages.js.map +1 -0
  54. package/lib/screens/inbox/hooks/useSafeDialogThreadsMachine.js +1 -1
  55. package/lib/screens/inbox/hooks/useSafeDialogThreadsMachine.js.map +1 -1
  56. package/lib/screens/inbox/workflow/dialog-threads-xstate.js.map +1 -1
  57. package/package.json +10 -8
  58. package/CHANGELOG.md +0 -172
  59. package/jest.config.js +0 -24
  60. package/lib/screens/inbox/components/DialogsListItem.js +0 -548
  61. package/lib/screens/inbox/components/DialogsListItem.js.map +0 -1
  62. package/lib/screens/inbox/components/ServiceDialogsListItem.js +0 -489
  63. package/lib/screens/inbox/components/ServiceDialogsListItem.js.map +0 -1
  64. package/lib/screens/inbox/components/workflow/dialogs-list-item-xstate.js +0 -175
  65. package/lib/screens/inbox/components/workflow/dialogs-list-item-xstate.js.map +0 -1
  66. package/lib/screens/inbox/components/workflow/service-dialogs-list-item-xstate.js +0 -191
  67. package/lib/screens/inbox/components/workflow/service-dialogs-list-item-xstate.js.map +0 -1
  68. package/lib/screens/inbox/containers/workflow/conversation-xstate.js +0 -380
  69. package/lib/screens/inbox/containers/workflow/conversation-xstate.js.map +0 -1
  70. package/lib/screens/inbox/containers/workflow/dialogs-xstate.js +0 -211
  71. package/lib/screens/inbox/containers/workflow/dialogs-xstate.js.map +0 -1
  72. package/lib/screens/inbox/containers/workflow/thread-conversation-xstate.js +0 -438
  73. package/lib/screens/inbox/containers/workflow/thread-conversation-xstate.js.map +0 -1
  74. package/rollup.config.mjs +0 -45
  75. package/src/components/index.ts +0 -0
  76. package/src/compute.ts +0 -63
  77. package/src/index.ts +0 -7
  78. package/src/module.ts +0 -10
  79. package/src/navigation/InboxNavigation.tsx +0 -102
  80. package/src/navigation/index.ts +0 -1
  81. package/src/screens/inbox/DialogMessages.tsx +0 -21
  82. package/src/screens/inbox/DialogThreadMessages.tsx +0 -97
  83. package/src/screens/inbox/DialogThreads.tsx +0 -125
  84. package/src/screens/inbox/Inbox.tsx +0 -17
  85. package/src/screens/inbox/components/CachedImage/consts.ts +0 -6
  86. package/src/screens/inbox/components/CachedImage/index.tsx +0 -223
  87. package/src/screens/inbox/components/DialogsHeader.tsx +0 -30
  88. package/src/screens/inbox/components/DialogsListItem.tsx +0 -819
  89. package/src/screens/inbox/components/ServiceDialogsListItem.tsx +0 -679
  90. package/src/screens/inbox/components/SlackMessageContainer/ImageViewerModal.tsx +0 -113
  91. package/src/screens/inbox/components/SlackMessageContainer/SlackBubble.tsx +0 -313
  92. package/src/screens/inbox/components/SlackMessageContainer/SlackMessage.tsx +0 -145
  93. package/src/screens/inbox/components/SlackMessageContainer/index.ts +0 -3
  94. package/src/screens/inbox/components/SmartLoader.tsx +0 -61
  95. package/src/screens/inbox/components/SupportServiceDialogsListItem.tsx +0 -301
  96. package/src/screens/inbox/components/ThreadsViewItem.tsx +0 -233
  97. package/src/screens/inbox/components/workflow/dialogs-list-item-xstate.ts +0 -145
  98. package/src/screens/inbox/components/workflow/service-dialogs-list-item-xstate.ts +0 -159
  99. package/src/screens/inbox/config/config.ts +0 -15
  100. package/src/screens/inbox/config/index.ts +0 -1
  101. package/src/screens/inbox/containers/ConversationView.tsx +0 -1784
  102. package/src/screens/inbox/containers/Dialogs.tsx +0 -829
  103. package/src/screens/inbox/containers/SupportServiceDialogs.tsx +0 -119
  104. package/src/screens/inbox/containers/ThreadConversationView.tsx +0 -2295
  105. package/src/screens/inbox/containers/ThreadsView.tsx +0 -224
  106. package/src/screens/inbox/containers/workflow/apollo/handleResult.ts +0 -20
  107. package/src/screens/inbox/containers/workflow/conversation-xstate.ts +0 -313
  108. package/src/screens/inbox/containers/workflow/dialogs-xstate.ts +0 -196
  109. package/src/screens/inbox/containers/workflow/thread-conversation-xstate.ts +0 -401
  110. package/src/screens/inbox/hooks/useSafeDialogThreadsMachine.ts +0 -136
  111. package/src/screens/inbox/index.ts +0 -37
  112. package/src/screens/inbox/machines/threadsMachine.ts +0 -147
  113. package/src/screens/inbox/workflow/dialog-threads-xstate.ts +0 -163
  114. package/src/screens/index.ts +0 -4
  115. package/tsconfig.json +0 -13
  116. package/webpack.config.js +0 -58
@@ -1,548 +0,0 @@
1
- import React__default,{useRef,useCallback,useEffect,useMemo,useState}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';import {Actions,BaseState}from'./workflow/dialogs-list-item-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
- 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
- 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
- const LastMessageComponent = ({
152
- subscribeToNewMessages,
153
- title,
154
- lastMessage,
155
- channelId
156
- }) => {
157
- var _a, _b;
158
- React__default.useEffect(() => {
159
- const unsubscribe = subscribeToNewMessages();
160
- return () => {
161
- if (unsubscribe && typeof unsubscribe === "function") {
162
- unsubscribe();
163
- }
164
- };
165
- }, [channelId, subscribeToNewMessages]);
166
- React__default.useEffect(() => {
167
- var _a2, _b2, _c, _d;
168
- console.log(`LastMessageComponent rendered for channel ${channelId}:`, {
169
- hasLastMessage: !!lastMessage,
170
- messageId: lastMessage == null ? void 0 : lastMessage.id,
171
- messageText: ((_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 ? "..." : ""),
172
- date: (lastMessage == null ? void 0 : lastMessage.createdAt) ? new Date(lastMessage.createdAt).toISOString() : "none",
173
- hasFiles: ((_d = (_c = lastMessage == null ? void 0 : lastMessage.files) == null ? void 0 : _c.data) == null ? void 0 : _d.length) > 0
174
- });
175
- }, [lastMessage, channelId]);
176
- const count = 30;
177
- const channelTitle = (title == null ? void 0 : title.slice(0, count)) + ((title == null ? void 0 : title.length) > count ? "..." : "") || "";
178
- let displayMessage = "No messages yet";
179
- if (lastMessage) {
180
- if (lastMessage.message && lastMessage.message.trim() !== "") {
181
- displayMessage = lastMessage.message;
182
- } else if (((_b = (_a = lastMessage.files) == null ? void 0 : _a.data) == null ? void 0 : _b.length) > 0) {
183
- displayMessage = "\u{1F4CE} File attachment";
184
- } else {
185
- displayMessage = "(Empty message)";
186
- }
187
- }
188
- const displayDate = (lastMessage == null ? void 0 : lastMessage.createdAt) ? createdAtText(lastMessage.createdAt) : (lastMessage == null ? void 0 : lastMessage.updatedAt) ? createdAtText(lastMessage.updatedAt) : "";
189
- return /* @__PURE__ */ React__default.createElement(HStack, { space: "sm", className: "flex-1 justify-between" }, /* @__PURE__ */ React__default.createElement(Box, { className: "flex-[0.8]" }, /* @__PURE__ */ React__default.createElement(Text, { color: colors.gray[600], className: "text-base text-wrap flex-wrap font-semibold" }, channelTitle), /* @__PURE__ */ React__default.createElement(Text, { color: colors.gray[600], numberOfLines: 1 }, displayMessage)), /* @__PURE__ */ React__default.createElement(Box, { className: "flex-[0.2]" }, /* @__PURE__ */ React__default.createElement(Text, { color: colors.gray[500] }, displayDate)));
190
- };
191
- const DialogsListItemComponent = function DialogsListItem2({
192
- currentUser,
193
- selectedChannelId,
194
- channel,
195
- onOpen,
196
- forceRefresh
197
- }) {
198
- var _a, _b, _c, _d, _e;
199
- const isMountedRef = useRef(true);
200
- const parentId = null;
201
- const [state, send] = useSafeMachine();
202
- useCallback(() => {
203
- try {
204
- return (state == null ? void 0 : state.context) || {};
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]);
226
- const {
227
- data: messagesQuery,
228
- loading: messageLoading,
229
- refetch: refetchMessages,
230
- subscribeToMore
231
- } = useMessagesQuery({
232
- variables: {
233
- channelId: (_a = channel == null ? void 0 : channel.id) == null ? void 0 : _a.toString(),
234
- parentId,
235
- limit: 10
236
- },
237
- fetchPolicy: "cache-and-network",
238
- refetchWritePolicy: "overwrite",
239
- nextFetchPolicy: "network-only",
240
- onCompleted: (data) => {
241
- var _a2, _b2;
242
- 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");
243
- },
244
- onError: (error) => {
245
- console.error(`Error fetching messages for channel ${channel == null ? void 0 : channel.id}:`, error);
246
- }
247
- });
248
- const {
249
- data: newMessage,
250
- loading: newMsgLoading,
251
- error: newMsgError
252
- } = useOnChatMessageAddedSubscription({
253
- variables: {
254
- channelId: (_b = channel == null ? void 0 : channel.id) == null ? void 0 : _b.toString()
255
- }
256
- });
257
- useEffect(() => {
258
- if (channel == null ? void 0 : channel.id) {
259
- safeSend({
260
- type: Actions.INITIAL_CONTEXT,
261
- data: {
262
- channelId: channel.id,
263
- currentUser
264
- }
265
- });
266
- }
267
- return () => {
268
- isMountedRef.current = false;
269
- };
270
- }, [channel == null ? void 0 : channel.id, currentUser, safeSend]);
271
- const refreshDialogState = useCallback(() => {
272
- var _a2;
273
- if ((channel == null ? void 0 : channel.id) && isMountedRef.current) {
274
- console.log("Forcing dialog state refresh for channel:", channel == null ? void 0 : channel.id);
275
- safeSend({
276
- type: Actions.START_LOADING
277
- });
278
- const options = {
279
- channelId: (_a2 = channel == null ? void 0 : channel.id) == null ? void 0 : _a2.toString(),
280
- parentId,
281
- limit: 10
282
- };
283
- refetchMessages(options).then((result) => {
284
- var _a3, _b2, _c2;
285
- if (((_b2 = (_a3 = result.data) == null ? void 0 : _a3.messages) == null ? void 0 : _b2.data) && isMountedRef.current) {
286
- console.log(`Refreshed ${result.data.messages.data.length} messages for channel ${channel == null ? void 0 : channel.id}`);
287
- 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());
288
- const latestMessage = sortedMessages.length > 0 ? sortedMessages[0] : null;
289
- if (latestMessage) {
290
- console.log("Latest message after refresh:", {
291
- id: latestMessage.id,
292
- message: ((_c2 = latestMessage.message) == null ? void 0 : _c2.substring(0, 20)) + "...",
293
- date: latestMessage.createdAt || latestMessage.updatedAt
294
- });
295
- }
296
- safeSend({
297
- type: Actions.UPDATE_MESSAGES,
298
- data: {
299
- messages: result.data.messages.data
300
- }
301
- });
302
- }
303
- safeSend({
304
- type: Actions.STOP_LOADING
305
- });
306
- }).catch((err) => {
307
- console.error("Error refreshing dialog state:", err);
308
- safeSend({
309
- type: Actions.STOP_LOADING
310
- });
311
- });
312
- }
313
- }, [channel == null ? void 0 : channel.id, refetchMessages, safeSend, isMountedRef, parentId]);
314
- const firstRenderRef = useRef(true);
315
- useRef(0);
316
- useFocusEffect(React__default.useCallback(() => {
317
- if (!(channel == null ? void 0 : channel.id))
318
- return;
319
- console.log("DialogsListItem focused for channel:", channel == null ? void 0 : channel.id);
320
- if (firstRenderRef.current) {
321
- console.log("Skipping initial focus refresh for channel:", channel == null ? void 0 : channel.id);
322
- firstRenderRef.current = false;
323
- return;
324
- }
325
- console.log("FOCUS EFFECT: Force refetching messages on navigation back for channel:", channel == null ? void 0 : channel.id);
326
- safeSend({
327
- type: Actions.START_LOADING
328
- });
329
- const fetchFreshData = async () => {
330
- var _a2, _b2, _c2, _d2, _e2, _f;
331
- try {
332
- const options = {
333
- channelId: (_a2 = channel == null ? void 0 : channel.id) == null ? void 0 : _a2.toString(),
334
- parentId,
335
- limit: 10
336
- };
337
- const result = await refetchMessages(options);
338
- 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 = (_e2 = result == null ? void 0 : result.data) == null ? void 0 : _e2.messages) == null ? void 0 : _f.data) && isMountedRef.current) {
340
- const currentMessages = safeContextProperty("messages", []);
341
- const fetchedMessages = result.data.messages.data;
342
- console.log("Data comparison:", {
343
- currentCount: currentMessages.length,
344
- fetchedCount: fetchedMessages.length,
345
- isDifferent: JSON.stringify(currentMessages) !== JSON.stringify(fetchedMessages)
346
- });
347
- safeSend({
348
- type: Actions.UPDATE_MESSAGES,
349
- data: {
350
- messages: fetchedMessages
351
- }
352
- });
353
- }
354
- } catch (error) {
355
- console.error("Error refetching messages on focus:", error);
356
- } finally {
357
- if (isMountedRef.current) {
358
- safeSend({
359
- type: Actions.STOP_LOADING
360
- });
361
- }
362
- }
363
- };
364
- fetchFreshData();
365
- return () => {
366
- };
367
- }, [channel == null ? void 0 : channel.id, refetchMessages, safeSend, parentId, isMountedRef]));
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]);
393
- useEffect(() => {
394
- if ((channel == null ? void 0 : channel.id) && isMountedRef.current) {
395
- const timer = setTimeout(() => {
396
- if (isMountedRef.current) {
397
- console.log("Initial data refresh for channel:", channel.id);
398
- refreshDialogState();
399
- }
400
- }, 100);
401
- return () => {
402
- clearTimeout(timer);
403
- };
404
- }
405
- }, [channel == null ? void 0 : channel.id, refreshDialogState, isMountedRef]);
406
- useEffect(() => {
407
- if (forceRefresh && (channel == null ? void 0 : channel.id) && isMountedRef.current) {
408
- console.log(`Force refreshing messages for channel ${channel == null ? void 0 : channel.id} due to forceRefresh prop`);
409
- const timer = setTimeout(() => {
410
- var _a2;
411
- if (isMountedRef.current && refetchMessages) {
412
- refetchMessages({
413
- channelId: (_a2 = channel == null ? void 0 : channel.id) == null ? void 0 : _a2.toString(),
414
- parentId,
415
- limit: 10
416
- }).then((result) => {
417
- var _a3, _b2;
418
- if (((_b2 = (_a3 = result == null ? void 0 : result.data) == null ? void 0 : _a3.messages) == null ? void 0 : _b2.data) && isMountedRef.current) {
419
- console.log(`Force refresh completed for channel ${channel == null ? void 0 : channel.id} with ${result.data.messages.data.length} messages`);
420
- safeSend({
421
- type: Actions.UPDATE_MESSAGES,
422
- data: {
423
- messages: result.data.messages.data
424
- }
425
- });
426
- }
427
- }).catch((error) => {
428
- console.error(`Error force refreshing channel ${channel == null ? void 0 : channel.id}:`, error);
429
- });
430
- }
431
- }, 50);
432
- return () => clearTimeout(timer);
433
- }
434
- }, [channel == null ? void 0 : channel.id, forceRefresh, isMountedRef, refetchMessages, safeSend, parentId]);
435
- const channelMembers = useMemo(() => {
436
- var _a2, _b2, _c2;
437
- return (_c2 = (_b2 = (_a2 = channel == null ? void 0 : channel.members) == null ? void 0 : _a2.filter((ch) => {
438
- var _a3, _b3;
439
- return ((_a3 = ch == null ? void 0 : ch.user) == null ? void 0 : _a3.id) != (currentUser == null ? void 0 : currentUser.id) && ((_b3 = ch == null ? void 0 : ch.user) == null ? void 0 : _b3.__typename) == "UserAccount";
440
- })) == null ? void 0 : _b2.map((m) => m == null ? void 0 : m.user)) != null ? _c2 : null;
441
- }, [currentUser, channel]);
442
- useEffect(() => {
443
- var _a2, _b2, _c2;
444
- if (channelMembers && isMountedRef.current) {
445
- const titleString = (_c2 = (_b2 = (_a2 = channelMembers == null ? void 0 : channelMembers.map((u) => {
446
- var _a3;
447
- return (u == null ? void 0 : u.givenName) + " " + ((_a3 = u == null ? void 0 : u.familyName) != null ? _a3 : "");
448
- })) == null ? void 0 : _a2.filter((mu) => mu)) == null ? void 0 : _b2.join(", ")) != null ? _c2 : "";
449
- safeSend({
450
- type: Actions.SET_TITLE,
451
- data: {
452
- title: titleString
453
- }
454
- });
455
- }
456
- }, [channelMembers, safeSend, isMountedRef]);
457
- const title = useMemo(() => {
458
- const titleString = safeContextProperty("title", "");
459
- const length = 30;
460
- return titleString.length > length ? titleString.substring(0, length - 3) + "..." : titleString;
461
- }, [safeContextProperty]);
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]);
466
- useEffect(() => {
467
- var _a2, _b2;
468
- console.log(`DialogsListItem for channel ${channel == null ? void 0 : channel.id}: `, {
469
- hasLastMessage: !!lastMessage,
470
- 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: safeContextProperty("messages", []).length
472
- });
473
- }, [channel == null ? void 0 : channel.id, lastMessage, safeContextProperty]);
474
- return /* @__PURE__ */ React__default.createElement(Pressable, { onPress: () => onOpen(channel == null ? void 0 : channel.id, title), className: "flex-1 border-gray-200 rounded-md dark:border-gray-600 dark:bg-gray-700", style: {
475
- borderBottomWidth: 1,
476
- borderColor: "#e5e7eb",
477
- marginVertical: 0,
478
- 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 && ((_e = channelMembers == null ? void 0 : channelMembers.slice(0, 1)) == null ? void 0 : _e.map((ch, i) => {
480
- var _a2;
481
- 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
- width: "100%",
483
- height: "100%",
484
- backgroundColor: "#e5e7eb",
485
- borderRadius: 5
486
- }, className: "items-center justify-center bg-gray-200 rounded-md" }, /* @__PURE__ */ React__default.createElement(Text, { style: {
487
- fontSize: 12,
488
- fontWeight: "bold",
489
- color: "#000"
490
- } }, channelMembers == null ? void 0 : channelMembers.length)), (channelMembers == null ? void 0 : channelMembers.length) == 1 && /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(AvatarImage, { alt: "user image", style: {
491
- borderRadius: 6,
492
- borderWidth: 2,
493
- borderColor: "#fff"
494
- }, source: {
495
- uri: ch == null ? void 0 : ch.picture
496
- } }), /* @__PURE__ */ React__default.createElement(AvatarBadge, { style: {
497
- width: 10,
498
- height: 10
499
- } })));
500
- })))), /* @__PURE__ */ React__default.createElement(Box, { className: "flex-1" }, /* @__PURE__ */ React__default.createElement(LastMessageComponent, { key: `last-msg-${(lastMessage == null ? void 0 : lastMessage.id) || "none"}-${safeContextProperty("messages", []).length}`, title, lastMessage, channelId: channel == null ? void 0 : channel.id, subscribeToNewMessages: () => {
501
- var _a2;
502
- return subscribeToMore({
503
- document: OnChatMessageAddedDocument,
504
- variables: {
505
- channelId: (_a2 = channel.id) == null ? void 0 : _a2.toString()
506
- },
507
- updateQuery: (prev, {
508
- subscriptionData
509
- }) => {
510
- var _a3, _b2, _c2, _d2, _e2, _f;
511
- if (!subscriptionData.data)
512
- return prev;
513
- const newMessage2 = (_a3 = subscriptionData == null ? void 0 : subscriptionData.data) == null ? void 0 : _a3.chatMessageAdded;
514
- console.log("New message added (subscription):", {
515
- channelId: channel.id,
516
- messageId: newMessage2.id,
517
- message: ((_b2 = newMessage2.message) == null ? void 0 : _b2.substring(0, 20)) + "...",
518
- hasFiles: ((_d2 = (_c2 = newMessage2 == null ? void 0 : newMessage2.files) == null ? void 0 : _c2.data) == null ? void 0 : _d2.length) > 0,
519
- filesCount: ((_f = (_e2 = newMessage2 == null ? void 0 : newMessage2.files) == null ? void 0 : _e2.data) == null ? void 0 : _f.length) || 0,
520
- timestamp: newMessage2.createdAt || newMessage2.updatedAt
521
- });
522
- if (isMountedRef.current) {
523
- console.log("Updating messages with new subscription message");
524
- const currentMessages = safeContextProperty("messages", []);
525
- const updatedMessages = [...currentMessages, newMessage2];
526
- safeSend({
527
- type: Actions.UPDATE_MESSAGES,
528
- data: {
529
- messages: updatedMessages,
530
- directLastMessage: newMessage2
531
- }
532
- });
533
- }
534
- const existingMessages = prev == null ? void 0 : prev.messages;
535
- const previousData = (existingMessages == null ? void 0 : existingMessages.data) ? [...existingMessages.data, newMessage2] : [];
536
- const totalMsgCount = (existingMessages == null ? void 0 : existingMessages.totalCount) + 1;
537
- const merged = __spreadProps(__spreadValues({}, prev), {
538
- messages: __spreadProps(__spreadValues({}, existingMessages), {
539
- data: previousData,
540
- totalCount: totalMsgCount
541
- })
542
- });
543
- return merged;
544
- }
545
- });
546
- } }))));
547
- };
548
- const DialogsListItem = React__default.memo(DialogsListItemComponent);export{DialogsListItem,DialogsListItemComponent};//# sourceMappingURL=DialogsListItem.js.map