@ermis-network/ermis-chat-react 1.0.8 → 1.0.9
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.cjs +9 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +9 -8
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
- package/src/components/MessageInput.tsx +11 -9
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ermis-network/ermis-chat-react",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.9",
|
|
4
4
|
"description": "React UI components for Ermis Chat",
|
|
5
5
|
"author": "Ermis",
|
|
6
6
|
"homepage": "https://ermis.network/",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"/src"
|
|
21
21
|
],
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@ermis-network/ermis-chat-sdk": "1.0.
|
|
23
|
+
"@ermis-network/ermis-chat-sdk": "1.0.9",
|
|
24
24
|
"virtua": "^0.48.8"
|
|
25
25
|
},
|
|
26
26
|
"peerDependencies": {
|
|
@@ -16,6 +16,7 @@ import { buildUserMap, replaceMentionsForPreview, moveCaretToEnd } from '../util
|
|
|
16
16
|
import { getMentionHtml } from '../hooks/useMentions';
|
|
17
17
|
import { useChannelCapabilities } from '../hooks/useChannelCapabilities';
|
|
18
18
|
import { CHANNEL_ROLES } from '../channelRoleUtils';
|
|
19
|
+
import { isTopicChannel } from '../channelTypeUtils';
|
|
19
20
|
import type { MentionMember, MessageInputProps, FilePreviewItem } from '../types';
|
|
20
21
|
|
|
21
22
|
export type { MessageInputProps, SendButtonProps, AttachButtonProps, EmojiPickerProps, EmojiButtonProps } from '../types';
|
|
@@ -54,6 +55,7 @@ export const MessageInput: React.FC<MessageInputProps> = React.memo(({
|
|
|
54
55
|
const [hasContent, setHasContent] = useState(false);
|
|
55
56
|
|
|
56
57
|
const { role, isGroupChannel: isTeamChannel, hasCapability } = useChannelCapabilities();
|
|
58
|
+
const isTopic = isTopicChannel(activeChannel);
|
|
57
59
|
const isClosedTopic = activeChannel?.data?.is_closed_topic === true;
|
|
58
60
|
|
|
59
61
|
// Slow Mode Logic
|
|
@@ -242,9 +244,9 @@ export const MessageInput: React.FC<MessageInputProps> = React.memo(({
|
|
|
242
244
|
toggleEmojiPicker,
|
|
243
245
|
} = useEmojiPicker({ editableRef, setHasContent });
|
|
244
246
|
|
|
245
|
-
// Build member list from channel state (only for team channels)
|
|
247
|
+
// Build member list from channel state (only for team channels and topics)
|
|
246
248
|
const members = useMemo<MentionMember[]>(() => {
|
|
247
|
-
if (!isTeamChannel) return [];
|
|
249
|
+
if (!(isTeamChannel || isTopic)) return [];
|
|
248
250
|
const list: MentionMember[] = [];
|
|
249
251
|
const stateMembers = activeChannel?.state?.members as Record<string, unknown> | undefined;
|
|
250
252
|
if (stateMembers && typeof stateMembers === 'object') {
|
|
@@ -258,7 +260,7 @@ export const MessageInput: React.FC<MessageInputProps> = React.memo(({
|
|
|
258
260
|
}
|
|
259
261
|
}
|
|
260
262
|
return list;
|
|
261
|
-
}, [activeChannel, isTeamChannel]);
|
|
263
|
+
}, [activeChannel, isTeamChannel, isTopic]);
|
|
262
264
|
|
|
263
265
|
const {
|
|
264
266
|
showSuggestions, filteredMembers, highlightIndex,
|
|
@@ -289,7 +291,7 @@ export const MessageInput: React.FC<MessageInputProps> = React.memo(({
|
|
|
289
291
|
setFiles,
|
|
290
292
|
hasContent,
|
|
291
293
|
setHasContent,
|
|
292
|
-
isTeamChannel,
|
|
294
|
+
isTeamChannel: isTeamChannel || isTopic,
|
|
293
295
|
buildPayload,
|
|
294
296
|
reset,
|
|
295
297
|
syncMessages,
|
|
@@ -324,12 +326,12 @@ export const MessageInput: React.FC<MessageInputProps> = React.memo(({
|
|
|
324
326
|
const content = el?.textContent?.trim() ?? '';
|
|
325
327
|
setHasContent(content.length > 0 || files.length > 0);
|
|
326
328
|
setKeywordError(null); // clear keyword error if user modifies input
|
|
327
|
-
if (isTeamChannel && !disableMentions) {
|
|
329
|
+
if ((isTeamChannel || isTopic) && !disableMentions) {
|
|
328
330
|
mentionHandleInput();
|
|
329
331
|
}
|
|
330
332
|
// Send typing indicator (SDK throttles to 1 event per 2s)
|
|
331
333
|
activeChannel?.keystroke();
|
|
332
|
-
}, [isTeamChannel, disableMentions, mentionHandleInput, files.length, activeChannel]);
|
|
334
|
+
}, [isTeamChannel, isTopic, disableMentions, mentionHandleInput, files.length, activeChannel]);
|
|
333
335
|
|
|
334
336
|
const handleKeyDown = useCallback(
|
|
335
337
|
(e: React.KeyboardEvent) => {
|
|
@@ -346,7 +348,7 @@ export const MessageInput: React.FC<MessageInputProps> = React.memo(({
|
|
|
346
348
|
return;
|
|
347
349
|
}
|
|
348
350
|
}
|
|
349
|
-
if (isTeamChannel && !disableMentions) {
|
|
351
|
+
if ((isTeamChannel || isTopic) && !disableMentions) {
|
|
350
352
|
const consumed = mentionHandleKeyDown(e);
|
|
351
353
|
if (consumed) return;
|
|
352
354
|
}
|
|
@@ -357,7 +359,7 @@ export const MessageInput: React.FC<MessageInputProps> = React.memo(({
|
|
|
357
359
|
}
|
|
358
360
|
}
|
|
359
361
|
},
|
|
360
|
-
[isTeamChannel, disableMentions, mentionHandleKeyDown, handleSend, editingMessage, quotedMessage, setEditingMessage, setQuotedMessage, reset],
|
|
362
|
+
[isTeamChannel, isTopic, disableMentions, mentionHandleKeyDown, handleSend, editingMessage, quotedMessage, setEditingMessage, setQuotedMessage, reset],
|
|
361
363
|
);
|
|
362
364
|
|
|
363
365
|
const handlePaste = useCallback((e: React.ClipboardEvent) => {
|
|
@@ -469,7 +471,7 @@ export const MessageInput: React.FC<MessageInputProps> = React.memo(({
|
|
|
469
471
|
{/* Text input + send row */}
|
|
470
472
|
<div className={`ermis-message-input__row${(!canSendMessage || isSlowModeBlocked || keywordError) ? ' ermis-message-input__row--banners-active' : ''}`}>
|
|
471
473
|
<div className="ermis-message-input__editable-wrapper">
|
|
472
|
-
{canSendMessage && isTeamChannel && !disableMentions && showSuggestions && (
|
|
474
|
+
{canSendMessage && (isTeamChannel || isTopic) && !disableMentions && showSuggestions && (
|
|
473
475
|
<MentionSuggestionsComponent
|
|
474
476
|
members={filteredMembers}
|
|
475
477
|
highlightIndex={highlightIndex}
|