diff --git a/package.json b/package.json index bc49b0e0e..8672d0a6b 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "vue-resize-observer": "^2.0.16", "vue-router": "^3.5.3", "vue-template-compiler": "^2.6.14", - "vue-virtual-scroller-hi": "^1.0.10-2", + "vue-virtual-scroller-hi": "^1.0.10-3", "vuedraggable": "^2.24.3", "vuex": "^3.6.2", "webpack": "^5.69.1", diff --git a/resources/assets/js/pages/manage/components/DialogWrapper.vue b/resources/assets/js/pages/manage/components/DialogWrapper.vue index cfe923217..4832d2f2d 100644 --- a/resources/assets/js/pages/manage/components/DialogWrapper.vue +++ b/resources/assets/js/pages/manage/components/DialogWrapper.vue @@ -73,6 +73,7 @@ 0) { cacheTimer = setTimeout(_ => { this.allMsgs = this.allMsgList; - this.onToBottom(); + this.onToBottom().then(_ => { + this.scrollerShow = true + }); }, 1); } const startTime = new Date().getTime(); this.$store.dispatch("getDialogMsgs", id).then(_ => { cacheTimer && clearTimeout(cacheTimer); - setTimeout(this.onToBottom, Math.max(0, 100 - (new Date().getTime() - startTime))); + setTimeout(_ => { + this.onToBottom().then(_ => { + this.scrollerShow = true + }); + }, Math.max(0, 100 - (new Date().getTime() - startTime))); }).catch(_ => {}); // this.$store.dispatch('saveInDialog', { @@ -773,9 +782,14 @@ export default { onToBottom() { this.msgNew = 0; - if (this.isReady) { - this.$refs.scroller?.scrollToBottom(); - } + return new Promise(resolve => { + if (this.isReady) { + this.$refs.scroller?.scrollToBottom(); + requestAnimationFrame(resolve) + } else { + resolve(); + } + }) }, openProject() {