@@ -108,6 +108,10 @@ export const ChannelView = ({
108
108
onSlashCommand ( SlashCommand . JOIN , args [ 0 ] )
109
109
break
110
110
case '/nick' :
111
+ setAuthorNicks ( previous => ( {
112
+ ...previous ,
113
+ [ identity ] : args . join ( ' ' ) ,
114
+ } ) )
111
115
onSlashCommand ( SlashCommand . NICK , args . join ( ' ' ) )
112
116
break
113
117
default :
@@ -133,6 +137,36 @@ export const ChannelView = ({
133
137
} ,
134
138
} )
135
139
140
+ const userChangedNickHandler = ( {
141
+ updateReasons,
142
+ user,
143
+ } : User . UpdatedEventArgs ) => {
144
+ if ( updateReasons . includes ( 'friendlyName' ) ) {
145
+ updateMessages ( prevMessages => ( {
146
+ ...prevMessages ,
147
+ messages : [
148
+ ...prevMessages . messages ,
149
+ {
150
+ sid : v4 ( ) ,
151
+ status : {
152
+ message : (
153
+ < >
154
+ User < em > { authorNicks [ user . identity ] || user . identity } </ em > { ' ' }
155
+ changed their name to < em > { user . friendlyName } </ em > .
156
+ </ >
157
+ ) ,
158
+ timestamp : new Date ( ) ,
159
+ } ,
160
+ } ,
161
+ ] ,
162
+ } ) )
163
+ setAuthorNicks ( authorNicks => ( {
164
+ ...authorNicks ,
165
+ [ user . identity ] : user . friendlyName ,
166
+ } ) )
167
+ }
168
+ }
169
+
136
170
const newMessageHandler = ( message : Message ) => {
137
171
updateMessages ( prevMessages => ( {
138
172
...prevMessages ,
@@ -141,6 +175,25 @@ export const ChannelView = ({
141
175
? prevMessages . lastIndex
142
176
: message . index ,
143
177
} ) )
178
+ if ( ! authorNicks [ message . author ] ) {
179
+ channelConnection ?. client
180
+ . getUserDescriptor ( message . author )
181
+ . then ( async d => {
182
+ const user = await d . subscribe ( )
183
+ user . on ( 'updated' , userChangedNickHandler )
184
+ setAuthorNicks ( previous => ( {
185
+ ...previous ,
186
+ [ message . author ] : d . friendlyName ,
187
+ } ) )
188
+ setAuthorSubscriptions ( previous => ( {
189
+ ...previous ,
190
+ [ message . author ] : user ,
191
+ } ) )
192
+ } )
193
+ . catch ( err => {
194
+ console . error ( err )
195
+ } )
196
+ }
144
197
}
145
198
146
199
const memberJoinedHandler = ( member : Member ) => {
@@ -175,36 +228,6 @@ export const ChannelView = ({
175
228
} ) )
176
229
}
177
230
178
- const userChangedNickHandler = ( {
179
- updateReasons,
180
- user,
181
- } : User . UpdatedEventArgs ) => {
182
- if ( updateReasons . includes ( 'friendlyName' ) ) {
183
- updateMessages ( prevMessages => ( {
184
- ...prevMessages ,
185
- messages : [
186
- ...prevMessages . messages ,
187
- {
188
- sid : v4 ( ) ,
189
- status : {
190
- message : (
191
- < >
192
- User < em > { authorNicks [ user . identity ] || user . identity } </ em > { ' ' }
193
- changed their name to < em > { user . friendlyName } </ em > .
194
- </ >
195
- ) ,
196
- timestamp : new Date ( ) ,
197
- } ,
198
- } ,
199
- ] ,
200
- } ) )
201
- setAuthorNicks ( authorNicks => ( {
202
- ...authorNicks ,
203
- [ user . identity ] : user . friendlyName ,
204
- } ) )
205
- }
206
- }
207
-
208
231
useEffect ( ( ) => {
209
232
if ( channelConnection ) {
210
233
channelConnection . channel . on ( 'messageAdded' , newMessageHandler )
0 commit comments