6464 </v-menu >
6565 </v-app-bar >
6666 <v-progress-linear
67- v-if =" $store.getters.getLoadingMessages "
67+ v-if =" loadingMessages "
6868 color =" primary"
6969 indeterminate
7070 ></v-progress-linear >
7474 class =" messages-body no-scrollbar"
7575 :class =" { 'pr-7': $vuetify.breakpoint.lgAndUp }"
7676 >
77- <v-row v-for =" message in messages" :key =" message.id" >
77+ <v-row
78+ v-for =" message in messages"
79+ :key =" message.id"
80+ :style =" { visibility: messageVisibility }"
81+ >
7882 <v-col
7983 class =" d-flex"
8084 :class =" {
8185 'pr-12': $vuetify.breakpoint.mdAndDown && !isMT(message),
82- 'pl-12 pr-5 ': $vuetify.breakpoint.mdAndDown && isMT(message),
86+ 'pl-12 pr-8 ': $vuetify.breakpoint.mdAndDown && isMT(message),
8387 'pl-16 ml-16': $vuetify.breakpoint.lgAndUp && isMT(message),
8488 'pr-16 mr-16': $vuetify.breakpoint.lgAndUp && !isMT(message),
8589 }"
@@ -265,6 +269,8 @@ export default Vue.extend({
265269 mdiCheckAll ,
266270 mdiCheck ,
267271 mdiAlert ,
272+ hideMessages: true ,
273+ loadingMessages: false ,
268274 messages: [] as Message [],
269275 mdiPackageUp ,
270276 mdiPackageDown ,
@@ -285,6 +291,12 @@ export default Vue.extend({
285291 contactIsPhoneNumber(): boolean {
286292 return isValidPhoneNumber (this .$store .getters .getThread .contact )
287293 },
294+ messageVisibility(): string {
295+ if (this .hideMessages ) {
296+ return ' hidden'
297+ }
298+ return ' visible'
299+ },
288300 contact(): string {
289301 return this .$store .getters .getThread .contact
290302 },
@@ -319,12 +331,21 @@ export default Vue.extend({
319331 },
320332
321333 loadMessages() {
334+ this .loadingMessages = true
322335 this .$store
323336 .dispatch (' loadThreadMessages' , this .$route .params .id )
324337 .then ((messages : Array <Message >) => {
325338 this .messages = [... messages ].reverse ()
326339 })
327- this .scrollToElement ()
340+ .finally (() => {
341+ setTimeout (() => {
342+ this .loadingMessages = false
343+ }, 750 )
344+ })
345+ this .hideMessages = true
346+ setTimeout (() => {
347+ this .scrollToElement ()
348+ }, 500 )
328349 },
329350
330351 async loadData() {
@@ -333,8 +354,8 @@ export default Vue.extend({
333354
334355 if (! this .$store .getters .hasThreadId (this .$route .params .id )) {
335356 await this .$router .push ({ name: ' threads' })
336- this .loadMessages ()
337357 }
358+ this .loadMessages ()
338359 },
339360
340361 isMT(message : Message ): boolean {
@@ -343,7 +364,10 @@ export default Vue.extend({
343364
344365 scrollToElement() {
345366 const el: Element = this .$refs .messageBody as Element
346- el .scrollTop = el .scrollHeight + 120
367+ if (el ) {
368+ el .scrollTop = el .scrollHeight + 120
369+ }
370+ this .hideMessages = false
347371 },
348372
349373 archiveThread() {
0 commit comments