@linktr.ee/messaging-react 1.9.0 โ 1.9.1-rc-1764214654
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/dist/index.js +437 -477
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/components/ChannelList/CustomChannelPreview.tsx +1 -1
- package/src/components/IconButton/IconButton.stories.tsx +1 -1
- package/src/components/MessagingShell/EmptyState.stories.tsx +0 -4
- package/src/components/MessagingShell/EmptyState.tsx +4 -38
- package/src/components/MessagingShell/ErrorState.tsx +1 -1
- package/src/components/MessagingShell/index.tsx +3 -21
package/dist/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { jsx as e, jsxs as
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import { StreamChatService as
|
|
5
|
-
import { Chat as
|
|
6
|
-
import { XIcon as
|
|
7
|
-
const
|
|
1
|
+
import { jsx as e, jsxs as u, Fragment as ue } from "react/jsx-runtime";
|
|
2
|
+
import k from "classnames";
|
|
3
|
+
import q, { createContext as ye, useContext as Se, useCallback as P, useState as I, useRef as z, useEffect as $ } from "react";
|
|
4
|
+
import { StreamChatService as ke } from "@linktr.ee/messaging-core";
|
|
5
|
+
import { Chat as Re, ChannelList as Fe, MessageInput as Te, useMessageInputContext as De, useMessageComposerHasSendableData as pe, SimpleAttachmentSelector as Me, QuotedMessagePreview as Pe, LinkPreviewList as Ue, AttachmentPreviewList as Oe, TextareaComposer as Le, Channel as _e, useChannelStateContext as me, Window as je, MessageList as Ae } from "stream-chat-react";
|
|
6
|
+
import { XIcon as fe, ArrowUpIcon as Be, ArrowLeftIcon as oe, DotsThreeIcon as ae, SpinnerGapIcon as ee, SignOutIcon as ze, ProhibitInsetIcon as ie, FlagIcon as $e, MagnifyingGlassIcon as He, ChatCircleDotsIcon as ce } from "@phosphor-icons/react";
|
|
7
|
+
const he = ye({
|
|
8
8
|
service: null,
|
|
9
9
|
client: null,
|
|
10
10
|
isConnected: !1,
|
|
@@ -15,7 +15,7 @@ const ge = Re({
|
|
|
15
15
|
refreshConnection: async () => {
|
|
16
16
|
},
|
|
17
17
|
debug: !1
|
|
18
|
-
}),
|
|
18
|
+
}), se = () => Se(he), gs = ({
|
|
19
19
|
children: t,
|
|
20
20
|
user: s,
|
|
21
21
|
serviceConfig: n,
|
|
@@ -25,8 +25,8 @@ const ge = Re({
|
|
|
25
25
|
debug: i = !1
|
|
26
26
|
}) => {
|
|
27
27
|
const l = P(
|
|
28
|
-
(
|
|
29
|
-
i && console.log(`๐ฅ [MessagingProvider] ${
|
|
28
|
+
(g, ...D) => {
|
|
29
|
+
i && console.log(`๐ฅ [MessagingProvider] ${g}`, ...D);
|
|
30
30
|
},
|
|
31
31
|
[i]
|
|
32
32
|
);
|
|
@@ -37,15 +37,15 @@ const ge = Re({
|
|
|
37
37
|
capabilities: Object.keys(a),
|
|
38
38
|
customization: Object.keys(c)
|
|
39
39
|
});
|
|
40
|
-
const [o, w] =
|
|
40
|
+
const [o, w] = I(null), [y, x] = I(null), [m, S] = I(!1), [h, b] = I(!1), [E, v] = I(null), R = z(!1), C = z({
|
|
41
41
|
userId: s == null ? void 0 : s.id,
|
|
42
42
|
apiKey: r,
|
|
43
43
|
serviceConfig: n,
|
|
44
44
|
capabilities: a,
|
|
45
45
|
customization: c
|
|
46
|
-
}),
|
|
47
|
-
|
|
48
|
-
renderCount:
|
|
46
|
+
}), F = z(0);
|
|
47
|
+
F.current++, l("๐ RENDER INFO", {
|
|
48
|
+
renderCount: F.current,
|
|
49
49
|
currentProps: { userId: s == null ? void 0 : s.id, apiKey: (r == null ? void 0 : r.substring(0, 8)) + "..." },
|
|
50
50
|
propChanges: {
|
|
51
51
|
userChanged: C.current.userId !== (s == null ? void 0 : s.id),
|
|
@@ -60,10 +60,10 @@ const ge = Re({
|
|
|
60
60
|
serviceConfig: n,
|
|
61
61
|
capabilities: a,
|
|
62
62
|
customization: c
|
|
63
|
-
},
|
|
64
|
-
const
|
|
63
|
+
}, $(() => {
|
|
64
|
+
const g = F.current;
|
|
65
65
|
if (l("๐ง SERVICE INIT EFFECT TRIGGERED", {
|
|
66
|
-
renderCount:
|
|
66
|
+
renderCount: g,
|
|
67
67
|
apiKey: !!r,
|
|
68
68
|
serviceConfig: !!n,
|
|
69
69
|
dependencies: {
|
|
@@ -74,50 +74,50 @@ const ge = Re({
|
|
|
74
74
|
}
|
|
75
75
|
}), !r || !n) {
|
|
76
76
|
l("โ ๏ธ SERVICE INIT SKIPPED", {
|
|
77
|
-
renderCount:
|
|
77
|
+
renderCount: g,
|
|
78
78
|
reason: "Missing apiKey or serviceConfig"
|
|
79
79
|
});
|
|
80
80
|
return;
|
|
81
81
|
}
|
|
82
82
|
l("๐ CREATING NEW SERVICE", {
|
|
83
|
-
renderCount:
|
|
83
|
+
renderCount: g,
|
|
84
84
|
apiKey: (r == null ? void 0 : r.substring(0, 8)) + "...",
|
|
85
85
|
serviceConfigChanged: C.current.serviceConfig !== n
|
|
86
86
|
});
|
|
87
|
-
const D = new
|
|
87
|
+
const D = new ke({
|
|
88
88
|
...n,
|
|
89
89
|
apiKey: r,
|
|
90
90
|
debug: i
|
|
91
91
|
});
|
|
92
92
|
return w(D), l("โ
SERVICE SET", {
|
|
93
|
-
renderCount:
|
|
93
|
+
renderCount: g,
|
|
94
94
|
serviceInstance: !!D
|
|
95
95
|
}), () => {
|
|
96
96
|
l("๐งน SERVICE CLEANUP", {
|
|
97
|
-
renderCount:
|
|
97
|
+
renderCount: g,
|
|
98
98
|
reason: "Effect cleanup"
|
|
99
99
|
}), D.disconnectUser().catch(console.error);
|
|
100
100
|
};
|
|
101
101
|
}, [r, n, i, l]);
|
|
102
|
-
const p =
|
|
103
|
-
|
|
104
|
-
var D,
|
|
102
|
+
const p = z(null);
|
|
103
|
+
$(() => {
|
|
104
|
+
var D, W;
|
|
105
105
|
if (l("๐ USER CONNECTION EFFECT TRIGGERED", {
|
|
106
106
|
hasService: !!o,
|
|
107
107
|
hasUser: !!s,
|
|
108
108
|
userId: s == null ? void 0 : s.id,
|
|
109
|
-
isConnecting:
|
|
109
|
+
isConnecting: R.current,
|
|
110
110
|
isConnected: m,
|
|
111
111
|
dependencies: { service: !!o, userId: s == null ? void 0 : s.id }
|
|
112
112
|
}), !o || !s) {
|
|
113
113
|
l("โ ๏ธ USER CONNECTION SKIPPED", "Missing service or user");
|
|
114
114
|
return;
|
|
115
115
|
}
|
|
116
|
-
if (
|
|
116
|
+
if (R.current) {
|
|
117
117
|
l("โ ๏ธ USER CONNECTION SKIPPED", "Already connecting");
|
|
118
118
|
return;
|
|
119
119
|
}
|
|
120
|
-
if (((D = p.current) == null ? void 0 : D.serviceId) === o && ((
|
|
120
|
+
if (((D = p.current) == null ? void 0 : D.serviceId) === o && ((W = p.current) == null ? void 0 : W.userId) === s.id) {
|
|
121
121
|
l(
|
|
122
122
|
"โ ๏ธ USER CONNECTION SKIPPED",
|
|
123
123
|
"Already connected this user with this service"
|
|
@@ -125,28 +125,28 @@ const ge = Re({
|
|
|
125
125
|
return;
|
|
126
126
|
}
|
|
127
127
|
(async () => {
|
|
128
|
-
l("๐ STARTING USER CONNECTION", { userId: s.id }),
|
|
128
|
+
l("๐ STARTING USER CONNECTION", { userId: s.id }), R.current = !0, b(!0), v(null);
|
|
129
129
|
try {
|
|
130
130
|
l("๐ CALLING SERVICE.CONNECTUSER", { userId: s.id });
|
|
131
|
-
const
|
|
132
|
-
|
|
131
|
+
const A = await o.connectUser(s);
|
|
132
|
+
x(A), S(!0), p.current = { serviceId: o, userId: s.id }, l("โ
USER CONNECTION SUCCESS", {
|
|
133
133
|
userId: s.id,
|
|
134
|
-
clientId:
|
|
134
|
+
clientId: A.userID
|
|
135
135
|
});
|
|
136
|
-
} catch (
|
|
137
|
-
const
|
|
138
|
-
v(
|
|
136
|
+
} catch (A) {
|
|
137
|
+
const U = A instanceof Error ? A.message : "Connection failed";
|
|
138
|
+
v(U), l("โ USER CONNECTION ERROR", {
|
|
139
139
|
userId: s.id,
|
|
140
|
-
error:
|
|
140
|
+
error: U
|
|
141
141
|
});
|
|
142
142
|
} finally {
|
|
143
|
-
b(!1),
|
|
143
|
+
b(!1), R.current = !1, l("๐ USER CONNECTION FINISHED", {
|
|
144
144
|
userId: s.id,
|
|
145
145
|
isConnected: m
|
|
146
146
|
});
|
|
147
147
|
}
|
|
148
148
|
})();
|
|
149
|
-
}, [o, s, l, m]),
|
|
149
|
+
}, [o, s, l, m]), $(() => (l("๐ CLEANUP EFFECT REGISTERED", {
|
|
150
150
|
hasService: !!o,
|
|
151
151
|
isConnected: m
|
|
152
152
|
}), () => {
|
|
@@ -158,7 +158,7 @@ const ge = Re({
|
|
|
158
158
|
isConnected: m
|
|
159
159
|
});
|
|
160
160
|
}), [o, m, l]);
|
|
161
|
-
const
|
|
161
|
+
const d = P(async () => {
|
|
162
162
|
if (l("๐ REFRESH CONNECTION CALLED", {
|
|
163
163
|
hasService: !!o,
|
|
164
164
|
hasUser: !!s
|
|
@@ -169,10 +169,10 @@ const ge = Re({
|
|
|
169
169
|
l("๐ STARTING CONNECTION REFRESH", { userId: s.id }), b(!0);
|
|
170
170
|
try {
|
|
171
171
|
l("๐ DISCONNECTING FOR REFRESH"), await o.disconnectUser(), l("๐ RECONNECTING FOR REFRESH");
|
|
172
|
-
const
|
|
173
|
-
|
|
174
|
-
} catch (
|
|
175
|
-
const D =
|
|
172
|
+
const g = await o.connectUser(s);
|
|
173
|
+
x(g), S(!0), v(null), l("โ
CONNECTION REFRESH SUCCESS", { userId: s.id });
|
|
174
|
+
} catch (g) {
|
|
175
|
+
const D = g instanceof Error ? g.message : "Refresh failed";
|
|
176
176
|
v(D), l("โ CONNECTION REFRESH ERROR", {
|
|
177
177
|
userId: s.id,
|
|
178
178
|
error: D
|
|
@@ -180,53 +180,53 @@ const ge = Re({
|
|
|
180
180
|
} finally {
|
|
181
181
|
b(!1), l("๐ CONNECTION REFRESH FINISHED", { userId: s.id });
|
|
182
182
|
}
|
|
183
|
-
}, [o, s, l]), f =
|
|
183
|
+
}, [o, s, l]), f = q.useMemo(() => (l("๐ซ CONTEXT VALUE MEMOIZATION", {
|
|
184
184
|
hasService: !!o,
|
|
185
|
-
hasClient: !!
|
|
185
|
+
hasClient: !!y,
|
|
186
186
|
isConnected: m,
|
|
187
|
-
isLoading:
|
|
187
|
+
isLoading: h,
|
|
188
188
|
hasError: !!E,
|
|
189
189
|
capabilitiesKeys: Object.keys(a),
|
|
190
190
|
customizationKeys: Object.keys(c)
|
|
191
191
|
}), {
|
|
192
192
|
service: o,
|
|
193
|
-
client:
|
|
193
|
+
client: y,
|
|
194
194
|
isConnected: m,
|
|
195
|
-
isLoading:
|
|
195
|
+
isLoading: h,
|
|
196
196
|
error: E,
|
|
197
197
|
capabilities: a,
|
|
198
198
|
customization: c,
|
|
199
|
-
refreshConnection:
|
|
199
|
+
refreshConnection: d,
|
|
200
200
|
debug: i
|
|
201
201
|
}), [
|
|
202
202
|
o,
|
|
203
|
-
|
|
203
|
+
y,
|
|
204
204
|
m,
|
|
205
|
-
|
|
205
|
+
h,
|
|
206
206
|
E,
|
|
207
207
|
a,
|
|
208
208
|
c,
|
|
209
|
-
|
|
209
|
+
d,
|
|
210
210
|
i,
|
|
211
211
|
l
|
|
212
212
|
]);
|
|
213
213
|
return l("๐ RENDER END", {
|
|
214
|
-
renderCount:
|
|
215
|
-
willRenderChat: !!(
|
|
214
|
+
renderCount: F.current,
|
|
215
|
+
willRenderChat: !!(y && m),
|
|
216
216
|
contextValueReady: !!f
|
|
217
|
-
}), /* @__PURE__ */ e(
|
|
218
|
-
},
|
|
217
|
+
}), /* @__PURE__ */ e(he.Provider, { value: f, children: y && m ? /* @__PURE__ */ e(Re, { client: y, children: t }) : t });
|
|
218
|
+
}, Ge = () => se(), Ve = (t, s) => {
|
|
219
219
|
const n = new Date(
|
|
220
220
|
Date.UTC(t.getUTCFullYear(), t.getUTCMonth(), t.getUTCDate())
|
|
221
221
|
), a = new Date(
|
|
222
222
|
Date.UTC(s.getUTCFullYear(), s.getUTCMonth(), s.getUTCDate())
|
|
223
223
|
).getTime() - n.getTime();
|
|
224
224
|
return Math.floor(a / (1e3 * 60 * 60 * 24));
|
|
225
|
-
},
|
|
225
|
+
}, We = (t) => {
|
|
226
226
|
const s = /* @__PURE__ */ new Date();
|
|
227
227
|
if (Math.floor((s.getTime() - t.getTime()) / 1e3) < 60)
|
|
228
228
|
return "Just now";
|
|
229
|
-
const r =
|
|
229
|
+
const r = Ve(t, s);
|
|
230
230
|
return r === 0 ? t.toLocaleTimeString([], {
|
|
231
231
|
hour: "numeric",
|
|
232
232
|
minute: "2-digit"
|
|
@@ -235,7 +235,7 @@ const ge = Re({
|
|
|
235
235
|
day: "numeric",
|
|
236
236
|
year: "2-digit"
|
|
237
237
|
});
|
|
238
|
-
},
|
|
238
|
+
}, de = [
|
|
239
239
|
"๐",
|
|
240
240
|
// Apple
|
|
241
241
|
"๐",
|
|
@@ -263,7 +263,7 @@ const ge = Re({
|
|
|
263
263
|
"๐"
|
|
264
264
|
// Melon
|
|
265
265
|
];
|
|
266
|
-
function
|
|
266
|
+
function qe(t) {
|
|
267
267
|
let s = 0;
|
|
268
268
|
for (let n = 0; n < t.length; n++) {
|
|
269
269
|
const r = t.charCodeAt(n);
|
|
@@ -271,25 +271,25 @@ function Qe(t) {
|
|
|
271
271
|
}
|
|
272
272
|
return Math.abs(s);
|
|
273
273
|
}
|
|
274
|
-
function
|
|
275
|
-
const n =
|
|
276
|
-
return
|
|
274
|
+
function Ye(t) {
|
|
275
|
+
const n = qe(t) % de.length;
|
|
276
|
+
return de[n];
|
|
277
277
|
}
|
|
278
|
-
const
|
|
278
|
+
const Y = ({
|
|
279
279
|
id: t,
|
|
280
280
|
image: s,
|
|
281
281
|
size: n = 40,
|
|
282
282
|
className: r,
|
|
283
283
|
shape: a = "squircle"
|
|
284
284
|
}) => {
|
|
285
|
-
const c =
|
|
285
|
+
const c = Ye(t), l = n < 32 ? "text-xs" : n < 56 ? "text-sm" : "text-lg", o = a === "circle" ? { borderRadius: "50%" } : {
|
|
286
286
|
borderRadius: "33%",
|
|
287
287
|
"corner-shape": "superellipse(1.3)"
|
|
288
288
|
};
|
|
289
289
|
return /* @__PURE__ */ e(
|
|
290
290
|
"div",
|
|
291
291
|
{
|
|
292
|
-
className:
|
|
292
|
+
className: k("flex-shrink-0 overflow-hidden", r),
|
|
293
293
|
style: {
|
|
294
294
|
width: `${n}px`,
|
|
295
295
|
height: `${n}px`,
|
|
@@ -306,7 +306,7 @@ const J = ({
|
|
|
306
306
|
"div",
|
|
307
307
|
{
|
|
308
308
|
"aria-hidden": "true",
|
|
309
|
-
className:
|
|
309
|
+
className: k(
|
|
310
310
|
"avatar-fallback flex h-full w-full items-center justify-center font-semibold bg-[#E6E5E3] select-none transition-colors",
|
|
311
311
|
l
|
|
312
312
|
),
|
|
@@ -315,82 +315,82 @@ const J = ({
|
|
|
315
315
|
)
|
|
316
316
|
}
|
|
317
317
|
);
|
|
318
|
-
},
|
|
319
|
-
var E, v,
|
|
318
|
+
}, Je = ({ channel: t, selectedChannel: s, onChannelSelect: n, debug: r = !1, unread: a }) => {
|
|
319
|
+
var E, v, R, C, F, p;
|
|
320
320
|
const c = (s == null ? void 0 : s.id) === (t == null ? void 0 : t.id), i = () => {
|
|
321
321
|
t && n(t);
|
|
322
322
|
}, o = Object.values(((E = t == null ? void 0 : t.state) == null ? void 0 : E.members) || {}).find(
|
|
323
|
-
(
|
|
324
|
-
var f,
|
|
325
|
-
return ((f =
|
|
323
|
+
(d) => {
|
|
324
|
+
var f, g;
|
|
325
|
+
return ((f = d.user) == null ? void 0 : f.id) && d.user.id !== ((g = t == null ? void 0 : t._client) == null ? void 0 : g.userID);
|
|
326
326
|
}
|
|
327
|
-
), w = ((v = o == null ? void 0 : o.user) == null ? void 0 : v.name) || "Conversation",
|
|
327
|
+
), w = ((v = o == null ? void 0 : o.user) == null ? void 0 : v.name) || "Conversation", y = (R = o == null ? void 0 : o.user) == null ? void 0 : R.image, x = (F = (C = t == null ? void 0 : t.state) == null ? void 0 : C.messages) == null ? void 0 : F[t.state.messages.length - 1], S = (() => {
|
|
328
328
|
var f;
|
|
329
|
-
if (
|
|
330
|
-
const
|
|
331
|
-
return
|
|
332
|
-
})(),
|
|
329
|
+
if (x != null && x.text) return x.text;
|
|
330
|
+
const d = (f = x == null ? void 0 : x.attachments) == null ? void 0 : f[0];
|
|
331
|
+
return d != null && d.asset_url ? d.asset_url : d != null && d.image_url ? d.image_url : d != null && d.og_scrape_url ? d.og_scrape_url : d != null && d.thumb_url ? d.thumb_url : "No messages yet";
|
|
332
|
+
})(), h = x != null && x.created_at ? We(new Date(x.created_at)) : "", b = a ?? 0;
|
|
333
333
|
return r && console.log("๐บ [ChannelList] ๐ CHANNEL PREVIEW RENDER", {
|
|
334
334
|
channelId: t == null ? void 0 : t.id,
|
|
335
335
|
isSelected: c,
|
|
336
336
|
participantName: w,
|
|
337
337
|
unreadCount: b,
|
|
338
|
-
hasTimestamp: !!
|
|
338
|
+
hasTimestamp: !!h
|
|
339
339
|
}), /* @__PURE__ */ e(
|
|
340
340
|
"button",
|
|
341
341
|
{
|
|
342
342
|
type: "button",
|
|
343
343
|
onClick: i,
|
|
344
|
-
className:
|
|
344
|
+
className: k(
|
|
345
345
|
"group w-full px-4 py-3 transition-colors border-b border-sand text-left max-w-full overflow-hidden focus-ring",
|
|
346
346
|
{
|
|
347
347
|
"bg-primary-alt/10 border-l-4 border-l-primary": c,
|
|
348
348
|
"hover:bg-sand": !c
|
|
349
349
|
}
|
|
350
350
|
),
|
|
351
|
-
children: /* @__PURE__ */
|
|
351
|
+
children: /* @__PURE__ */ u("div", { className: "flex items-start gap-3", children: [
|
|
352
352
|
/* @__PURE__ */ e(
|
|
353
|
-
|
|
353
|
+
Y,
|
|
354
354
|
{
|
|
355
355
|
id: ((p = o == null ? void 0 : o.user) == null ? void 0 : p.id) || t.id || "unknown",
|
|
356
356
|
name: w,
|
|
357
|
-
image:
|
|
357
|
+
image: y,
|
|
358
358
|
size: 44,
|
|
359
359
|
className: "[&_.avatar-fallback]:group-hover:bg-[#eeeeee]"
|
|
360
360
|
}
|
|
361
361
|
),
|
|
362
|
-
/* @__PURE__ */
|
|
363
|
-
/* @__PURE__ */
|
|
362
|
+
/* @__PURE__ */ u("div", { className: "flex-1 min-w-0 flex flex-col gap-1", children: [
|
|
363
|
+
/* @__PURE__ */ u("div", { className: "flex items-center justify-between gap-2", children: [
|
|
364
364
|
/* @__PURE__ */ e(
|
|
365
365
|
"h3",
|
|
366
366
|
{
|
|
367
|
-
className:
|
|
367
|
+
className: k(
|
|
368
368
|
"text-sm font-medium truncate",
|
|
369
369
|
c ? "text-primary" : "text-charcoal"
|
|
370
370
|
),
|
|
371
371
|
children: w
|
|
372
372
|
}
|
|
373
373
|
),
|
|
374
|
-
|
|
374
|
+
h && /* @__PURE__ */ e("span", { className: "text-xs text-stone flex-shrink-0", children: h })
|
|
375
375
|
] }),
|
|
376
|
-
/* @__PURE__ */
|
|
376
|
+
/* @__PURE__ */ u("div", { className: "flex items-center justify-between gap-2 min-w-0", children: [
|
|
377
377
|
/* @__PURE__ */ e("p", { className: "text-xs text-stone mr-2 flex-1 line-clamp-2", children: S }),
|
|
378
|
-
b > 0 && /* @__PURE__ */ e("span", { className: "bg-
|
|
378
|
+
b > 0 && /* @__PURE__ */ e("span", { className: "bg-[#7f22fe] text-white text-xs px-2 py-0.5 rounded-full min-w-[20px] text-center flex-shrink-0", children: b > 99 ? "99+" : b })
|
|
379
379
|
] })
|
|
380
380
|
] })
|
|
381
381
|
] })
|
|
382
382
|
}
|
|
383
383
|
);
|
|
384
|
-
},
|
|
384
|
+
}, Qe = ({
|
|
385
385
|
onChannelSelect: t,
|
|
386
386
|
selectedChannel: s,
|
|
387
387
|
filters: n,
|
|
388
388
|
className: r,
|
|
389
389
|
customEmptyStateIndicator: a
|
|
390
390
|
}) => {
|
|
391
|
-
const c =
|
|
391
|
+
const c = q.useRef(0);
|
|
392
392
|
c.current++;
|
|
393
|
-
const { debug: i = !1 } =
|
|
393
|
+
const { debug: i = !1 } = se();
|
|
394
394
|
return i && console.log("๐บ [ChannelList] ๐ RENDER START", {
|
|
395
395
|
renderCount: c.current,
|
|
396
396
|
selectedChannelId: s == null ? void 0 : s.id,
|
|
@@ -398,7 +398,7 @@ const J = ({
|
|
|
398
398
|
}), /* @__PURE__ */ e(
|
|
399
399
|
"div",
|
|
400
400
|
{
|
|
401
|
-
className:
|
|
401
|
+
className: k(
|
|
402
402
|
"messaging-channel-list h-full flex flex-col min-w-0 overflow-hidden",
|
|
403
403
|
r
|
|
404
404
|
),
|
|
@@ -406,7 +406,7 @@ const J = ({
|
|
|
406
406
|
renderCount: c.current,
|
|
407
407
|
filters: n
|
|
408
408
|
}), /* @__PURE__ */ e(
|
|
409
|
-
|
|
409
|
+
Fe,
|
|
410
410
|
{
|
|
411
411
|
filters: n,
|
|
412
412
|
sort: { last_message_at: -1 },
|
|
@@ -418,7 +418,7 @@ const J = ({
|
|
|
418
418
|
selectedChannelId: s == null ? void 0 : s.id,
|
|
419
419
|
isSelected: (s == null ? void 0 : s.id) === ((w = l.channel) == null ? void 0 : w.id)
|
|
420
420
|
}), /* @__PURE__ */ e(
|
|
421
|
-
|
|
421
|
+
Je,
|
|
422
422
|
{
|
|
423
423
|
...l,
|
|
424
424
|
selectedChannel: s,
|
|
@@ -442,7 +442,7 @@ const J = ({
|
|
|
442
442
|
"button",
|
|
443
443
|
{
|
|
444
444
|
type: "button",
|
|
445
|
-
className:
|
|
445
|
+
className: k(
|
|
446
446
|
"flex w-full items-center gap-3 rounded-lg px-4 py-3 text-left text-sm transition-colors focus-ring disabled:cursor-not-allowed disabled:opacity-60",
|
|
447
447
|
t === "danger" ? "text-danger hover:bg-danger/50" : "text-charcoal hover:bg-sand",
|
|
448
448
|
s
|
|
@@ -451,12 +451,12 @@ const J = ({
|
|
|
451
451
|
children: n
|
|
452
452
|
}
|
|
453
453
|
);
|
|
454
|
-
function
|
|
455
|
-
return /* @__PURE__ */
|
|
454
|
+
function ge({ label: t, className: s, children: n, ...r }) {
|
|
455
|
+
return /* @__PURE__ */ u(
|
|
456
456
|
"button",
|
|
457
457
|
{
|
|
458
458
|
type: "button",
|
|
459
|
-
className:
|
|
459
|
+
className: k(
|
|
460
460
|
"rounded-full p-2 transition-colors focus-ring",
|
|
461
461
|
{
|
|
462
462
|
"cursor-not-allowed opacity-50": r.disabled,
|
|
@@ -472,20 +472,20 @@ function xe({ label: t, className: s, children: n, ...r }) {
|
|
|
472
472
|
}
|
|
473
473
|
);
|
|
474
474
|
}
|
|
475
|
-
function
|
|
476
|
-
return /* @__PURE__ */ e(
|
|
475
|
+
function xe({ onClick: t }) {
|
|
476
|
+
return /* @__PURE__ */ e(ge, { label: "Close", onClick: t, className: "p-1", children: /* @__PURE__ */ e(fe, { className: "h-5 w-5 text-stone", weight: "bold" }) });
|
|
477
477
|
}
|
|
478
|
-
const
|
|
479
|
-
const { handleSubmit: t } =
|
|
480
|
-
return /* @__PURE__ */
|
|
481
|
-
/* @__PURE__ */ e("div", { className: "left-container", children: /* @__PURE__ */ e(
|
|
482
|
-
/* @__PURE__ */
|
|
483
|
-
/* @__PURE__ */ e(
|
|
484
|
-
/* @__PURE__ */ e(
|
|
485
|
-
/* @__PURE__ */ e(
|
|
486
|
-
/* @__PURE__ */
|
|
478
|
+
const Xe = () => {
|
|
479
|
+
const { handleSubmit: t } = De(), s = pe();
|
|
480
|
+
return /* @__PURE__ */ u(ue, { children: [
|
|
481
|
+
/* @__PURE__ */ e("div", { className: "left-container", children: /* @__PURE__ */ e(Me, {}) }),
|
|
482
|
+
/* @__PURE__ */ u("div", { className: "central-container w-full p-2 bg-white rounded-lg shadow-[0_4px_16px_0_rgba(0,0,0,0.08),0_1px_2px_0_rgba(0,0,0,0.04),0_0_0_1px_rgba(0,0,0,0.04)]", children: [
|
|
483
|
+
/* @__PURE__ */ e(Pe, {}),
|
|
484
|
+
/* @__PURE__ */ e(Ue, {}),
|
|
485
|
+
/* @__PURE__ */ e(Oe, {}),
|
|
486
|
+
/* @__PURE__ */ u("div", { className: "flex", children: [
|
|
487
487
|
/* @__PURE__ */ e("div", { className: "w-full ml-2 mr-4", children: /* @__PURE__ */ e(
|
|
488
|
-
|
|
488
|
+
Le,
|
|
489
489
|
{
|
|
490
490
|
className: "align-middle w-full resize-none outline-none",
|
|
491
491
|
maxRows: 4
|
|
@@ -500,47 +500,47 @@ const es = () => {
|
|
|
500
500
|
disabled: !s,
|
|
501
501
|
onClick: t,
|
|
502
502
|
type: "button",
|
|
503
|
-
children: /* @__PURE__ */ e(
|
|
503
|
+
children: /* @__PURE__ */ e(Be, { className: "size-4" })
|
|
504
504
|
}
|
|
505
505
|
)
|
|
506
506
|
] })
|
|
507
507
|
] })
|
|
508
508
|
] });
|
|
509
|
-
},
|
|
509
|
+
}, Ze = ({
|
|
510
510
|
renderActions: t
|
|
511
|
-
}) => /* @__PURE__ */
|
|
511
|
+
}) => /* @__PURE__ */ u("div", { className: "message-input flex items-center gap-2 p-4", children: [
|
|
512
512
|
t && (t == null ? void 0 : t()),
|
|
513
|
-
/* @__PURE__ */ e(
|
|
514
|
-
] }),
|
|
513
|
+
/* @__PURE__ */ e(Te, { Input: Xe })
|
|
514
|
+
] }), Ne = () => /* @__PURE__ */ e("div", { className: "messaging-channel-empty-state flex items-center justify-center h-full p-8 text-balance", children: /* @__PURE__ */ u("div", { className: "text-center max-w-sm", children: [
|
|
515
515
|
/* @__PURE__ */ e("h2", { className: "font-semibold text-charcoal mb-2", children: "No messages yet ๐" }),
|
|
516
516
|
/* @__PURE__ */ e("p", { className: "text-stone text-xs", children: "Share to social media to generate more conversations" })
|
|
517
|
-
] }) }),
|
|
518
|
-
var o, w,
|
|
519
|
-
const { channel: a } =
|
|
520
|
-
(
|
|
517
|
+
] }) }), Ke = ({ onBack: t, showBackButton: s, onShowInfo: n, canShowInfo: r }) => {
|
|
518
|
+
var o, w, y, x, m;
|
|
519
|
+
const { channel: a } = me(), c = q.useMemo(() => Object.values(a.state.members || {}).find(
|
|
520
|
+
(h) => {
|
|
521
521
|
var b;
|
|
522
|
-
return ((b =
|
|
522
|
+
return ((b = h.user) == null ? void 0 : b.id) && h.user.id !== a._client.userID;
|
|
523
523
|
}
|
|
524
|
-
), [a._client.userID, a.state.members]), i = ((o = c == null ? void 0 : c.user) == null ? void 0 : o.name) || ((w = c == null ? void 0 : c.user) == null ? void 0 : w.id) || "Unknown member", l = (
|
|
525
|
-
return /* @__PURE__ */
|
|
526
|
-
/* @__PURE__ */
|
|
524
|
+
), [a._client.userID, a.state.members]), i = ((o = c == null ? void 0 : c.user) == null ? void 0 : o.name) || ((w = c == null ? void 0 : c.user) == null ? void 0 : w.id) || "Unknown member", l = (y = c == null ? void 0 : c.user) == null ? void 0 : y.image;
|
|
525
|
+
return /* @__PURE__ */ u("div", { className: "@container", children: [
|
|
526
|
+
/* @__PURE__ */ u("div", { className: "flex justify-between items-center @md:hidden", children: [
|
|
527
527
|
/* @__PURE__ */ e(
|
|
528
528
|
"button",
|
|
529
529
|
{
|
|
530
|
-
className:
|
|
530
|
+
className: k(
|
|
531
531
|
"size-10 rounded-full bg-[#F1F0EE] flex items-center justify-center",
|
|
532
532
|
!s && "invisible"
|
|
533
533
|
),
|
|
534
534
|
onClick: t || (() => {
|
|
535
535
|
}),
|
|
536
|
-
children: /* @__PURE__ */ e(
|
|
536
|
+
children: /* @__PURE__ */ e(oe, { className: "size-5 text-black/90" })
|
|
537
537
|
}
|
|
538
538
|
),
|
|
539
|
-
/* @__PURE__ */
|
|
539
|
+
/* @__PURE__ */ u("div", { className: "flex flex-col gap-1 items-center", children: [
|
|
540
540
|
/* @__PURE__ */ e(
|
|
541
|
-
|
|
541
|
+
Y,
|
|
542
542
|
{
|
|
543
|
-
id: ((
|
|
543
|
+
id: ((x = c == null ? void 0 : c.user) == null ? void 0 : x.id) || a.id || "unknown",
|
|
544
544
|
name: i,
|
|
545
545
|
image: l,
|
|
546
546
|
size: 40
|
|
@@ -551,17 +551,17 @@ const es = () => {
|
|
|
551
551
|
/* @__PURE__ */ e(
|
|
552
552
|
"button",
|
|
553
553
|
{
|
|
554
|
-
className:
|
|
554
|
+
className: k(
|
|
555
555
|
"size-10 rounded-full bg-[#F1F0EE] flex items-center justify-center"
|
|
556
556
|
),
|
|
557
557
|
onClick: n || (() => {
|
|
558
558
|
}),
|
|
559
|
-
children: /* @__PURE__ */ e(
|
|
559
|
+
children: /* @__PURE__ */ e(ae, { className: "size-5 text-black/90" })
|
|
560
560
|
}
|
|
561
561
|
)
|
|
562
562
|
] }),
|
|
563
|
-
/* @__PURE__ */
|
|
564
|
-
/* @__PURE__ */
|
|
563
|
+
/* @__PURE__ */ u("div", { className: "hidden @md:flex items-center justify-between gap-3 min-h-12", children: [
|
|
564
|
+
/* @__PURE__ */ u("div", { className: "flex items-center gap-4 min-w-0", children: [
|
|
565
565
|
s && t && /* @__PURE__ */ e(
|
|
566
566
|
"button",
|
|
567
567
|
{
|
|
@@ -569,11 +569,11 @@ const es = () => {
|
|
|
569
569
|
onClick: t,
|
|
570
570
|
className: "size-10 rounded-full bg-[#F1F0EE] flex items-center justify-center",
|
|
571
571
|
"aria-label": "Back to conversations",
|
|
572
|
-
children: /* @__PURE__ */ e(
|
|
572
|
+
children: /* @__PURE__ */ e(oe, { className: "size-5 text-black/90" })
|
|
573
573
|
}
|
|
574
574
|
),
|
|
575
575
|
/* @__PURE__ */ e(
|
|
576
|
-
|
|
576
|
+
Y,
|
|
577
577
|
{
|
|
578
578
|
id: ((m = c == null ? void 0 : c.user) == null ? void 0 : m.id) || a.id || "unknown",
|
|
579
579
|
name: i,
|
|
@@ -586,16 +586,16 @@ const es = () => {
|
|
|
586
586
|
r && n && /* @__PURE__ */ e(
|
|
587
587
|
"button",
|
|
588
588
|
{
|
|
589
|
-
className:
|
|
589
|
+
className: k(
|
|
590
590
|
"size-10 rounded-full bg-[#F1F0EE] flex items-center justify-center"
|
|
591
591
|
),
|
|
592
592
|
onClick: n,
|
|
593
|
-
children: /* @__PURE__ */ e(
|
|
593
|
+
children: /* @__PURE__ */ e(ae, { className: "size-5 text-black/90" })
|
|
594
594
|
}
|
|
595
595
|
)
|
|
596
596
|
] })
|
|
597
597
|
] });
|
|
598
|
-
},
|
|
598
|
+
}, es = ({
|
|
599
599
|
isOpen: t,
|
|
600
600
|
onClose: s,
|
|
601
601
|
participant: n,
|
|
@@ -604,71 +604,71 @@ const es = () => {
|
|
|
604
604
|
onLeaveConversation: c,
|
|
605
605
|
onBlockParticipant: i
|
|
606
606
|
}) => {
|
|
607
|
-
var
|
|
608
|
-
const { service: l, debug: o } =
|
|
609
|
-
|
|
610
|
-
const
|
|
611
|
-
|
|
607
|
+
var A, U, G, J, H, V, Q;
|
|
608
|
+
const { service: l, debug: o } = se(), w = z(null), [y, x] = I(!1), [m, S] = I(!1), [h, b] = I(!1);
|
|
609
|
+
$(() => {
|
|
610
|
+
const T = w.current;
|
|
611
|
+
T && (t ? T.showModal() : T.close());
|
|
612
612
|
}, [t]);
|
|
613
613
|
const E = P(async () => {
|
|
614
|
-
var
|
|
615
|
-
if (!(!l || !((
|
|
614
|
+
var T;
|
|
615
|
+
if (!(!l || !((T = n == null ? void 0 : n.user) != null && T.id)))
|
|
616
616
|
try {
|
|
617
|
-
const
|
|
618
|
-
(
|
|
619
|
-
var
|
|
620
|
-
return
|
|
617
|
+
const L = (await l.getBlockedUsers()).some(
|
|
618
|
+
(_) => {
|
|
619
|
+
var X;
|
|
620
|
+
return _.blocked_user_id === ((X = n == null ? void 0 : n.user) == null ? void 0 : X.id);
|
|
621
621
|
}
|
|
622
622
|
);
|
|
623
|
-
|
|
624
|
-
} catch (
|
|
623
|
+
x(L);
|
|
624
|
+
} catch (O) {
|
|
625
625
|
console.error(
|
|
626
626
|
"[ChannelInfoDialog] Failed to check blocked status:",
|
|
627
|
-
|
|
627
|
+
O
|
|
628
628
|
);
|
|
629
629
|
}
|
|
630
|
-
}, [l, (
|
|
631
|
-
|
|
630
|
+
}, [l, (A = n == null ? void 0 : n.user) == null ? void 0 : A.id]);
|
|
631
|
+
$(() => {
|
|
632
632
|
t && E();
|
|
633
633
|
}, [t, E]);
|
|
634
634
|
const v = async () => {
|
|
635
|
-
var
|
|
635
|
+
var T;
|
|
636
636
|
if (!m) {
|
|
637
637
|
o && console.log("[ChannelInfoDialog] Leave conversation", r.cid), S(!0);
|
|
638
638
|
try {
|
|
639
|
-
const
|
|
640
|
-
await r.hide(
|
|
641
|
-
} catch (
|
|
642
|
-
console.error("[ChannelInfoDialog] Failed to leave conversation",
|
|
639
|
+
const O = ((T = r._client) == null ? void 0 : T.userID) ?? null;
|
|
640
|
+
await r.hide(O, !1), c && await c(r), s();
|
|
641
|
+
} catch (O) {
|
|
642
|
+
console.error("[ChannelInfoDialog] Failed to leave conversation", O);
|
|
643
643
|
} finally {
|
|
644
644
|
S(!1);
|
|
645
645
|
}
|
|
646
646
|
}
|
|
647
|
-
},
|
|
648
|
-
var
|
|
649
|
-
if (!(
|
|
650
|
-
o && console.log("[ChannelInfoDialog] Block member", (
|
|
647
|
+
}, R = async () => {
|
|
648
|
+
var T, O, L;
|
|
649
|
+
if (!(h || !l)) {
|
|
650
|
+
o && console.log("[ChannelInfoDialog] Block member", (T = n == null ? void 0 : n.user) == null ? void 0 : T.id), b(!0);
|
|
651
651
|
try {
|
|
652
|
-
await l.blockUser((
|
|
653
|
-
} catch (
|
|
654
|
-
console.error("[ChannelInfoDialog] Failed to block member",
|
|
652
|
+
await l.blockUser((O = n == null ? void 0 : n.user) == null ? void 0 : O.id), i && await i((L = n == null ? void 0 : n.user) == null ? void 0 : L.id), s();
|
|
653
|
+
} catch (_) {
|
|
654
|
+
console.error("[ChannelInfoDialog] Failed to block member", _);
|
|
655
655
|
} finally {
|
|
656
656
|
b(!1);
|
|
657
657
|
}
|
|
658
658
|
}
|
|
659
659
|
}, C = async () => {
|
|
660
|
-
var
|
|
661
|
-
if (!(
|
|
662
|
-
o && console.log("[ChannelInfoDialog] Unblock member", (
|
|
660
|
+
var T, O, L;
|
|
661
|
+
if (!(h || !l)) {
|
|
662
|
+
o && console.log("[ChannelInfoDialog] Unblock member", (T = n == null ? void 0 : n.user) == null ? void 0 : T.id), b(!0);
|
|
663
663
|
try {
|
|
664
|
-
await l.unBlockUser((
|
|
665
|
-
} catch (
|
|
666
|
-
console.error("[ChannelInfoDialog] Failed to unblock member",
|
|
664
|
+
await l.unBlockUser((O = n == null ? void 0 : n.user) == null ? void 0 : O.id), i && await i((L = n == null ? void 0 : n.user) == null ? void 0 : L.id), s();
|
|
665
|
+
} catch (_) {
|
|
666
|
+
console.error("[ChannelInfoDialog] Failed to unblock member", _);
|
|
667
667
|
} finally {
|
|
668
668
|
b(!1);
|
|
669
669
|
}
|
|
670
670
|
}
|
|
671
|
-
},
|
|
671
|
+
}, F = () => {
|
|
672
672
|
s(), window.open(
|
|
673
673
|
"https://linktr.ee/s/about/trust-center/report",
|
|
674
674
|
"_blank",
|
|
@@ -676,7 +676,7 @@ const es = () => {
|
|
|
676
676
|
);
|
|
677
677
|
};
|
|
678
678
|
if (!n) return null;
|
|
679
|
-
const p = ((
|
|
679
|
+
const p = ((U = n.user) == null ? void 0 : U.name) || ((G = n.user) == null ? void 0 : G.id) || "Unknown member", d = (J = n.user) == null ? void 0 : J.image, f = (H = n.user) == null ? void 0 : H.email, g = (V = n.user) == null ? void 0 : V.username, D = f || (g ? `linktr.ee/${g}` : void 0), W = ((Q = n.user) == null ? void 0 : Q.id) || "unknown";
|
|
680
680
|
return (
|
|
681
681
|
// eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-noninteractive-element-interactions
|
|
682
682
|
/* @__PURE__ */ e(
|
|
@@ -685,32 +685,32 @@ const es = () => {
|
|
|
685
685
|
ref: w,
|
|
686
686
|
className: "mes-dialog",
|
|
687
687
|
onClose: s,
|
|
688
|
-
onClick: (
|
|
689
|
-
|
|
688
|
+
onClick: (T) => {
|
|
689
|
+
T.target === w.current && s();
|
|
690
690
|
},
|
|
691
|
-
children: /* @__PURE__ */
|
|
692
|
-
/* @__PURE__ */
|
|
691
|
+
children: /* @__PURE__ */ u("div", { className: "ml-auto flex h-full w-full flex-col bg-white shadow-max-elevation-light", children: [
|
|
692
|
+
/* @__PURE__ */ u("div", { className: "flex items-center justify-between border-b border-sand px-4 py-3", children: [
|
|
693
693
|
/* @__PURE__ */ e("h2", { className: "text-base font-semibold text-charcoal", children: "Chat info" }),
|
|
694
|
-
/* @__PURE__ */ e(
|
|
694
|
+
/* @__PURE__ */ e(xe, { onClick: s })
|
|
695
695
|
] }),
|
|
696
|
-
/* @__PURE__ */
|
|
696
|
+
/* @__PURE__ */ u("div", { className: "flex-1 px-2 overflow-y-auto w-full", children: [
|
|
697
697
|
/* @__PURE__ */ e(
|
|
698
698
|
"div",
|
|
699
699
|
{
|
|
700
700
|
className: "flex flex-col items-center gap-3 self-stretch px-4 py-2 mt-6 rounded-lg border border-black/[0.04]",
|
|
701
701
|
style: { backgroundColor: "#FBFAF9" },
|
|
702
|
-
children: /* @__PURE__ */
|
|
702
|
+
children: /* @__PURE__ */ u("div", { className: "flex items-center gap-3 w-full", children: [
|
|
703
703
|
/* @__PURE__ */ e(
|
|
704
|
-
|
|
704
|
+
Y,
|
|
705
705
|
{
|
|
706
|
-
id:
|
|
706
|
+
id: W,
|
|
707
707
|
name: p,
|
|
708
|
-
image:
|
|
708
|
+
image: d,
|
|
709
709
|
size: 88,
|
|
710
710
|
shape: "circle"
|
|
711
711
|
}
|
|
712
712
|
),
|
|
713
|
-
/* @__PURE__ */
|
|
713
|
+
/* @__PURE__ */ u("div", { className: "flex flex-col min-w-0 flex-1", children: [
|
|
714
714
|
/* @__PURE__ */ e("p", { className: "truncate text-base font-semibold text-charcoal", children: p }),
|
|
715
715
|
D && /* @__PURE__ */ e("p", { className: "truncate text-sm text-[#00000055]", children: D }),
|
|
716
716
|
a && /* @__PURE__ */ e(
|
|
@@ -731,44 +731,44 @@ const es = () => {
|
|
|
731
731
|
] })
|
|
732
732
|
}
|
|
733
733
|
),
|
|
734
|
-
/* @__PURE__ */
|
|
735
|
-
/* @__PURE__ */ e("li", { children: /* @__PURE__ */
|
|
734
|
+
/* @__PURE__ */ u("ul", { className: "flex flex-col gap-2 mt-2", children: [
|
|
735
|
+
/* @__PURE__ */ e("li", { children: /* @__PURE__ */ u(
|
|
736
736
|
K,
|
|
737
737
|
{
|
|
738
738
|
onClick: v,
|
|
739
739
|
disabled: m,
|
|
740
740
|
"aria-busy": m,
|
|
741
741
|
children: [
|
|
742
|
-
m ? /* @__PURE__ */ e(ee, { className: "h-5 w-5 animate-spin" }) : /* @__PURE__ */ e(
|
|
742
|
+
m ? /* @__PURE__ */ e(ee, { className: "h-5 w-5 animate-spin" }) : /* @__PURE__ */ e(ze, { className: "h-5 w-5" }),
|
|
743
743
|
/* @__PURE__ */ e("span", { children: "Delete Conversation" })
|
|
744
744
|
]
|
|
745
745
|
}
|
|
746
746
|
) }),
|
|
747
|
-
/* @__PURE__ */ e("li", { children:
|
|
747
|
+
/* @__PURE__ */ e("li", { children: y ? /* @__PURE__ */ u(
|
|
748
748
|
K,
|
|
749
749
|
{
|
|
750
750
|
onClick: C,
|
|
751
|
-
disabled:
|
|
752
|
-
"aria-busy":
|
|
751
|
+
disabled: h,
|
|
752
|
+
"aria-busy": h,
|
|
753
753
|
children: [
|
|
754
|
-
|
|
754
|
+
h ? /* @__PURE__ */ e(ee, { className: "h-5 w-5 animate-spin" }) : /* @__PURE__ */ e(ie, { className: "h-5 w-5" }),
|
|
755
755
|
/* @__PURE__ */ e("span", { children: "Unblock" })
|
|
756
756
|
]
|
|
757
757
|
}
|
|
758
|
-
) : /* @__PURE__ */
|
|
758
|
+
) : /* @__PURE__ */ u(
|
|
759
759
|
K,
|
|
760
760
|
{
|
|
761
|
-
onClick:
|
|
762
|
-
disabled:
|
|
763
|
-
"aria-busy":
|
|
761
|
+
onClick: R,
|
|
762
|
+
disabled: h,
|
|
763
|
+
"aria-busy": h,
|
|
764
764
|
children: [
|
|
765
|
-
|
|
765
|
+
h ? /* @__PURE__ */ e(ee, { className: "h-5 w-5 animate-spin" }) : /* @__PURE__ */ e(ie, { className: "h-5 w-5" }),
|
|
766
766
|
/* @__PURE__ */ e("span", { children: "Block" })
|
|
767
767
|
]
|
|
768
768
|
}
|
|
769
769
|
) }),
|
|
770
|
-
/* @__PURE__ */ e("li", { children: /* @__PURE__ */
|
|
771
|
-
/* @__PURE__ */ e(
|
|
770
|
+
/* @__PURE__ */ e("li", { children: /* @__PURE__ */ u(K, { variant: "danger", onClick: F, children: [
|
|
771
|
+
/* @__PURE__ */ e($e, { className: "h-5 w-5" }),
|
|
772
772
|
/* @__PURE__ */ e("span", { children: "Report" })
|
|
773
773
|
] }) })
|
|
774
774
|
] })
|
|
@@ -777,41 +777,41 @@ const es = () => {
|
|
|
777
777
|
}
|
|
778
778
|
)
|
|
779
779
|
);
|
|
780
|
-
},
|
|
780
|
+
}, ss = ({
|
|
781
781
|
onBack: t,
|
|
782
782
|
showBackButton: s,
|
|
783
783
|
renderMessageInputActions: n,
|
|
784
784
|
onLeaveConversation: r,
|
|
785
785
|
onBlockParticipant: a,
|
|
786
|
-
CustomChannelEmptyState: c =
|
|
786
|
+
CustomChannelEmptyState: c = Ne
|
|
787
787
|
}) => {
|
|
788
788
|
var m, S;
|
|
789
|
-
const { channel: i } =
|
|
789
|
+
const { channel: i } = me(), [l, o] = I(!1), w = (((S = (m = i == null ? void 0 : i.state) == null ? void 0 : m.messages) == null ? void 0 : S.length) ?? 0) > 0, y = q.useMemo(() => Object.values(i.state.members || {}).find(
|
|
790
790
|
(b) => {
|
|
791
791
|
var E;
|
|
792
792
|
return ((E = b.user) == null ? void 0 : E.id) && b.user.id !== i._client.userID;
|
|
793
793
|
}
|
|
794
|
-
), [i._client.userID, i.state.members]),
|
|
795
|
-
const
|
|
796
|
-
if (
|
|
797
|
-
return String(
|
|
798
|
-
if (
|
|
799
|
-
return
|
|
794
|
+
), [i._client.userID, i.state.members]), x = q.useMemo(() => {
|
|
795
|
+
const h = i.data ?? {};
|
|
796
|
+
if (h.followerStatus)
|
|
797
|
+
return String(h.followerStatus);
|
|
798
|
+
if (h.isFollower !== void 0)
|
|
799
|
+
return h.isFollower ? "Subscribed to you" : "Not subscribed";
|
|
800
800
|
}, [i.data]);
|
|
801
|
-
return /* @__PURE__ */
|
|
802
|
-
/* @__PURE__ */
|
|
801
|
+
return /* @__PURE__ */ u(ue, { children: [
|
|
802
|
+
/* @__PURE__ */ u(je, { children: [
|
|
803
803
|
/* @__PURE__ */ e("div", { className: "p-4", children: /* @__PURE__ */ e(
|
|
804
|
-
|
|
804
|
+
Ke,
|
|
805
805
|
{
|
|
806
806
|
onBack: t,
|
|
807
807
|
showBackButton: s,
|
|
808
808
|
onShowInfo: () => o(!0),
|
|
809
|
-
canShowInfo: !!
|
|
809
|
+
canShowInfo: !!y
|
|
810
810
|
}
|
|
811
811
|
) }),
|
|
812
|
-
/* @__PURE__ */
|
|
812
|
+
/* @__PURE__ */ u("div", { className: "flex-1 overflow-hidden relative", children: [
|
|
813
813
|
/* @__PURE__ */ e(
|
|
814
|
-
|
|
814
|
+
Ae,
|
|
815
815
|
{
|
|
816
816
|
hideDeletedMessages: !0,
|
|
817
817
|
hideNewMessageSeparator: !1,
|
|
@@ -821,26 +821,26 @@ const es = () => {
|
|
|
821
821
|
!w && c && /* @__PURE__ */ e("div", { className: "absolute inset-0 w-full h-full", children: /* @__PURE__ */ e(c, {}) })
|
|
822
822
|
] }),
|
|
823
823
|
/* @__PURE__ */ e(
|
|
824
|
-
|
|
824
|
+
Ze,
|
|
825
825
|
{
|
|
826
826
|
renderActions: () => n == null ? void 0 : n(i)
|
|
827
827
|
}
|
|
828
828
|
)
|
|
829
829
|
] }),
|
|
830
830
|
/* @__PURE__ */ e(
|
|
831
|
-
|
|
831
|
+
es,
|
|
832
832
|
{
|
|
833
833
|
isOpen: l,
|
|
834
834
|
onClose: () => o(!1),
|
|
835
|
-
participant:
|
|
835
|
+
participant: y,
|
|
836
836
|
channel: i,
|
|
837
|
-
followerStatusLabel:
|
|
837
|
+
followerStatusLabel: x,
|
|
838
838
|
onLeaveConversation: r,
|
|
839
839
|
onBlockParticipant: a
|
|
840
840
|
}
|
|
841
841
|
)
|
|
842
842
|
] });
|
|
843
|
-
},
|
|
843
|
+
}, ns = ({
|
|
844
844
|
channel: t,
|
|
845
845
|
onBack: s,
|
|
846
846
|
showBackButton: n = !1,
|
|
@@ -848,16 +848,16 @@ const es = () => {
|
|
|
848
848
|
onLeaveConversation: a,
|
|
849
849
|
onBlockParticipant: c,
|
|
850
850
|
className: i,
|
|
851
|
-
CustomChannelEmptyState: l =
|
|
851
|
+
CustomChannelEmptyState: l = Ne
|
|
852
852
|
}) => /* @__PURE__ */ e(
|
|
853
853
|
"div",
|
|
854
854
|
{
|
|
855
|
-
className:
|
|
855
|
+
className: k(
|
|
856
856
|
"messaging-channel-view h-full flex flex-col bg-[#FBFAF9]",
|
|
857
857
|
i
|
|
858
858
|
),
|
|
859
|
-
children: /* @__PURE__ */ e(
|
|
860
|
-
|
|
859
|
+
children: /* @__PURE__ */ e(_e, { channel: t, children: /* @__PURE__ */ e(
|
|
860
|
+
ss,
|
|
861
861
|
{
|
|
862
862
|
onBack: s,
|
|
863
863
|
showBackButton: n,
|
|
@@ -869,15 +869,15 @@ const es = () => {
|
|
|
869
869
|
) })
|
|
870
870
|
}
|
|
871
871
|
);
|
|
872
|
-
function
|
|
872
|
+
function ts({
|
|
873
873
|
searchQuery: t,
|
|
874
874
|
setSearchQuery: s,
|
|
875
875
|
placeholder: n
|
|
876
876
|
}) {
|
|
877
|
-
const r =
|
|
878
|
-
return /* @__PURE__ */
|
|
877
|
+
const r = z(null);
|
|
878
|
+
return /* @__PURE__ */ u("div", { className: "relative", children: [
|
|
879
879
|
/* @__PURE__ */ e(
|
|
880
|
-
|
|
880
|
+
He,
|
|
881
881
|
{
|
|
882
882
|
className: "pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-stone",
|
|
883
883
|
weight: "bold"
|
|
@@ -895,7 +895,7 @@ function os({
|
|
|
895
895
|
}
|
|
896
896
|
),
|
|
897
897
|
t && /* @__PURE__ */ e(
|
|
898
|
-
|
|
898
|
+
ge,
|
|
899
899
|
{
|
|
900
900
|
label: "Clear search",
|
|
901
901
|
onClick: () => {
|
|
@@ -903,12 +903,12 @@ function os({
|
|
|
903
903
|
s(""), (a = r.current) == null || a.focus();
|
|
904
904
|
},
|
|
905
905
|
className: "absolute right-3 top-1/2 -translate-y-1/2 p-1 text-stone hover:text-charcoal",
|
|
906
|
-
children: /* @__PURE__ */ e(
|
|
906
|
+
children: /* @__PURE__ */ e(fe, { className: "h-4 w-4", weight: "bold" })
|
|
907
907
|
}
|
|
908
908
|
)
|
|
909
909
|
] });
|
|
910
910
|
}
|
|
911
|
-
const
|
|
911
|
+
const rs = ({
|
|
912
912
|
participantSource: t,
|
|
913
913
|
onSelectParticipant: s,
|
|
914
914
|
onClose: n,
|
|
@@ -917,17 +917,17 @@ const as = ({
|
|
|
917
917
|
searchPlaceholder: c = "Search participants...",
|
|
918
918
|
className: i
|
|
919
919
|
}) => {
|
|
920
|
-
const { debug: l } =
|
|
920
|
+
const { debug: l } = se(), [o, w] = I(""), [y, x] = I([]), [m, S] = I(!1), [h, b] = I(null), [E, v] = I(
|
|
921
921
|
null
|
|
922
|
-
),
|
|
923
|
-
|
|
922
|
+
), R = z(!1);
|
|
923
|
+
$(() => {
|
|
924
924
|
if (t.loading) {
|
|
925
925
|
l && console.log(
|
|
926
926
|
"[ParticipantPicker] Waiting for participant source to finish loading..."
|
|
927
927
|
);
|
|
928
928
|
return;
|
|
929
929
|
}
|
|
930
|
-
if (
|
|
930
|
+
if (R.current) return;
|
|
931
931
|
(async () => {
|
|
932
932
|
l && console.log("[ParticipantPicker] Loading initial participants..."), S(!0), b(null);
|
|
933
933
|
try {
|
|
@@ -936,45 +936,45 @@ const as = ({
|
|
|
936
936
|
// Load all participants initially
|
|
937
937
|
limit: 100
|
|
938
938
|
});
|
|
939
|
-
|
|
939
|
+
x(f.participants), R.current = !0, l && console.log(
|
|
940
940
|
"[ParticipantPicker] Participants loaded successfully:",
|
|
941
941
|
f.participants.length
|
|
942
942
|
);
|
|
943
943
|
} catch (f) {
|
|
944
|
-
const
|
|
945
|
-
b(
|
|
944
|
+
const g = f instanceof Error ? f.message : "Failed to load participants";
|
|
945
|
+
b(g), console.error("[ParticipantPicker] Failed to load participants:", f);
|
|
946
946
|
} finally {
|
|
947
947
|
S(!1);
|
|
948
948
|
}
|
|
949
949
|
})();
|
|
950
950
|
}, [t.loading, l]);
|
|
951
|
-
const C =
|
|
952
|
-
var
|
|
951
|
+
const C = y.filter((d) => !r.has(d.id)).filter((d) => {
|
|
952
|
+
var g;
|
|
953
953
|
if (!o) return !0;
|
|
954
954
|
const f = o.toLowerCase();
|
|
955
|
-
return
|
|
956
|
-
}),
|
|
957
|
-
async (
|
|
955
|
+
return d.name.toLowerCase().includes(f) || ((g = d.email) == null ? void 0 : g.toLowerCase().includes(f)) || !1;
|
|
956
|
+
}), F = P(
|
|
957
|
+
async (d) => {
|
|
958
958
|
if (!E) {
|
|
959
|
-
v(
|
|
959
|
+
v(d.id);
|
|
960
960
|
try {
|
|
961
|
-
await s(
|
|
961
|
+
await s(d);
|
|
962
962
|
} catch (f) {
|
|
963
963
|
console.error("[ParticipantPicker] Failed to start chat:", f), v(null);
|
|
964
964
|
}
|
|
965
965
|
}
|
|
966
966
|
},
|
|
967
967
|
[s, E]
|
|
968
|
-
), p = (
|
|
969
|
-
(
|
|
968
|
+
), p = (d, f) => {
|
|
969
|
+
(d.key === "Enter" || d.key === " ") && (d.preventDefault(), F(f));
|
|
970
970
|
};
|
|
971
|
-
return /* @__PURE__ */
|
|
972
|
-
/* @__PURE__ */
|
|
973
|
-
/* @__PURE__ */
|
|
971
|
+
return /* @__PURE__ */ u("div", { className: k("flex flex-col h-full", i), children: [
|
|
972
|
+
/* @__PURE__ */ u("div", { className: "px-4 py-4 border-b border-sand bg-chalk", children: [
|
|
973
|
+
/* @__PURE__ */ u("div", { className: "flex items-center justify-between mb-3", children: [
|
|
974
974
|
/* @__PURE__ */ e("h2", { className: "text-lg font-semibold text-charcoal", children: "Start a new Conversation" }),
|
|
975
|
-
/* @__PURE__ */ e(
|
|
975
|
+
/* @__PURE__ */ e(xe, { onClick: n })
|
|
976
976
|
] }),
|
|
977
|
-
/* @__PURE__ */
|
|
977
|
+
/* @__PURE__ */ u("p", { className: "text-xs text-stone mb-3", children: [
|
|
978
978
|
"Select a ",
|
|
979
979
|
a.slice(0, -1),
|
|
980
980
|
" to start messaging (",
|
|
@@ -983,7 +983,7 @@ const as = ({
|
|
|
983
983
|
t.totalCount !== void 0 && ` โข ${t.totalCount} ${a} total`
|
|
984
984
|
] }),
|
|
985
985
|
/* @__PURE__ */ e(
|
|
986
|
-
|
|
986
|
+
ts,
|
|
987
987
|
{
|
|
988
988
|
searchQuery: o,
|
|
989
989
|
setSearchQuery: w,
|
|
@@ -991,91 +991,65 @@ const as = ({
|
|
|
991
991
|
}
|
|
992
992
|
)
|
|
993
993
|
] }),
|
|
994
|
-
|
|
994
|
+
h && /* @__PURE__ */ u("div", { className: "p-4 text-sm text-danger bg-danger-alt", children: [
|
|
995
995
|
"Error loading ",
|
|
996
996
|
a,
|
|
997
997
|
": ",
|
|
998
|
-
|
|
998
|
+
h
|
|
999
999
|
] }),
|
|
1000
|
-
/* @__PURE__ */ e("div", { className: "flex-1 overflow-auto", children: m && C.length === 0 ? /* @__PURE__ */ e("div", { className: "h-32 flex items-center justify-center", children: /* @__PURE__ */
|
|
1000
|
+
/* @__PURE__ */ e("div", { className: "flex-1 overflow-auto", children: m && C.length === 0 ? /* @__PURE__ */ e("div", { className: "h-32 flex items-center justify-center", children: /* @__PURE__ */ u("div", { className: "flex items-center space-x-2", children: [
|
|
1001
1001
|
/* @__PURE__ */ e("div", { className: "w-4 h-4 animate-spin rounded-full border-2 border-primary border-t-transparent" }),
|
|
1002
|
-
/* @__PURE__ */
|
|
1002
|
+
/* @__PURE__ */ u("span", { className: "text-sm text-stone", children: [
|
|
1003
1003
|
"Loading ",
|
|
1004
1004
|
a,
|
|
1005
1005
|
"..."
|
|
1006
1006
|
] })
|
|
1007
|
-
] }) }) : C.length === 0 ? /* @__PURE__ */
|
|
1008
|
-
/* @__PURE__ */ e("div", { className: "mx-auto mb-4 flex h-16 w-16 items-center justify-center rounded-full bg-sand", children: /* @__PURE__ */ e(
|
|
1009
|
-
/* @__PURE__ */ e("h3", { className: "text-sm font-semibold text-charcoal mb-2", children: o ? `No ${a} found` :
|
|
1010
|
-
/* @__PURE__ */ e("p", { className: "text-xs text-stone", children: o ? "Try a different search term" :
|
|
1011
|
-
] }) : /* @__PURE__ */
|
|
1012
|
-
C.map((
|
|
1013
|
-
const f =
|
|
1007
|
+
] }) }) : C.length === 0 ? /* @__PURE__ */ u("div", { className: "p-6 text-center", children: [
|
|
1008
|
+
/* @__PURE__ */ e("div", { className: "mx-auto mb-4 flex h-16 w-16 items-center justify-center rounded-full bg-sand", children: /* @__PURE__ */ e(ce, { className: "h-8 w-8 text-charcoal" }) }),
|
|
1009
|
+
/* @__PURE__ */ e("h3", { className: "text-sm font-semibold text-charcoal mb-2", children: o ? `No ${a} found` : y.length > 0 ? `Already chatting with all ${a}` : `No ${a} yet` }),
|
|
1010
|
+
/* @__PURE__ */ e("p", { className: "text-xs text-stone", children: o ? "Try a different search term" : y.length > 0 ? `You have existing conversations with all your ${a}` : `${a.charAt(0).toUpperCase() + a.slice(1)} will appear here` })
|
|
1011
|
+
] }) : /* @__PURE__ */ u("ul", { className: "space-y-0", children: [
|
|
1012
|
+
C.map((d) => {
|
|
1013
|
+
const f = d.name || d.email || d.id, g = d.email && d.name ? d.email : d.phone;
|
|
1014
1014
|
return /* @__PURE__ */ e("li", { children: /* @__PURE__ */ e(
|
|
1015
1015
|
"button",
|
|
1016
1016
|
{
|
|
1017
1017
|
type: "button",
|
|
1018
|
-
onClick: () =>
|
|
1019
|
-
onKeyDown: (D) => p(D,
|
|
1018
|
+
onClick: () => F(d),
|
|
1019
|
+
onKeyDown: (D) => p(D, d),
|
|
1020
1020
|
className: "w-full px-4 py-3 hover:bg-sand transition-colors border-b border-sand text-left focus:outline-none focus:ring-2 focus:ring-black",
|
|
1021
|
-
children: /* @__PURE__ */
|
|
1022
|
-
/* @__PURE__ */
|
|
1021
|
+
children: /* @__PURE__ */ u("div", { className: "flex items-center justify-between", children: [
|
|
1022
|
+
/* @__PURE__ */ u("div", { className: "flex items-center space-x-3 flex-1 min-w-0", children: [
|
|
1023
1023
|
/* @__PURE__ */ e(
|
|
1024
|
-
|
|
1024
|
+
Y,
|
|
1025
1025
|
{
|
|
1026
|
-
id:
|
|
1026
|
+
id: d.id,
|
|
1027
1027
|
name: f,
|
|
1028
|
-
image:
|
|
1028
|
+
image: d.image,
|
|
1029
1029
|
size: 40
|
|
1030
1030
|
}
|
|
1031
1031
|
),
|
|
1032
|
-
/* @__PURE__ */
|
|
1032
|
+
/* @__PURE__ */ u("div", { className: "flex-1 min-w-0", children: [
|
|
1033
1033
|
/* @__PURE__ */ e("h4", { className: "text-sm font-medium text-charcoal truncate", children: f }),
|
|
1034
|
-
|
|
1034
|
+
g && /* @__PURE__ */ e("p", { className: "text-xs text-stone truncate", children: g })
|
|
1035
1035
|
] })
|
|
1036
1036
|
] }),
|
|
1037
|
-
/* @__PURE__ */ e("div", { className: "flex-shrink-0", children: E ===
|
|
1037
|
+
/* @__PURE__ */ e("div", { className: "flex-shrink-0", children: E === d.id ? /* @__PURE__ */ e(ee, { className: "h-5 w-5 text-primary animate-spin" }) : /* @__PURE__ */ e(ce, { className: "h-5 w-5 text-stone" }) })
|
|
1038
1038
|
] })
|
|
1039
1039
|
}
|
|
1040
|
-
) },
|
|
1040
|
+
) }, d.id);
|
|
1041
1041
|
}),
|
|
1042
|
-
m && /* @__PURE__ */ e("li", { className: "p-4 flex justify-center", children: /* @__PURE__ */
|
|
1042
|
+
m && /* @__PURE__ */ e("li", { className: "p-4 flex justify-center", children: /* @__PURE__ */ u("div", { className: "flex items-center space-x-2", children: [
|
|
1043
1043
|
/* @__PURE__ */ e("div", { className: "w-4 h-4 animate-spin rounded-full border-2 border-primary border-t-transparent" }),
|
|
1044
1044
|
/* @__PURE__ */ e("span", { className: "text-sm text-stone", children: "Loading more..." })
|
|
1045
1045
|
] }) })
|
|
1046
1046
|
] }) })
|
|
1047
1047
|
] });
|
|
1048
|
-
},
|
|
1048
|
+
}, ls = ({ hasChannels: t }) => /* @__PURE__ */ e("div", { className: "messaging-empty-state flex items-center justify-center h-full p-8 text-balance", children: /* @__PURE__ */ u("div", { className: "text-center max-w-sm", children: [
|
|
1049
1049
|
/* @__PURE__ */ e("div", { className: "w-24 h-24 bg-primary-alt/10 rounded-full flex items-center justify-center mx-auto mb-6", children: /* @__PURE__ */ e("span", { className: "text-4xl", children: "๐ฌ" }) }),
|
|
1050
1050
|
/* @__PURE__ */ e("h2", { className: "font-semibold text-charcoal", children: "Welcome to Messages" }),
|
|
1051
|
-
/* @__PURE__ */ e("p", { className: "text-stone text-sm mb-6", children: t ?
|
|
1052
|
-
|
|
1053
|
-
" ",
|
|
1054
|
-
s && /* @__PURE__ */ d(me, { onClick: s, children: [
|
|
1055
|
-
"start a new conversation with a ",
|
|
1056
|
-
n.slice(0, -1),
|
|
1057
|
-
"."
|
|
1058
|
-
] })
|
|
1059
|
-
] }) : s && /* @__PURE__ */ d(se, { children: [
|
|
1060
|
-
/* @__PURE__ */ d(me, { onClick: s, children: [
|
|
1061
|
-
"Start a new conversation with one of your ",
|
|
1062
|
-
n
|
|
1063
|
-
] }),
|
|
1064
|
-
" ",
|
|
1065
|
-
"to begin messaging."
|
|
1066
|
-
] }) })
|
|
1067
|
-
] }) }), me = ({
|
|
1068
|
-
onClick: t,
|
|
1069
|
-
children: s
|
|
1070
|
-
}) => /* @__PURE__ */ e(
|
|
1071
|
-
"button",
|
|
1072
|
-
{
|
|
1073
|
-
type: "button",
|
|
1074
|
-
onClick: t,
|
|
1075
|
-
className: "inline-flex items-center gap-1 text-sm font-medium text-primary hover:text-primary-alt focus:outline-none focus:ring-2 focus:ring-primary",
|
|
1076
|
-
children: s
|
|
1077
|
-
}
|
|
1078
|
-
), le = ({ message: t, onBack: s }) => /* @__PURE__ */ e("div", { className: "messaging-error-state flex items-center justify-center h-full p-8", children: /* @__PURE__ */ d("div", { className: "text-center max-w-sm", children: [
|
|
1051
|
+
/* @__PURE__ */ e("p", { className: "text-stone text-sm mb-6", children: t ? "Choose a conversation from the list." : "No conversations yet." })
|
|
1052
|
+
] }) }), re = ({ message: t, onBack: s }) => /* @__PURE__ */ e("div", { className: "messaging-error-state flex items-center justify-center h-full p-8", children: /* @__PURE__ */ u("div", { className: "text-center max-w-sm", children: [
|
|
1079
1053
|
/* @__PURE__ */ e("div", { className: "w-24 h-24 bg-danger-alt/20 rounded-full flex items-center justify-center mx-auto mb-6", children: /* @__PURE__ */ e("span", { className: "text-4xl", children: "โ ๏ธ" }) }),
|
|
1080
1054
|
/* @__PURE__ */ e("h2", { className: "font-semibold text-charcoal mb-2", children: "Oops!" }),
|
|
1081
1055
|
/* @__PURE__ */ e("p", { className: "text-stone text-sm mb-6", children: t }),
|
|
@@ -1084,16 +1058,16 @@ const as = ({
|
|
|
1084
1058
|
{
|
|
1085
1059
|
type: "button",
|
|
1086
1060
|
onClick: s,
|
|
1087
|
-
className: "inline-flex items-center gap-2 px-4 py-2 text-sm font-medium text-white bg-
|
|
1061
|
+
className: "inline-flex items-center gap-2 px-4 py-2 text-sm font-medium text-white bg-[#7f22fe] hover:bg-primary-alt rounded-lg focus:outline-none focus:ring-2 focus:ring-primary transition-colors",
|
|
1088
1062
|
children: "Go Back"
|
|
1089
1063
|
}
|
|
1090
1064
|
)
|
|
1091
|
-
] }) }),
|
|
1065
|
+
] }) }), os = ({ className: t, message: s }) => /* @__PURE__ */ u(
|
|
1092
1066
|
"div",
|
|
1093
1067
|
{
|
|
1094
|
-
className:
|
|
1068
|
+
className: k("flex items-center justify-center h-full", t),
|
|
1095
1069
|
children: [
|
|
1096
|
-
/* @__PURE__ */
|
|
1070
|
+
/* @__PURE__ */ u("svg", { viewBox: "0 0 100 100", className: "size-8 fill-pebble", stroke: "none", children: [
|
|
1097
1071
|
/* @__PURE__ */ e("circle", { cx: "6", cy: "50", r: "6", children: /* @__PURE__ */ e(
|
|
1098
1072
|
"animateTransform",
|
|
1099
1073
|
{
|
|
@@ -1131,10 +1105,10 @@ const as = ({
|
|
|
1131
1105
|
s && /* @__PURE__ */ e("span", { className: "text-stone", children: s })
|
|
1132
1106
|
]
|
|
1133
1107
|
}
|
|
1134
|
-
),
|
|
1135
|
-
/* @__PURE__ */ e(
|
|
1108
|
+
), as = () => /* @__PURE__ */ e("div", { className: "messaging-loading-state flex items-center justify-center h-full", children: /* @__PURE__ */ u("div", { className: "flex items-center", children: [
|
|
1109
|
+
/* @__PURE__ */ e(os, { className: "w-6 h-6" }),
|
|
1136
1110
|
/* @__PURE__ */ e("span", { className: "text-sm text-stone", children: "Loading messages" })
|
|
1137
|
-
] }) }),
|
|
1111
|
+
] }) }), xs = ({
|
|
1138
1112
|
capabilities: t = {},
|
|
1139
1113
|
className: s,
|
|
1140
1114
|
renderMessageInputActions: n,
|
|
@@ -1145,123 +1119,119 @@ const as = ({
|
|
|
1145
1119
|
CustomChannelEmptyState: l,
|
|
1146
1120
|
showChannelList: o = !0,
|
|
1147
1121
|
filters: w,
|
|
1148
|
-
channelListCustomEmptyStateIndicator:
|
|
1122
|
+
channelListCustomEmptyStateIndicator: y
|
|
1149
1123
|
}) => {
|
|
1150
1124
|
const {
|
|
1151
|
-
service:
|
|
1125
|
+
service: x,
|
|
1152
1126
|
client: m,
|
|
1153
1127
|
isConnected: S,
|
|
1154
|
-
isLoading:
|
|
1128
|
+
isLoading: h,
|
|
1155
1129
|
error: b,
|
|
1156
1130
|
refreshConnection: E,
|
|
1157
1131
|
debug: v
|
|
1158
|
-
} =
|
|
1159
|
-
|
|
1160
|
-
participantSource: k,
|
|
1161
|
-
participantLabel: M = "participants"
|
|
1162
|
-
} = t, A = Y.useMemo(() => {
|
|
1163
|
-
const h = m == null ? void 0 : m.userID;
|
|
1132
|
+
} = Ge(), [R, C] = I(null), [F, p] = I(!1), [d, f] = I(!1), [g, D] = I(/* @__PURE__ */ new Set()), [W, A] = I(0), [U, G] = I(!1), [J, H] = I(null), V = z(null), { participantSource: Q, participantLabel: T = "participants" } = t, O = q.useMemo(() => {
|
|
1133
|
+
const N = m == null ? void 0 : m.userID;
|
|
1164
1134
|
return {
|
|
1165
1135
|
...{
|
|
1166
1136
|
type: "messaging",
|
|
1167
1137
|
last_message_at: { $exists: !0 },
|
|
1168
|
-
...
|
|
1169
|
-
members: { $in: [
|
|
1138
|
+
...N && {
|
|
1139
|
+
members: { $in: [N] },
|
|
1170
1140
|
hidden: !1
|
|
1171
1141
|
}
|
|
1172
1142
|
},
|
|
1173
1143
|
...w
|
|
1174
1144
|
};
|
|
1175
|
-
}, [w, m == null ? void 0 : m.userID]),
|
|
1145
|
+
}, [w, m == null ? void 0 : m.userID]), L = z(null), _ = P(async () => {
|
|
1176
1146
|
if (!m || !S) return;
|
|
1177
|
-
const
|
|
1178
|
-
if (
|
|
1147
|
+
const N = m.userID;
|
|
1148
|
+
if (N)
|
|
1179
1149
|
try {
|
|
1180
|
-
v && console.log("[MessagingShell] Syncing channels for user:",
|
|
1181
|
-
const
|
|
1150
|
+
v && console.log("[MessagingShell] Syncing channels for user:", N);
|
|
1151
|
+
const j = await m.queryChannels(
|
|
1182
1152
|
{
|
|
1183
1153
|
type: "messaging",
|
|
1184
|
-
members: { $in: [
|
|
1154
|
+
members: { $in: [N] }
|
|
1185
1155
|
},
|
|
1186
1156
|
{},
|
|
1187
1157
|
{ limit: 100 }
|
|
1188
|
-
),
|
|
1189
|
-
|
|
1190
|
-
const
|
|
1191
|
-
Object.values(
|
|
1192
|
-
var
|
|
1193
|
-
const
|
|
1194
|
-
|
|
1158
|
+
), M = /* @__PURE__ */ new Set();
|
|
1159
|
+
j.forEach((B) => {
|
|
1160
|
+
const Ee = B.state.members;
|
|
1161
|
+
Object.values(Ee).forEach((Ie) => {
|
|
1162
|
+
var le;
|
|
1163
|
+
const te = (le = Ie.user) == null ? void 0 : le.id;
|
|
1164
|
+
te && te !== N && M.add(te);
|
|
1195
1165
|
});
|
|
1196
|
-
}), D(
|
|
1197
|
-
channelCount:
|
|
1198
|
-
memberCount:
|
|
1166
|
+
}), D(M), p(j.length > 0), L.current = N, v && console.log("[MessagingShell] Channels synced successfully:", {
|
|
1167
|
+
channelCount: j.length,
|
|
1168
|
+
memberCount: M.size
|
|
1199
1169
|
});
|
|
1200
|
-
} catch (
|
|
1201
|
-
console.error("[MessagingShell] Failed to sync channels:",
|
|
1170
|
+
} catch (j) {
|
|
1171
|
+
console.error("[MessagingShell] Failed to sync channels:", j);
|
|
1202
1172
|
}
|
|
1203
1173
|
}, [m, S, v]);
|
|
1204
|
-
|
|
1174
|
+
$(() => {
|
|
1205
1175
|
if (!m || !S) return;
|
|
1206
|
-
const
|
|
1207
|
-
|
|
1208
|
-
}, [m, S,
|
|
1176
|
+
const N = m.userID;
|
|
1177
|
+
N && L.current !== N && _();
|
|
1178
|
+
}, [m, S, _]), $(() => {
|
|
1209
1179
|
if (!c || !m || !S) return;
|
|
1210
1180
|
(async () => {
|
|
1211
|
-
const
|
|
1212
|
-
if (
|
|
1181
|
+
const j = m.userID;
|
|
1182
|
+
if (j)
|
|
1213
1183
|
try {
|
|
1214
1184
|
v && console.log(
|
|
1215
1185
|
"[MessagingShell] Loading initial conversation with:",
|
|
1216
1186
|
c
|
|
1217
1187
|
);
|
|
1218
|
-
const
|
|
1188
|
+
const M = await m.queryChannels(
|
|
1219
1189
|
{
|
|
1220
1190
|
type: "messaging",
|
|
1221
|
-
members: { $eq: [
|
|
1191
|
+
members: { $eq: [j, c] }
|
|
1222
1192
|
},
|
|
1223
1193
|
{},
|
|
1224
1194
|
{ limit: 1 }
|
|
1225
1195
|
);
|
|
1226
|
-
if (
|
|
1227
|
-
C(
|
|
1196
|
+
if (M.length > 0)
|
|
1197
|
+
C(M[0]), G(!0), H(null), r && r(M[0]), v && console.log(
|
|
1228
1198
|
"[MessagingShell] Initial conversation loaded:",
|
|
1229
|
-
|
|
1199
|
+
M[0].id
|
|
1230
1200
|
);
|
|
1231
|
-
else if (i &&
|
|
1201
|
+
else if (i && x) {
|
|
1232
1202
|
v && console.log(
|
|
1233
1203
|
"[MessagingShell] No conversation found, creating one for:",
|
|
1234
1204
|
i
|
|
1235
1205
|
);
|
|
1236
1206
|
try {
|
|
1237
|
-
const
|
|
1207
|
+
const B = await x.startChannelWithParticipant({
|
|
1238
1208
|
id: i.id,
|
|
1239
1209
|
name: i.name,
|
|
1240
1210
|
email: i.email,
|
|
1241
1211
|
phone: i.phone
|
|
1242
1212
|
});
|
|
1243
|
-
C(
|
|
1213
|
+
C(B), G(!0), H(null), r && r(B), v && console.log(
|
|
1244
1214
|
"[MessagingShell] Channel created and loaded:",
|
|
1245
|
-
|
|
1215
|
+
B.id
|
|
1246
1216
|
);
|
|
1247
|
-
} catch (
|
|
1217
|
+
} catch (B) {
|
|
1248
1218
|
console.error(
|
|
1249
1219
|
"[MessagingShell] Failed to create conversation:",
|
|
1250
|
-
|
|
1251
|
-
),
|
|
1220
|
+
B
|
|
1221
|
+
), H("Failed to create conversation");
|
|
1252
1222
|
}
|
|
1253
1223
|
} else
|
|
1254
|
-
|
|
1224
|
+
H(
|
|
1255
1225
|
"No conversation found with this account"
|
|
1256
1226
|
), v && console.log(
|
|
1257
1227
|
"[MessagingShell] No conversation found for:",
|
|
1258
1228
|
c
|
|
1259
1229
|
);
|
|
1260
|
-
} catch (
|
|
1230
|
+
} catch (M) {
|
|
1261
1231
|
console.error(
|
|
1262
1232
|
"[MessagingShell] Failed to load initial conversation:",
|
|
1263
|
-
|
|
1264
|
-
),
|
|
1233
|
+
M
|
|
1234
|
+
), H("Failed to load conversation");
|
|
1265
1235
|
}
|
|
1266
1236
|
})();
|
|
1267
1237
|
}, [
|
|
@@ -1269,96 +1239,93 @@ const as = ({
|
|
|
1269
1239
|
i,
|
|
1270
1240
|
m,
|
|
1271
1241
|
S,
|
|
1272
|
-
|
|
1242
|
+
x,
|
|
1273
1243
|
v,
|
|
1274
1244
|
r
|
|
1275
1245
|
]);
|
|
1276
|
-
const
|
|
1277
|
-
(
|
|
1278
|
-
C(
|
|
1246
|
+
const X = P(
|
|
1247
|
+
(N) => {
|
|
1248
|
+
C(N), r == null || r(N);
|
|
1279
1249
|
},
|
|
1280
1250
|
[r]
|
|
1281
|
-
),
|
|
1282
|
-
|
|
1283
|
-
}, [
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
async (h) => {
|
|
1288
|
-
var L;
|
|
1289
|
-
if (N)
|
|
1251
|
+
), be = P(() => {
|
|
1252
|
+
U || C(null);
|
|
1253
|
+
}, [U]), ve = P(
|
|
1254
|
+
async (N) => {
|
|
1255
|
+
var j;
|
|
1256
|
+
if (x)
|
|
1290
1257
|
try {
|
|
1291
1258
|
v && console.log(
|
|
1292
1259
|
"[MessagingShell] Starting conversation with:",
|
|
1293
|
-
|
|
1260
|
+
N.id
|
|
1294
1261
|
);
|
|
1295
|
-
const
|
|
1296
|
-
id:
|
|
1297
|
-
name:
|
|
1298
|
-
email:
|
|
1299
|
-
phone:
|
|
1262
|
+
const M = await x.startChannelWithParticipant({
|
|
1263
|
+
id: N.id,
|
|
1264
|
+
name: N.name,
|
|
1265
|
+
email: N.email,
|
|
1266
|
+
phone: N.phone
|
|
1300
1267
|
});
|
|
1301
1268
|
try {
|
|
1302
|
-
await
|
|
1303
|
-
} catch (
|
|
1304
|
-
console.warn("[MessagingShell] Failed to unhide channel:",
|
|
1269
|
+
await M.show();
|
|
1270
|
+
} catch (B) {
|
|
1271
|
+
console.warn("[MessagingShell] Failed to unhide channel:", B);
|
|
1305
1272
|
}
|
|
1306
|
-
C(
|
|
1307
|
-
} catch (
|
|
1308
|
-
console.error("[MessagingShell] Failed to start conversation:",
|
|
1273
|
+
C(M), f(!1), (j = V.current) == null || j.close(), a == null || a(N);
|
|
1274
|
+
} catch (M) {
|
|
1275
|
+
console.error("[MessagingShell] Failed to start conversation:", M);
|
|
1309
1276
|
}
|
|
1310
1277
|
},
|
|
1311
|
-
[
|
|
1312
|
-
),
|
|
1313
|
-
var
|
|
1314
|
-
f(!1), (
|
|
1315
|
-
}, []),
|
|
1316
|
-
async (
|
|
1317
|
-
v && console.log("[MessagingShell] Leaving conversation:",
|
|
1278
|
+
[x, a, v]
|
|
1279
|
+
), ne = P(() => {
|
|
1280
|
+
var N;
|
|
1281
|
+
f(!1), (N = V.current) == null || N.close();
|
|
1282
|
+
}, []), Ce = P(
|
|
1283
|
+
async (N) => {
|
|
1284
|
+
v && console.log("[MessagingShell] Leaving conversation:", N.id), C(null), G(!1), L.current = null, await _();
|
|
1318
1285
|
},
|
|
1319
|
-
[
|
|
1320
|
-
),
|
|
1321
|
-
async (
|
|
1322
|
-
v && console.log("[MessagingShell] Blocking participant:",
|
|
1286
|
+
[_, v]
|
|
1287
|
+
), we = P(
|
|
1288
|
+
async (N) => {
|
|
1289
|
+
v && console.log("[MessagingShell] Blocking participant:", N), C(null), G(!1), L.current = null, await _();
|
|
1323
1290
|
},
|
|
1324
|
-
[
|
|
1325
|
-
), Z = !!
|
|
1326
|
-
return
|
|
1327
|
-
|
|
1291
|
+
[_, v]
|
|
1292
|
+
), Z = !!R;
|
|
1293
|
+
return h ? /* @__PURE__ */ e("div", { className: k("h-full", s), children: /* @__PURE__ */ e(as, {}) }) : b ? /* @__PURE__ */ e("div", { className: k("h-full", s), children: /* @__PURE__ */ e(re, { message: b, onBack: E }) }) : !S || !m ? /* @__PURE__ */ e("div", { className: k("h-full", s), children: /* @__PURE__ */ e(
|
|
1294
|
+
re,
|
|
1328
1295
|
{
|
|
1329
1296
|
message: "Not connected to messaging service",
|
|
1330
1297
|
onBack: E
|
|
1331
1298
|
}
|
|
1332
|
-
) }) :
|
|
1299
|
+
) }) : J ? /* @__PURE__ */ e("div", { className: k("h-full", s), children: /* @__PURE__ */ e(re, { message: J }) }) : /* @__PURE__ */ u(
|
|
1333
1300
|
"div",
|
|
1334
1301
|
{
|
|
1335
|
-
className:
|
|
1302
|
+
className: k(
|
|
1336
1303
|
"messaging-shell h-full bg-white overflow-hidden",
|
|
1337
1304
|
s
|
|
1338
1305
|
),
|
|
1339
1306
|
children: [
|
|
1340
|
-
/* @__PURE__ */
|
|
1307
|
+
/* @__PURE__ */ u("div", { className: "flex h-full min-h-0", children: [
|
|
1341
1308
|
/* @__PURE__ */ e(
|
|
1342
1309
|
"div",
|
|
1343
1310
|
{
|
|
1344
|
-
className:
|
|
1311
|
+
className: k(
|
|
1345
1312
|
"messaging-channel-list-sidebar min-h-0 min-w-0 bg-white lg:bg-chalk lg:flex lg:flex-col lg:border-r lg:border-sand",
|
|
1346
1313
|
{
|
|
1347
1314
|
// Explicitly hidden via prop or in direct conversation mode
|
|
1348
|
-
"!hidden": o === !1 ||
|
|
1315
|
+
"!hidden": o === !1 || U,
|
|
1349
1316
|
// Normal mode: hide on mobile when channel selected, show on desktop
|
|
1350
|
-
"hidden lg:flex lg:w-80 lg:min-w-[280px] lg:max-w-[360px]": o !== !1 && !
|
|
1317
|
+
"hidden lg:flex lg:w-80 lg:min-w-[280px] lg:max-w-[360px]": o !== !1 && !U && Z,
|
|
1351
1318
|
// Normal mode: show when no channel selected
|
|
1352
|
-
"flex flex-col w-full lg:flex-1 lg:max-w-2xl": o !== !1 && !
|
|
1319
|
+
"flex flex-col w-full lg:flex-1 lg:max-w-2xl": o !== !1 && !U && !Z
|
|
1353
1320
|
}
|
|
1354
1321
|
),
|
|
1355
1322
|
children: /* @__PURE__ */ e(
|
|
1356
|
-
|
|
1323
|
+
Qe,
|
|
1357
1324
|
{
|
|
1358
|
-
onChannelSelect:
|
|
1359
|
-
selectedChannel:
|
|
1360
|
-
filters:
|
|
1361
|
-
customEmptyStateIndicator:
|
|
1325
|
+
onChannelSelect: X,
|
|
1326
|
+
selectedChannel: R || void 0,
|
|
1327
|
+
filters: O,
|
|
1328
|
+
customEmptyStateIndicator: y
|
|
1362
1329
|
}
|
|
1363
1330
|
)
|
|
1364
1331
|
}
|
|
@@ -1366,66 +1333,59 @@ const as = ({
|
|
|
1366
1333
|
/* @__PURE__ */ e(
|
|
1367
1334
|
"div",
|
|
1368
1335
|
{
|
|
1369
|
-
className:
|
|
1336
|
+
className: k(
|
|
1370
1337
|
"messaging-conversation-view flex-1 flex-col min-w-0 min-h-0",
|
|
1371
1338
|
{
|
|
1372
1339
|
// In direct conversation mode, always show (full width)
|
|
1373
|
-
flex:
|
|
1340
|
+
flex: U || Z,
|
|
1374
1341
|
// Normal mode: hide on mobile when no channel selected
|
|
1375
|
-
"hidden lg:flex": !
|
|
1342
|
+
"hidden lg:flex": !U && !Z
|
|
1376
1343
|
}
|
|
1377
1344
|
),
|
|
1378
|
-
children:
|
|
1379
|
-
|
|
1345
|
+
children: R ? /* @__PURE__ */ e("div", { className: "flex-1 min-h-0 flex flex-col", children: /* @__PURE__ */ e(
|
|
1346
|
+
ns,
|
|
1380
1347
|
{
|
|
1381
|
-
channel:
|
|
1382
|
-
onBack:
|
|
1383
|
-
showBackButton: !
|
|
1348
|
+
channel: R,
|
|
1349
|
+
onBack: be,
|
|
1350
|
+
showBackButton: !U,
|
|
1384
1351
|
renderMessageInputActions: n,
|
|
1385
|
-
onLeaveConversation:
|
|
1386
|
-
onBlockParticipant:
|
|
1352
|
+
onLeaveConversation: Ce,
|
|
1353
|
+
onBlockParticipant: we,
|
|
1387
1354
|
CustomChannelEmptyState: l
|
|
1388
1355
|
},
|
|
1389
|
-
|
|
1390
|
-
) }) : /* @__PURE__ */ e(
|
|
1391
|
-
is,
|
|
1392
|
-
{
|
|
1393
|
-
hasChannels: T,
|
|
1394
|
-
onStartConversation: X ? we : void 0,
|
|
1395
|
-
participantLabel: M
|
|
1396
|
-
}
|
|
1397
|
-
)
|
|
1356
|
+
R.id
|
|
1357
|
+
) }) : /* @__PURE__ */ e(ls, { hasChannels: F })
|
|
1398
1358
|
}
|
|
1399
1359
|
)
|
|
1400
1360
|
] }),
|
|
1401
|
-
|
|
1361
|
+
Q && // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-noninteractive-element-interactions
|
|
1402
1362
|
/* @__PURE__ */ e(
|
|
1403
1363
|
"dialog",
|
|
1404
1364
|
{
|
|
1405
1365
|
ref: V,
|
|
1406
1366
|
className: "mes-dialog",
|
|
1407
|
-
onClick: (
|
|
1408
|
-
|
|
1367
|
+
onClick: (N) => {
|
|
1368
|
+
N.target === V.current && ne();
|
|
1409
1369
|
},
|
|
1410
|
-
onClose:
|
|
1370
|
+
onClose: ne,
|
|
1411
1371
|
children: /* @__PURE__ */ e("div", { className: "h-full w-full bg-white shadow-max-elevation-light", children: /* @__PURE__ */ e(
|
|
1412
|
-
|
|
1372
|
+
rs,
|
|
1413
1373
|
{
|
|
1414
|
-
participantSource:
|
|
1415
|
-
onSelectParticipant:
|
|
1416
|
-
onClose:
|
|
1417
|
-
existingParticipantIds:
|
|
1418
|
-
participantLabel:
|
|
1419
|
-
searchPlaceholder: `Search ${
|
|
1374
|
+
participantSource: Q,
|
|
1375
|
+
onSelectParticipant: ve,
|
|
1376
|
+
onClose: ne,
|
|
1377
|
+
existingParticipantIds: g,
|
|
1378
|
+
participantLabel: T,
|
|
1379
|
+
searchPlaceholder: `Search ${T}...`
|
|
1420
1380
|
},
|
|
1421
|
-
|
|
1381
|
+
W
|
|
1422
1382
|
) })
|
|
1423
1383
|
}
|
|
1424
1384
|
)
|
|
1425
1385
|
]
|
|
1426
1386
|
}
|
|
1427
1387
|
);
|
|
1428
|
-
},
|
|
1388
|
+
}, is = ({
|
|
1429
1389
|
question: t,
|
|
1430
1390
|
onClick: s,
|
|
1431
1391
|
loading: n = !1,
|
|
@@ -1437,7 +1397,7 @@ const as = ({
|
|
|
1437
1397
|
onClick: s,
|
|
1438
1398
|
disabled: n,
|
|
1439
1399
|
style: { backgroundColor: "#E6E5E3" },
|
|
1440
|
-
className:
|
|
1400
|
+
className: k(
|
|
1441
1401
|
"w-full text-center p-4 rounded-xl text-charcoal font-medium transition-colors",
|
|
1442
1402
|
{
|
|
1443
1403
|
"hover:brightness-95 active:brightness-90": !n,
|
|
@@ -1447,7 +1407,7 @@ const as = ({
|
|
|
1447
1407
|
),
|
|
1448
1408
|
children: t
|
|
1449
1409
|
}
|
|
1450
|
-
),
|
|
1410
|
+
), Ns = ({
|
|
1451
1411
|
faqs: t,
|
|
1452
1412
|
onFaqClick: s,
|
|
1453
1413
|
loadingFaqId: n,
|
|
@@ -1457,9 +1417,9 @@ const as = ({
|
|
|
1457
1417
|
avatarName: i
|
|
1458
1418
|
}) => {
|
|
1459
1419
|
const l = t.filter((o) => o.enabled).sort((o, w) => (o.order ?? 0) - (w.order ?? 0));
|
|
1460
|
-
return l.length === 0 ? null : /* @__PURE__ */ e("div", { className:
|
|
1420
|
+
return l.length === 0 ? null : /* @__PURE__ */ e("div", { className: k("px-4 py-6", a), children: /* @__PURE__ */ u("div", { className: "flex gap-3 items-end", children: [
|
|
1461
1421
|
(c || i) && /* @__PURE__ */ e("div", { className: "flex-none", children: /* @__PURE__ */ e(
|
|
1462
|
-
|
|
1422
|
+
Y,
|
|
1463
1423
|
{
|
|
1464
1424
|
id: i || "account",
|
|
1465
1425
|
name: i || "Account",
|
|
@@ -1468,7 +1428,7 @@ const as = ({
|
|
|
1468
1428
|
shape: "circle"
|
|
1469
1429
|
}
|
|
1470
1430
|
) }),
|
|
1471
|
-
/* @__PURE__ */
|
|
1431
|
+
/* @__PURE__ */ u(
|
|
1472
1432
|
"div",
|
|
1473
1433
|
{
|
|
1474
1434
|
className: "flex-1 flex flex-col gap-3 rounded-lg p-4",
|
|
@@ -1476,7 +1436,7 @@ const as = ({
|
|
|
1476
1436
|
children: [
|
|
1477
1437
|
r && /* @__PURE__ */ e("p", { className: "text-md text-charcoal mb-4", children: r }),
|
|
1478
1438
|
l.map((o) => /* @__PURE__ */ e(
|
|
1479
|
-
|
|
1439
|
+
is,
|
|
1480
1440
|
{
|
|
1481
1441
|
question: o.question,
|
|
1482
1442
|
onClick: () => s(o.id),
|
|
@@ -1488,59 +1448,59 @@ const as = ({
|
|
|
1488
1448
|
}
|
|
1489
1449
|
)
|
|
1490
1450
|
] }) });
|
|
1491
|
-
},
|
|
1492
|
-
const { initialSearch: n = "", pageSize: r = 20 } = s, [a, c] =
|
|
1451
|
+
}, bs = (t, s = {}) => {
|
|
1452
|
+
const { initialSearch: n = "", pageSize: r = 20 } = s, [a, c] = I([]), [i, l] = I(!1), [o, w] = I(null), [y, x] = I(n), [m, S] = I(!0), [h, b] = I(), E = P(async (F = !1, p) => {
|
|
1493
1453
|
if (i) return;
|
|
1494
|
-
const
|
|
1454
|
+
const d = p !== void 0 ? p : y;
|
|
1495
1455
|
l(!0), w(null);
|
|
1496
1456
|
try {
|
|
1497
1457
|
const f = await t.loadParticipants({
|
|
1498
|
-
search:
|
|
1458
|
+
search: d || void 0,
|
|
1499
1459
|
limit: r,
|
|
1500
|
-
cursor:
|
|
1460
|
+
cursor: F ? void 0 : h
|
|
1501
1461
|
});
|
|
1502
1462
|
c(
|
|
1503
|
-
(
|
|
1463
|
+
(g) => F ? f.participants : [...g, ...f.participants]
|
|
1504
1464
|
), S(f.hasMore), b(f.nextCursor);
|
|
1505
1465
|
} catch (f) {
|
|
1506
|
-
const
|
|
1507
|
-
w(
|
|
1466
|
+
const g = f instanceof Error ? f.message : "Failed to load participants";
|
|
1467
|
+
w(g), console.error("[useParticipants] Load error:", f);
|
|
1508
1468
|
} finally {
|
|
1509
1469
|
l(!1);
|
|
1510
1470
|
}
|
|
1511
|
-
}, [t,
|
|
1471
|
+
}, [t, y, h, r, i]), v = P(() => {
|
|
1512
1472
|
m && !i && E(!1);
|
|
1513
|
-
}, [m, i, E]),
|
|
1514
|
-
|
|
1473
|
+
}, [m, i, E]), R = P((F) => {
|
|
1474
|
+
x(F), b(void 0), E(!0, F);
|
|
1515
1475
|
}, [E]), C = P(() => {
|
|
1516
1476
|
b(void 0), E(!0);
|
|
1517
1477
|
}, [E]);
|
|
1518
|
-
return
|
|
1478
|
+
return $(() => {
|
|
1519
1479
|
E(!0);
|
|
1520
1480
|
}, [t.loadParticipants]), {
|
|
1521
1481
|
participants: a,
|
|
1522
1482
|
loading: i,
|
|
1523
1483
|
error: o,
|
|
1524
|
-
searchQuery:
|
|
1484
|
+
searchQuery: y,
|
|
1525
1485
|
hasMore: m,
|
|
1526
1486
|
totalCount: t.totalCount,
|
|
1527
1487
|
loadMore: v,
|
|
1528
|
-
search:
|
|
1488
|
+
search: R,
|
|
1529
1489
|
refresh: C
|
|
1530
1490
|
};
|
|
1531
1491
|
};
|
|
1532
1492
|
export {
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1493
|
+
Y as Avatar,
|
|
1494
|
+
Ne as ChannelEmptyState,
|
|
1495
|
+
Qe as ChannelList,
|
|
1496
|
+
ns as ChannelView,
|
|
1497
|
+
Ns as FaqList,
|
|
1498
|
+
is as FaqListItem,
|
|
1499
|
+
gs as MessagingProvider,
|
|
1500
|
+
xs as MessagingShell,
|
|
1501
|
+
rs as ParticipantPicker,
|
|
1502
|
+
We as formatRelativeTime,
|
|
1503
|
+
Ge as useMessaging,
|
|
1504
|
+
bs as useParticipants
|
|
1545
1505
|
};
|
|
1546
1506
|
//# sourceMappingURL=index.js.map
|