26
26
:is-sender =" isSender(message)"
27
27
:show-sender =" channel.type == 'public'"
28
28
:is-read =" isRead(message)"
29
- :previous-message =" index > 0 ? messages[index -1 ] : {}"
29
+ :previous-message =" index > 0 ? messages[index - 1 ] : {}"
30
30
:members =" members"
31
31
:message =" message"
32
32
>
@@ -167,27 +167,31 @@ export default {
167
167
},
168
168
169
169
updateMembers () {
170
- this .channel .getMembers ().then (members => {
171
- this .members = members .map (member => {
172
- member .userAttributes = {};
173
- return member;
174
- });
175
-
176
- members .map (member => {
177
- member .getUser ().then (user => {
178
- const index = this .members .findIndex (localMember => localMember .identity .toLowerCase () == member .state .identity .toLowerCase ())
179
- if (index >= 0 ) {
180
- const userAttributes = user .attributes ;
181
- this .$set (this .members [index], ' userAttributes' , userAttributes)
182
- }
183
- });
184
- })
170
+ this .channel .getMembers ().then (members => {
171
+ this .members = members .map (member => {
172
+ member .userAttributes = {};
173
+ return member;
185
174
});
175
+
176
+ members .map (member => {
177
+ member .getUser ().then (user => {
178
+ const index = this .members .findIndex (
179
+ localMember =>
180
+ localMember .identity .toLowerCase () ==
181
+ member .state .identity .toLowerCase ()
182
+ );
183
+ if (index >= 0 ) {
184
+ const userAttributes = user .attributes ;
185
+ this .$set (this .members [index], " userAttributes" , userAttributes);
186
+ }
187
+ });
188
+ });
189
+ });
186
190
},
187
191
188
192
async getDescription () {
189
193
this .updateMembers ();
190
- return await this .channel .getAttributes ().then (attributes => {
194
+ return await this .channel .getAttributes ().then (attributes => {
191
195
this .description = attributes .description ;
192
196
});
193
197
},
@@ -196,23 +200,23 @@ export default {
196
200
},
197
201
198
202
sendMessage (message , attributes = {}) {
199
- if (message .includes (" /destroy" )) {
200
- this .channel .delete ().then (function (channel ) {
201
- console .log (' Deleted channel: ' + channel .sid );
202
- }); ;
203
- this .clearMessageForm ()
204
- return
205
- }
203
+ if (message .includes (" /destroy" )) {
204
+ this .channel .delete ().then (function (channel ) {
205
+ console .log (" Deleted channel: " + channel .sid );
206
+ }) ;
207
+ this .clearMessageForm ();
208
+ return ;
209
+ }
206
210
if (message .trim ()) {
207
211
this .channel .sendMessage (message, attributes);
208
- this .clearMessageForm ()
212
+ this .clearMessageForm ();
209
213
}
210
214
},
211
215
212
216
clearMessageForm () {
213
- setTimeout (() => {
214
- this .formData .message = " " ;
215
- });
217
+ setTimeout (() => {
218
+ this .formData .message = " " ;
219
+ });
216
220
},
217
221
218
222
listenTyping (e ) {
@@ -226,12 +230,12 @@ export default {
226
230
},
227
231
228
232
scrollToBottom (behavior ) {
229
- this .$nextTick (() => {
233
+ this .$nextTick (() => {
230
234
const el = this .$refs .MessageContainer ;
231
- if (el) {
232
- el .scrollTo ({ top: el .scrollHeight , behavior });
233
- }
234
- })
235
+ if (el) {
236
+ el .scrollTo ({ top: el .scrollHeight , behavior });
237
+ }
238
+ });
235
239
},
236
240
237
241
removeActiveChannelListeners () {
@@ -242,6 +246,10 @@ export default {
242
246
},
243
247
244
248
getMessages () {
249
+ this .getMessagesFunc ();
250
+ },
251
+
252
+ getMessagesFunc () {
245
253
this .channel .getMessages (30 ).then (page => {
246
254
this .messages = page .items || [];
247
255
this .scrollToBottom ();
@@ -286,62 +294,61 @@ export default {
286
294
287
295
<style lang="scss">
288
296
.message-list {
289
- position : relative ;
290
- flex : 1 1 0 ;
291
- order : 2 ;
292
-
293
- & __body {
294
- padding : 0.75rem 1.25rem ;
295
- width : fit-content ;
296
- border-radius : 1rem ;
297
- border-top-left-radius : 0 ;
298
- width : 100% ;
299
- }
297
+ position : relative ;
298
+ flex : 1 1 0 ;
299
+ order : 2 ;
300
+
301
+ & __body {
302
+ padding : 0.75rem 1.25rem ;
303
+ width : fit-content ;
304
+ border-radius : 1rem ;
305
+ border-top-left-radius : 0 ;
306
+ width : 100% ;
307
+ }
300
308
301
- & __body .padding-0 {
302
- padding : 0 0 0 0 ;
303
- }
309
+ & __body .padding-0 {
310
+ padding : 0 0 0 0 ;
311
+ }
304
312
305
- & __item {
306
- margin : 15px ;
307
- width : fit-content ;
308
- padding : 0 1rem ;
313
+ & __item {
314
+ margin : 15px ;
315
+ width : fit-content ;
316
+ padding : 0 1rem ;
309
317
310
318
& .message-sender {
311
- right : 0 ;
312
- margin-left : auto ;
313
-
314
- .message-list__body {
315
- border-radius : 1rem ;
316
- border-top-right-radius : 0 ;
317
- }
319
+ right : 0 ;
320
+ margin-left : auto ;
318
321
322
+ .message-list__body {
323
+ border-radius : 1rem ;
324
+ border-top-right-radius : 0 ;
325
+ }
319
326
}
320
327
321
328
a {
322
- color : #eee ;
323
- text-decoration : underline ;
329
+ color : #eee ;
330
+ text-decoration : underline ;
324
331
}
325
332
326
333
.me {
327
- font-weight : bold ;
328
- }
334
+ font-weight : bold ;
329
335
}
336
+ }
330
337
331
- & __text {
332
- white-space : pre-wrap ;
333
- }
338
+ & __text {
339
+ white-space : pre-wrap ;
340
+ }
334
341
335
- .message-container {
336
- position : absolute ;
337
- top : 0 ;
338
- z-index : 100 ;
339
- display : block ;
340
- width : 100% ;
341
- height : 100% ;
342
- overflow-x : hidden ;
343
- overflow-y : scroll ;
344
- }
342
+ .message-container {
343
+ position : absolute ;
344
+ top : 0 ;
345
+ z-index : 100 ;
346
+ display : block ;
347
+ width : 100% ;
348
+ height : 100% ;
349
+ overflow-x : hidden ;
350
+ overflow-y : scroll ;
351
+ }
345
352
}
346
353
347
354
.message-toolbar {
0 commit comments