@tellescope/chat 0.0.31 → 0.0.35
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 +33 -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 +34 -15
- package/lib/esm/chat.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +9 -9
- package/src/chat.tsx +96 -29
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tellescope/chat",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.35",
|
|
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.35",
|
|
37
|
+
"@tellescope/react-components": "^0.0.35",
|
|
38
|
+
"@tellescope/sdk": "^0.0.35",
|
|
39
|
+
"@tellescope/types-client": "^0.0.35",
|
|
40
|
+
"@tellescope/types-models": "^0.0.35",
|
|
41
|
+
"@tellescope/types-utilities": "^0.0.35",
|
|
42
|
+
"@tellescope/utilities": "^0.0.35",
|
|
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": "1f046842cae8e5d2344312f2d49d905d4bcca786",
|
|
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,73 @@ 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
|
+
const inBrowser = typeof window !== undefined
|
|
177
|
+
|
|
178
|
+
return (
|
|
179
|
+
<Flex style={{ margin: 5 }}>
|
|
180
|
+
{message.senderId !== chatUserId && displayPicture}
|
|
181
|
+
{IN_REACT_WEB ? (
|
|
182
|
+
<Typography component="div" style={{ ...textStyle, ...textBGStyle }}>
|
|
183
|
+
{message.message}
|
|
184
|
+
</Typography>
|
|
185
|
+
)
|
|
186
|
+
: (
|
|
187
|
+
<Flex style={{ ...textBGStyle }}>
|
|
188
|
+
<Typography component="div" style={{ ...textStyle }}>
|
|
189
|
+
{message.message}
|
|
190
|
+
</Typography>
|
|
191
|
+
</Flex>
|
|
192
|
+
)}
|
|
193
|
+
{message.senderId === chatUserId && displayPicture}
|
|
194
|
+
</Flex>
|
|
195
|
+
)
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
interface Messages_T extends MessageStyles {
|
|
121
199
|
resolveSenderName?: (room: ChatRoom) => React.ReactNode;
|
|
122
200
|
messages: LoadedData<ChatMessage[]>,
|
|
123
201
|
chatUserId: string,
|
|
124
202
|
Header?: React.JSXElementConstructor<MessagesHeaderProps>,
|
|
125
203
|
headerProps?: MessagesHeaderProps,
|
|
126
|
-
receivedMessageStyle?: CSSProperties,
|
|
127
|
-
receivedMessageTextStyle?: CSSProperties,
|
|
128
|
-
sentMessageStyle?: CSSProperties,
|
|
129
|
-
sentMessageTextStyle?: CSSProperties,
|
|
130
204
|
}
|
|
131
205
|
export const Messages = ({
|
|
132
206
|
resolveSenderName,
|
|
@@ -134,21 +208,14 @@ export const Messages = ({
|
|
|
134
208
|
chatUserId,
|
|
135
209
|
Header=MessagesHeader,
|
|
136
210
|
headerProps,
|
|
137
|
-
style
|
|
138
|
-
|
|
139
|
-
receivedMessageTextStyle=defaultTextReceivedStyle,
|
|
140
|
-
sentMessageStyle=defaultSentStyle,
|
|
141
|
-
sentMessageTextStyle=defaultTextSentStyle,
|
|
211
|
+
style,
|
|
212
|
+
...messageStyles
|
|
142
213
|
}: Messages_T & Styled) => (
|
|
143
214
|
<LoadingLinear data={messages} render={messages => (
|
|
144
215
|
<Flex column flex={1}>
|
|
145
216
|
{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>
|
|
217
|
+
<List reverse style={style} items={messages} render={message => (
|
|
218
|
+
<Message key={message.id} message={message} {...messageStyles}/>
|
|
152
219
|
)}/>
|
|
153
220
|
</Flex>
|
|
154
221
|
)}/>
|