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