@tellescope/chat 0.0.32 → 0.0.36
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 +15 -6
- package/lib/cjs/chat.d.ts.map +1 -1
- package/lib/cjs/chat.js +32 -13
- package/lib/cjs/chat.js.map +1 -1
- package/lib/esm/chat.d.ts +15 -6
- package/lib/esm/chat.d.ts.map +1 -1
- package/lib/esm/chat.js +33 -15
- package/lib/esm/chat.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +9 -9
- package/src/chat.tsx +94 -29
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tellescope/chat",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.36",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "./lib/cjs/index.js",
|
|
6
6
|
"module": "./lib/esm/index.js",
|
|
@@ -33,13 +33,13 @@
|
|
|
33
33
|
"@fontsource/roboto": "^4.5.1",
|
|
34
34
|
"@mui/icons-material": "^5.0.1",
|
|
35
35
|
"@mui/material": "^5.0.2",
|
|
36
|
-
"@tellescope/constants": "^0.0.
|
|
37
|
-
"@tellescope/react-components": "^0.0.
|
|
38
|
-
"@tellescope/sdk": "^0.0.
|
|
39
|
-
"@tellescope/types-client": "^0.0.
|
|
40
|
-
"@tellescope/types-models": "^0.0.
|
|
41
|
-
"@tellescope/types-utilities": "^0.0.
|
|
42
|
-
"@tellescope/utilities": "^0.0.
|
|
36
|
+
"@tellescope/constants": "^0.0.36",
|
|
37
|
+
"@tellescope/react-components": "^0.0.36",
|
|
38
|
+
"@tellescope/sdk": "^0.0.36",
|
|
39
|
+
"@tellescope/types-client": "^0.0.36",
|
|
40
|
+
"@tellescope/types-models": "^0.0.36",
|
|
41
|
+
"@tellescope/types-utilities": "^0.0.36",
|
|
42
|
+
"@tellescope/utilities": "^0.0.36",
|
|
43
43
|
"@typescript-eslint/eslint-plugin": "^4.33.0",
|
|
44
44
|
"@typescript-eslint/parser": "^4.33.0",
|
|
45
45
|
"eslint": "^7.32.0",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"react": "^17.0.2",
|
|
51
51
|
"react-dom": "^17.0.2"
|
|
52
52
|
},
|
|
53
|
-
"gitHead": "
|
|
53
|
+
"gitHead": "edbbd010db89b775aed1337bf9708e749a8bbb4c",
|
|
54
54
|
"publishConfig": {
|
|
55
55
|
"access": "public"
|
|
56
56
|
}
|
package/src/chat.tsx
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import React, { useCallback, useState, CSSProperties } from "react"
|
|
2
2
|
|
|
3
|
+
import {
|
|
4
|
+
DisplayPicture,
|
|
5
|
+
IN_REACT_WEB,
|
|
6
|
+
} from "@tellescope/react-components"
|
|
3
7
|
import {
|
|
4
8
|
List,
|
|
5
9
|
Flex,
|
|
@@ -17,14 +21,18 @@ import {
|
|
|
17
21
|
import {
|
|
18
22
|
LoadingLinear,
|
|
19
23
|
Resolver,
|
|
24
|
+
value_is_loaded,
|
|
20
25
|
} from "@tellescope/react-components/lib/esm/loading"
|
|
21
26
|
import {
|
|
22
27
|
useSession,
|
|
23
28
|
useEnduserSession,
|
|
29
|
+
useResolvedSession,
|
|
24
30
|
} from "@tellescope/react-components/lib/esm/authentication"
|
|
25
31
|
import {
|
|
26
32
|
useChatRooms,
|
|
27
33
|
useChats,
|
|
34
|
+
useChatRoomDisplayInfo,
|
|
35
|
+
ChatRoomDisplayInfo,
|
|
28
36
|
} from "@tellescope/react-components/lib/esm/state"
|
|
29
37
|
import {
|
|
30
38
|
useEndusers,
|
|
@@ -68,39 +76,48 @@ export {
|
|
|
68
76
|
user_display_name, // for convenience
|
|
69
77
|
}
|
|
70
78
|
|
|
71
|
-
const
|
|
72
|
-
|
|
79
|
+
const MESSAGE_BORDER_RADIUS = 25
|
|
80
|
+
|
|
81
|
+
const defaultSentContainerStyle: CSSProperties = {
|
|
82
|
+
margin: 5,
|
|
73
83
|
}
|
|
74
|
-
const
|
|
75
|
-
borderRadius: 25,
|
|
76
|
-
paddingRight: 10,
|
|
77
|
-
paddingLeft: 10,
|
|
84
|
+
const defaultReceivedContainerStyle: CSSProperties = {
|
|
78
85
|
margin: 5,
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
const baseMessageStyle: CSSProperties = {
|
|
89
|
+
borderRadius: MESSAGE_BORDER_RADIUS,
|
|
79
90
|
maxWidth: '80%',
|
|
91
|
+
paddingRight: 10,
|
|
92
|
+
paddingLeft: 10,
|
|
93
|
+
paddingTop: 6,
|
|
94
|
+
paddingBottom: 6,
|
|
80
95
|
}
|
|
81
96
|
const defaultSentStyle: CSSProperties = {
|
|
82
97
|
...baseMessageStyle,
|
|
83
|
-
justifyContent: 'flex-end',
|
|
84
98
|
marginLeft: 'auto',
|
|
99
|
+
marginRight: 5,
|
|
85
100
|
backgroundColor: PRIMARY_HEX,
|
|
86
101
|
}
|
|
87
102
|
const defaultReceivedStyle: CSSProperties = {
|
|
88
103
|
...baseMessageStyle,
|
|
89
|
-
justifyContent: 'flex-start',
|
|
90
104
|
marginRight: 'auto',
|
|
105
|
+
marginLeft: 5,
|
|
91
106
|
backgroundColor: "#444444",
|
|
92
107
|
}
|
|
108
|
+
|
|
93
109
|
const baseTextStyle = {
|
|
94
110
|
color: "#ffffff",
|
|
95
|
-
padding: 4,
|
|
96
111
|
}
|
|
97
|
-
const
|
|
112
|
+
const defaultSentTextStyle = {
|
|
98
113
|
...baseTextStyle,
|
|
99
|
-
|
|
114
|
+
marginRight: 5,
|
|
115
|
+
marginLeft: 5,
|
|
100
116
|
}
|
|
101
|
-
const
|
|
117
|
+
const defaultReceivedTextStyle = {
|
|
102
118
|
...baseTextStyle,
|
|
103
|
-
|
|
119
|
+
marginRight: 5,
|
|
120
|
+
marginLeft: 5,
|
|
104
121
|
}
|
|
105
122
|
|
|
106
123
|
export interface MessagesHeaderProps {
|
|
@@ -117,16 +134,71 @@ const MessagesHeader = ({ room, resolveSenderName, ...p}: MessagesHeaderProps) =
|
|
|
117
134
|
</Flex>
|
|
118
135
|
)
|
|
119
136
|
|
|
120
|
-
interface
|
|
137
|
+
interface MessageStyles {
|
|
138
|
+
receivedMessageContainerStyle?: CSSProperties,
|
|
139
|
+
sentMessageContainerStyle?: CSSProperties,
|
|
140
|
+
receivedMessageStyle?: CSSProperties,
|
|
141
|
+
receivedMessageTextStyle?: CSSProperties,
|
|
142
|
+
sentMessageStyle?: CSSProperties,
|
|
143
|
+
sentMessageTextStyle?: CSSProperties,
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
interface MessageProps extends MessageStyles {
|
|
147
|
+
message: ChatMessage,
|
|
148
|
+
iconSize?: number,
|
|
149
|
+
}
|
|
150
|
+
export const Message = ({
|
|
151
|
+
message,
|
|
152
|
+
iconSize=30,
|
|
153
|
+
sentMessageContainerStyle=defaultSentContainerStyle,
|
|
154
|
+
receivedMessageContainerStyle=defaultReceivedContainerStyle,
|
|
155
|
+
sentMessageStyle=defaultSentStyle,
|
|
156
|
+
receivedMessageStyle=defaultReceivedStyle,
|
|
157
|
+
sentMessageTextStyle=defaultSentTextStyle,
|
|
158
|
+
receivedMessageTextStyle=defaultReceivedTextStyle,
|
|
159
|
+
}: MessageProps) => {
|
|
160
|
+
const session = useResolvedSession()
|
|
161
|
+
const chatUserId = session.userInfo.id
|
|
162
|
+
|
|
163
|
+
const [displayInfo] = useChatRoomDisplayInfo(message.roomId, session.type)
|
|
164
|
+
const displayInfoLookup = value_is_loaded(displayInfo) ? displayInfo.value : {} as ChatRoomDisplayInfo
|
|
165
|
+
|
|
166
|
+
const displayPicture = (
|
|
167
|
+
<DisplayPicture
|
|
168
|
+
user={displayInfoLookup[message.senderId ?? ''] ?? { id: message.senderId, avatar: '' }}
|
|
169
|
+
size={iconSize} style={{ position: 'relative' }}
|
|
170
|
+
/>
|
|
171
|
+
)
|
|
172
|
+
|
|
173
|
+
const textBGStyle = message.senderId === chatUserId ? sentMessageStyle : receivedMessageStyle
|
|
174
|
+
const textStyle = message.senderId === chatUserId ? sentMessageTextStyle : receivedMessageTextStyle
|
|
175
|
+
|
|
176
|
+
return (
|
|
177
|
+
<Flex style={{ margin: 5 }}>
|
|
178
|
+
{message.senderId !== chatUserId && displayPicture}
|
|
179
|
+
{IN_REACT_WEB ? (
|
|
180
|
+
<Typography component="div" style={{ ...textStyle, ...textBGStyle }}>
|
|
181
|
+
{message.message}
|
|
182
|
+
</Typography>
|
|
183
|
+
)
|
|
184
|
+
: (
|
|
185
|
+
<Flex style={{ ...textBGStyle }}>
|
|
186
|
+
<Typography component="div" style={{ ...textStyle }}>
|
|
187
|
+
{message.message}
|
|
188
|
+
</Typography>
|
|
189
|
+
</Flex>
|
|
190
|
+
)}
|
|
191
|
+
{message.senderId === chatUserId && displayPicture}
|
|
192
|
+
</Flex>
|
|
193
|
+
)
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
interface Messages_T extends MessageStyles {
|
|
121
197
|
resolveSenderName?: (room: ChatRoom) => React.ReactNode;
|
|
122
198
|
messages: LoadedData<ChatMessage[]>,
|
|
123
199
|
chatUserId: string,
|
|
124
200
|
Header?: React.JSXElementConstructor<MessagesHeaderProps>,
|
|
125
201
|
headerProps?: MessagesHeaderProps,
|
|
126
|
-
receivedMessageStyle?: CSSProperties,
|
|
127
|
-
receivedMessageTextStyle?: CSSProperties,
|
|
128
|
-
sentMessageStyle?: CSSProperties,
|
|
129
|
-
sentMessageTextStyle?: CSSProperties,
|
|
130
202
|
}
|
|
131
203
|
export const Messages = ({
|
|
132
204
|
resolveSenderName,
|
|
@@ -134,21 +206,14 @@ export const Messages = ({
|
|
|
134
206
|
chatUserId,
|
|
135
207
|
Header=MessagesHeader,
|
|
136
208
|
headerProps,
|
|
137
|
-
style
|
|
138
|
-
|
|
139
|
-
receivedMessageTextStyle=defaultTextReceivedStyle,
|
|
140
|
-
sentMessageStyle=defaultSentStyle,
|
|
141
|
-
sentMessageTextStyle=defaultTextSentStyle,
|
|
209
|
+
style,
|
|
210
|
+
...messageStyles
|
|
142
211
|
}: Messages_T & Styled) => (
|
|
143
212
|
<LoadingLinear data={messages} render={messages => (
|
|
144
213
|
<Flex column flex={1}>
|
|
145
214
|
{Header && <Header {...headerProps}/>}
|
|
146
|
-
<List reverse style={style} items={messages} render={
|
|
147
|
-
<
|
|
148
|
-
<Typography style={message.senderId === chatUserId ? sentMessageTextStyle : receivedMessageTextStyle}>
|
|
149
|
-
{message.message}
|
|
150
|
-
</Typography>
|
|
151
|
-
</Flex>
|
|
215
|
+
<List reverse style={style} items={messages} render={message => (
|
|
216
|
+
<Message key={message.id} message={message} {...messageStyles}/>
|
|
152
217
|
)}/>
|
|
153
218
|
</Flex>
|
|
154
219
|
)}/>
|