@tellescope/chat 1.23.4 → 1.24.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/lib/cjs/chat.d.ts +3 -2
- package/lib/cjs/chat.d.ts.map +1 -1
- package/lib/cjs/chat.js +29 -5
- package/lib/cjs/chat.js.map +1 -1
- package/lib/esm/chat.d.ts +3 -2
- package/lib/esm/chat.d.ts.map +1 -1
- package/lib/esm/chat.js +30 -6
- package/lib/esm/chat.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -8
- package/src/chat.tsx +62 -21
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tellescope/chat",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.24.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "./lib/cjs/index.js",
|
|
6
6
|
"module": "./lib/esm/index.js",
|
|
@@ -34,13 +34,13 @@
|
|
|
34
34
|
"@fontsource/roboto": "^4.5.1",
|
|
35
35
|
"@mui/icons-material": "^5.0.1",
|
|
36
36
|
"@mui/material": "^5.0.2",
|
|
37
|
-
"@tellescope/constants": "^1.
|
|
38
|
-
"@tellescope/react-components": "^1.
|
|
39
|
-
"@tellescope/sdk": "^1.
|
|
40
|
-
"@tellescope/types-client": "^1.
|
|
41
|
-
"@tellescope/types-models": "^1.
|
|
37
|
+
"@tellescope/constants": "^1.24.0",
|
|
38
|
+
"@tellescope/react-components": "^1.24.0",
|
|
39
|
+
"@tellescope/sdk": "^1.24.0",
|
|
40
|
+
"@tellescope/types-client": "^1.24.0",
|
|
41
|
+
"@tellescope/types-models": "^1.24.0",
|
|
42
42
|
"@tellescope/types-utilities": "^1.5.1",
|
|
43
|
-
"@tellescope/utilities": "^1.
|
|
43
|
+
"@tellescope/utilities": "^1.24.0",
|
|
44
44
|
"@typescript-eslint/eslint-plugin": "^4.33.0",
|
|
45
45
|
"@typescript-eslint/parser": "^4.33.0",
|
|
46
46
|
"eslint": "^7.32.0",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"react": "^16.8.0 || ^17.0.0 || ^18.0.0",
|
|
52
52
|
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
|
|
53
53
|
},
|
|
54
|
-
"gitHead": "
|
|
54
|
+
"gitHead": "719e54ce57bdb212d4d6eae9a272218948884abb",
|
|
55
55
|
"publishConfig": {
|
|
56
56
|
"access": "public"
|
|
57
57
|
}
|
package/src/chat.tsx
CHANGED
|
@@ -48,6 +48,7 @@ import {
|
|
|
48
48
|
|
|
49
49
|
import {
|
|
50
50
|
ActivityOptions,
|
|
51
|
+
formatted_date,
|
|
51
52
|
user_display_name, user_is_active,
|
|
52
53
|
} from "@tellescope/utilities"
|
|
53
54
|
|
|
@@ -132,6 +133,7 @@ interface MessageProps extends MessageStyles {
|
|
|
132
133
|
message: ChatMessage,
|
|
133
134
|
iconSize?: number,
|
|
134
135
|
imageDimensions?: ImageDimensions,
|
|
136
|
+
showDate?: boolean,
|
|
135
137
|
}
|
|
136
138
|
export const Message = ({
|
|
137
139
|
message,
|
|
@@ -146,6 +148,7 @@ export const Message = ({
|
|
|
146
148
|
receivedMessageTextStyle=defaultReceivedTextStyle,
|
|
147
149
|
imageDimensions,
|
|
148
150
|
style,
|
|
151
|
+
showDate,
|
|
149
152
|
}: MessageProps & Styled) => {
|
|
150
153
|
const session = useResolvedSession()
|
|
151
154
|
const chatUserId = session.userInfo.id
|
|
@@ -215,10 +218,19 @@ export const Message = ({
|
|
|
215
218
|
)
|
|
216
219
|
|
|
217
220
|
return (
|
|
218
|
-
<Flex
|
|
219
|
-
{
|
|
220
|
-
|
|
221
|
-
|
|
221
|
+
<Flex column>
|
|
222
|
+
{showDate && (
|
|
223
|
+
<Flex alignSelf="center">
|
|
224
|
+
{formatted_date(new Date(message.createdAt))}
|
|
225
|
+
</Flex>
|
|
226
|
+
)
|
|
227
|
+
|
|
228
|
+
}
|
|
229
|
+
<Flex style={{ margin: 5, flexWrap: 'nowrap', ...style }}>
|
|
230
|
+
{message.senderId !== chatUserId && displayPicture}
|
|
231
|
+
{messageComponent}
|
|
232
|
+
{message.senderId === chatUserId && displayPicture}
|
|
233
|
+
</Flex>
|
|
222
234
|
</Flex>
|
|
223
235
|
)
|
|
224
236
|
}
|
|
@@ -253,7 +265,7 @@ export const MessageAttachments = ({ message, chatUserId, imageDimensions } : {
|
|
|
253
265
|
|
|
254
266
|
export type MessageTheme = { theme?: string }
|
|
255
267
|
|
|
256
|
-
interface Messages_T extends MessageStyles {
|
|
268
|
+
export interface Messages_T extends MessageStyles {
|
|
257
269
|
resolveSenderName?: (room: ChatRoom) => React.ReactNode;
|
|
258
270
|
messages: LoadedData<ChatMessage[]>,
|
|
259
271
|
chatUserId: string,
|
|
@@ -271,16 +283,29 @@ export const MessagesWithHeader = ({
|
|
|
271
283
|
imageDimensions,
|
|
272
284
|
...messageStyles
|
|
273
285
|
}: Omit<Messages_T, 'markRead'> & Styled & { Header?: React.JSXElementConstructor<MessagesHeaderProps> }) => (
|
|
274
|
-
<LoadingLinear data={messages} render={messages =>
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
286
|
+
<LoadingLinear data={messages} render={messages => {
|
|
287
|
+
let lastDate = 0
|
|
288
|
+
return (
|
|
289
|
+
<Flex column flex={1} style={{ ...style, overflowY: 'scroll' }}>
|
|
290
|
+
{Header && <Header {...headerProps}/>}
|
|
291
|
+
<List reverse items={messages} render={(message) => {
|
|
292
|
+
// show after 10+ minute exchanges
|
|
293
|
+
const timestamp = new Date(message.createdAt).getTime()
|
|
294
|
+
const shouldShowDate = timestamp > (lastDate + 1000 * 60 * 10 )
|
|
295
|
+
if (shouldShowDate) {
|
|
296
|
+
lastDate = timestamp
|
|
297
|
+
}
|
|
298
|
+
return (
|
|
299
|
+
<Flex column>
|
|
300
|
+
<Message message={message} imageDimensions={imageDimensions} showDate={shouldShowDate} {...messageStyles} />
|
|
301
|
+
</Flex>
|
|
302
|
+
)
|
|
303
|
+
}}
|
|
304
|
+
/>
|
|
280
305
|
</Flex>
|
|
281
|
-
)}
|
|
282
|
-
|
|
283
|
-
|
|
306
|
+
)}
|
|
307
|
+
}
|
|
308
|
+
/>
|
|
284
309
|
)
|
|
285
310
|
|
|
286
311
|
export const Messages = ({
|
|
@@ -312,13 +337,30 @@ export const Messages = ({
|
|
|
312
337
|
.catch(console.error)
|
|
313
338
|
}, [session, markRead, messages, markReadRef, updateRoom])
|
|
314
339
|
|
|
315
|
-
|
|
316
340
|
return (
|
|
317
|
-
<LoadingLinear data={messages} render={
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
341
|
+
<LoadingLinear data={messages} render={_messages => {
|
|
342
|
+
const sorted = _messages.sort((m1, m2) => new Date(m1.createdAt).getTime() - new Date(m2.createdAt).getTime())
|
|
343
|
+
|
|
344
|
+
let lastDate = 0
|
|
345
|
+
|
|
346
|
+
const showDateForMessage = {} as Record<string, boolean>
|
|
347
|
+
for (const message of sorted) {
|
|
348
|
+
const timestamp = new Date(message.createdAt).getTime()
|
|
349
|
+
const showDate = timestamp > (lastDate + 1000 * 60 * 10 )
|
|
350
|
+
if (showDate) {
|
|
351
|
+
lastDate = timestamp
|
|
352
|
+
}
|
|
353
|
+
showDateForMessage[message.id] = showDate
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
return (
|
|
357
|
+
<List items={sorted}
|
|
358
|
+
style={style} render={(message) => (
|
|
359
|
+
<Message message={message} imageDimensions={imageDimensions} showDate={showDateForMessage[message.id]} {...messageStyles} />
|
|
360
|
+
)}
|
|
361
|
+
/>
|
|
362
|
+
)}}
|
|
363
|
+
/>
|
|
322
364
|
)
|
|
323
365
|
}
|
|
324
366
|
|
|
@@ -361,7 +403,6 @@ export const resolve_chat_room_name = (room: ChatRoom, displayInfo: { [index: st
|
|
|
361
403
|
return user_display_name(displayInfo[room?.enduserIds?.[0] ?? room.creator ?? ''])
|
|
362
404
|
}
|
|
363
405
|
if (userType === 'enduser') {
|
|
364
|
-
console.log(room.recentSender, room.creator, displayInfo[room.creator])
|
|
365
406
|
return user_display_name(displayInfo[room?.userIds?.[0] ?? room.creator ?? ''])
|
|
366
407
|
}
|
|
367
408
|
return ''
|