@100mslive/roomkit-react 0.3.16-alpha.3 → 0.3.16-alpha.5
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/{HLSView-OECKVTGC.css → HLSView-6JEB22RR.css} +3 -3
- package/dist/{HLSView-OECKVTGC.css.map → HLSView-6JEB22RR.css.map} +1 -1
- package/dist/{HLSView-TBAYH564.js → HLSView-FAUUVAQH.js} +2 -2
- package/dist/{chunk-ADT3Q26H.js → chunk-TCGWVZGY.js} +998 -951
- package/dist/{chunk-ADT3Q26H.js.map → chunk-TCGWVZGY.js.map} +4 -4
- package/dist/index.cjs.css +2 -2
- package/dist/index.cjs.css.map +1 -1
- package/dist/index.cjs.js +1412 -1363
- package/dist/index.cjs.js.map +4 -4
- package/dist/index.css +2 -2
- package/dist/index.css.map +1 -1
- package/dist/index.js +1 -1
- package/dist/meta.cjs.json +80 -65
- package/dist/meta.esbuild.json +93 -78
- package/package.json +7 -7
- package/src/Prebuilt/App.tsx +21 -18
- package/src/Prebuilt/components/AudioVideoToggle.tsx +2 -2
- package/src/Prebuilt/components/MoreSettings/MoreSettings.tsx +1 -4
- package/src/Prebuilt/components/MoreSettings/SplitComponents/DesktopOptions.tsx +12 -2
- package/src/Prebuilt/components/Notifications/Notifications.tsx +3 -1
- package/src/Prebuilt/components/PIP/PIPChat.tsx +62 -14
- package/src/Prebuilt/components/PIP/PIPWindow.tsx +1 -1
- package/src/Prebuilt/components/PIP/usePIPChat.tsx +2 -0
- /package/dist/{HLSView-TBAYH564.js.map → HLSView-FAUUVAQH.js.map} +0 -0
|
@@ -2,6 +2,7 @@ import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
|
|
2
2
|
import {
|
|
3
3
|
selectHMSMessages,
|
|
4
4
|
selectLocalPeerID,
|
|
5
|
+
selectPeerNameByID,
|
|
5
6
|
selectSessionStore,
|
|
6
7
|
selectUnreadHMSMessagesCount,
|
|
7
8
|
useHMSStore,
|
|
@@ -14,6 +15,7 @@ import { Tooltip } from '../../../Tooltip';
|
|
|
14
15
|
import IconButton from '../../IconButton';
|
|
15
16
|
import { AnnotisedMessage } from '../Chat/ChatBody';
|
|
16
17
|
import { useRoomLayoutConferencingScreen } from '../../provider/roomLayoutProvider/hooks/useRoomLayoutScreen';
|
|
18
|
+
import { useIsPeerBlacklisted } from '../hooks/useChatBlacklist';
|
|
17
19
|
import { CHAT_MESSAGE_LIMIT, formatTime } from '../Chat/utils';
|
|
18
20
|
import { SESSION_STORE_KEY } from '../../common/constants';
|
|
19
21
|
|
|
@@ -43,10 +45,29 @@ export const PIPChat = () => {
|
|
|
43
45
|
const blacklistedMessageIDSet = new Set(blacklistedMessageIDs || []);
|
|
44
46
|
return messages?.filter(message => message.type === 'chat' && !blacklistedMessageIDSet.has(message.id)) || [];
|
|
45
47
|
}, [blacklistedMessageIDs, messages]);
|
|
48
|
+
const { enabled: isChatEnabled = true, updatedBy: chatStateUpdatedBy = '' } =
|
|
49
|
+
useHMSStore(selectSessionStore(SESSION_STORE_KEY.CHAT_STATE)) || {};
|
|
50
|
+
const isLocalPeerBlacklisted = useIsPeerBlacklisted({ local: true });
|
|
46
51
|
const { elements } = useRoomLayoutConferencingScreen();
|
|
47
52
|
const message_placeholder = elements?.chat?.message_placeholder || 'Send a message';
|
|
48
53
|
const canSendChatMessages = !!elements?.chat?.public_chat_enabled || !!elements?.chat?.roles_whitelist?.length;
|
|
49
54
|
|
|
55
|
+
const getChatStatus = useCallback(() => {
|
|
56
|
+
if (isLocalPeerBlacklisted) return "You've been blocked from sending messages";
|
|
57
|
+
if (!isChatEnabled)
|
|
58
|
+
return `Chat has been paused by ${
|
|
59
|
+
chatStateUpdatedBy.peerId === localPeerID ? 'you' : chatStateUpdatedBy?.userName
|
|
60
|
+
}`;
|
|
61
|
+
return message_placeholder;
|
|
62
|
+
}, [
|
|
63
|
+
chatStateUpdatedBy.peerId,
|
|
64
|
+
chatStateUpdatedBy?.userName,
|
|
65
|
+
isChatEnabled,
|
|
66
|
+
isLocalPeerBlacklisted,
|
|
67
|
+
localPeerID,
|
|
68
|
+
message_placeholder,
|
|
69
|
+
]);
|
|
70
|
+
|
|
50
71
|
return (
|
|
51
72
|
<div style={{ height: '100%' }}>
|
|
52
73
|
<Box
|
|
@@ -55,7 +76,7 @@ export const PIPChat = () => {
|
|
|
55
76
|
bg: '$surface_dim',
|
|
56
77
|
overflowY: 'auto',
|
|
57
78
|
// Subtracting height of footer
|
|
58
|
-
h: canSendChatMessages ? 'calc(100% -
|
|
79
|
+
h: canSendChatMessages ? 'calc(100% - 87px)' : '100%',
|
|
59
80
|
position: 'relative',
|
|
60
81
|
}}
|
|
61
82
|
>
|
|
@@ -108,16 +129,11 @@ export const PIPChat = () => {
|
|
|
108
129
|
</Text>
|
|
109
130
|
</Tooltip>
|
|
110
131
|
)}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
{message.recipientPeer ? (
|
|
117
|
-
<Text as="span" variant="sub2" css={{ color: '$on_surface_high', fontWeight: '$semiBold' }}>
|
|
118
|
-
(DM)
|
|
119
|
-
</Text>
|
|
120
|
-
) : null}
|
|
132
|
+
<MessageTitle
|
|
133
|
+
localPeerID={localPeerID}
|
|
134
|
+
recipientPeer={message.recipientPeer}
|
|
135
|
+
recipientRoles={message.recipientRoles}
|
|
136
|
+
/>
|
|
121
137
|
</Flex>
|
|
122
138
|
|
|
123
139
|
<Text
|
|
@@ -193,13 +209,16 @@ export const PIPChat = () => {
|
|
|
193
209
|
<TextArea
|
|
194
210
|
id="chat-input"
|
|
195
211
|
maxLength={CHAT_MESSAGE_LIMIT}
|
|
196
|
-
|
|
212
|
+
disabled={!isChatEnabled || isLocalPeerBlacklisted}
|
|
213
|
+
rows={1}
|
|
197
214
|
css={{
|
|
198
215
|
w: '100%',
|
|
199
216
|
c: '$on_surface_high',
|
|
200
|
-
|
|
217
|
+
p: '0.75rem 0.75rem !important',
|
|
218
|
+
border: 'none',
|
|
219
|
+
resize: 'none',
|
|
201
220
|
}}
|
|
202
|
-
placeholder={
|
|
221
|
+
placeholder={getChatStatus()}
|
|
203
222
|
required
|
|
204
223
|
autoComplete="off"
|
|
205
224
|
aria-autocomplete="none"
|
|
@@ -207,6 +226,8 @@ export const PIPChat = () => {
|
|
|
207
226
|
|
|
208
227
|
<IconButton
|
|
209
228
|
id="send-btn"
|
|
229
|
+
disabled={!isChatEnabled || isLocalPeerBlacklisted}
|
|
230
|
+
title={getChatStatus()}
|
|
210
231
|
css={{
|
|
211
232
|
ml: 'auto',
|
|
212
233
|
height: 'max-content',
|
|
@@ -223,3 +244,30 @@ export const PIPChat = () => {
|
|
|
223
244
|
</div>
|
|
224
245
|
);
|
|
225
246
|
};
|
|
247
|
+
|
|
248
|
+
const MessageTitle = ({
|
|
249
|
+
recipientPeer,
|
|
250
|
+
recipientRoles,
|
|
251
|
+
localPeerID,
|
|
252
|
+
}: {
|
|
253
|
+
recipientPeer?: string;
|
|
254
|
+
recipientRoles?: string[];
|
|
255
|
+
localPeerID: string;
|
|
256
|
+
}) => {
|
|
257
|
+
const peerName = useHMSStore(selectPeerNameByID(recipientPeer));
|
|
258
|
+
|
|
259
|
+
return (
|
|
260
|
+
<>
|
|
261
|
+
{recipientRoles ? (
|
|
262
|
+
<Text as="span" variant="sub2" css={{ color: '$on_surface_high', fontWeight: '$semiBold' }}>
|
|
263
|
+
to {recipientRoles} (Group)
|
|
264
|
+
</Text>
|
|
265
|
+
) : null}
|
|
266
|
+
{recipientPeer ? (
|
|
267
|
+
<Text as="span" variant="sub2" css={{ color: '$on_surface_high', fontWeight: '$semiBold' }}>
|
|
268
|
+
to {recipientPeer === localPeerID ? 'You' : peerName} (DM)
|
|
269
|
+
</Text>
|
|
270
|
+
) : null}
|
|
271
|
+
</>
|
|
272
|
+
);
|
|
273
|
+
};
|
|
@@ -8,6 +8,6 @@ type PIPWindowProps = {
|
|
|
8
8
|
|
|
9
9
|
export const PIPWindow = ({ pipWindow, children }: PIPWindowProps) => {
|
|
10
10
|
pipWindow.document.body.style.margin = '0';
|
|
11
|
-
pipWindow.document.body.style.
|
|
11
|
+
pipWindow.document.body.style.overflow = 'clip';
|
|
12
12
|
return createPortal(children, pipWindow.document.body);
|
|
13
13
|
};
|
|
@@ -25,6 +25,8 @@ export const usePIPChat = () => {
|
|
|
25
25
|
const pipChatInput = pipWindow.document.getElementById('chat-input') as HTMLTextAreaElement;
|
|
26
26
|
const marker = pipWindow.document.getElementById('marker');
|
|
27
27
|
|
|
28
|
+
marker?.scrollIntoView({ block: 'end' });
|
|
29
|
+
|
|
28
30
|
const observer = new IntersectionObserver(
|
|
29
31
|
entries => {
|
|
30
32
|
entries.forEach(entry => {
|
|
File without changes
|