Fix virtual scrolling for tree threading

Ref: tree-threading
This commit is contained in:
Tusooa Zhu 2021-09-15 23:35:17 -04:00
parent 0b576b64e2
commit 12ed9a1799
No known key found for this signature in database
GPG key ID: 7B467EDE43A08224
3 changed files with 18 additions and 6 deletions

View file

@ -98,13 +98,16 @@ const conversation = {
showOtherRepliesButtonInsideStatus () {
return this.otherRepliesButtonPosition === 'inside'
},
hideStatus () {
suspendable () {
if (this.$refs.statusComponent && this.$refs.statusComponent[0]) {
return this.virtualHidden && this.$refs.statusComponent[0].suspendable
return this.$refs.statusComponent.every(s => s.suspendable)
} else {
return this.virtualHidden
return true
}
},
hideStatus () {
return this.virtualHidden && this.suspendable
},
status () {
return this.$store.state.statuses.allStatusesObject[this.statusId]
},
@ -234,7 +237,6 @@ const conversation = {
return this.topLevel
},
diveRoot () {
(() => {})(this.conversation)
const statusId = this.inlineDivePosition || this.statusId
const isTopLevel = !this.parentOf(statusId)
return isTopLevel ? null : statusId
@ -248,7 +250,10 @@ const conversation = {
shouldShowAllConversationButton () {
// The "show all conversation" button tells the user that there exist
// other toplevel statuses, so do not show it if there is only a single root
return this.diveMode && this.topLevel.length > 1
return this.isTreeView && this.isExpanded && this.diveMode && this.topLevel.length > 1
},
shouldShowAncestors () {
return this.isTreeView && this.isExpanded && this.ancestorsOf(this.diveRoot).length
},
replies () {
let i = 1

View file

@ -43,7 +43,7 @@
class="thread-body"
>
<div
v-if="ancestorsOf(diveRoot).length"
v-if="shouldShowAncestors"
class="thread-ancestors"
>
<div

View file

@ -45,6 +45,13 @@ const ThreadTree = {
dive: Function
},
computed: {
suspendable () {
const selfSuspendable = this.$refs.statusComponent ? this.$refs.statusComponent.suspendable : true
if (this.$refs.childComponent) {
return selfSuspendable && this.$refs.childComponent.every(s => s.suspendable)
}
return selfSuspendable
},
reverseLookupTable () {
return this.conversation.reduce((table, status, index) => {
table[status.id] = index