Add settings for max depth in thread

This commit is contained in:
Tusooa Zhu 2021-08-07 20:14:14 -04:00
parent 640d3041ef
commit 891fb00107
No known key found for this signature in database
GPG key ID: 7B467EDE43A08224
4 changed files with 26 additions and 6 deletions

View file

@ -74,7 +74,11 @@ const conversation = {
},
computed: {
maxDepthToShowByDefault () {
return 4
// maxDepthInThread = max number of depths that is *visible*
// since our depth starts with 0 and "showing" means "showing children"
// there is a -2 here
const maxDepth = this.$store.getters.mergedConfig.maxDepthInThread - 2
return maxDepth >= 1 ? maxDepth : 1
},
displayStyle () {
return this.$store.getters.mergedConfig.conversationDisplay
@ -351,7 +355,8 @@ const conversation = {
}
this._diven = true
const parentOrSelf = this.parentOrSelf(this.originalStatusId)
if (this.threadDisplayStatus[this.statusId] === 'hidden') {
// If current status is not visible
if (this.threadDisplayStatus[parentOrSelf] === 'hidden') {
this.diveIntoStatus(parentOrSelf, /* preventScroll */ true)
this.tryScrollTo(this.statusId)
}
@ -429,7 +434,7 @@ const conversation = {
toggleStatusContentProperty (id, name) {
this.setStatusContentProperty(id, name, !this.statusContentProperties[id][name])
},
leastShowingAncestor (id) {
leastVisibleAncestor (id) {
let cur = id
let parent = this.parentOf(cur)
while (cur) {
@ -453,14 +458,14 @@ const conversation = {
const oldHighlight = this.highlight
this.diveHistory = [...this.diveHistory.slice(0, this.diveHistory.length - 1)]
if (oldHighlight) {
this.tryScrollTo(this.leastShowingAncestor(oldHighlight))
this.tryScrollTo(this.leastVisibleAncestor(oldHighlight))
}
},
undive () {
const oldHighlight = this.highlight
this.diveHistory = []
if (oldHighlight) {
this.tryScrollTo(this.leastShowingAncestor(oldHighlight))
this.tryScrollTo(this.leastVisibleAncestor(oldHighlight))
} else {
this.goToCurrent()
}

View file

@ -87,6 +87,19 @@
{{ $t('settings.conversation_display') }}
</ChoiceSetting>
</li>
<li v-if="conversationDisplay !== 'linear'">
<label for="maxDepthInThread">
{{ $t('settings.max_depth_in_thread') }}
</label>
<input
id="maxDepthInThread"
path.number="maxDepthInThread"
class="number-input"
type="number"
min="3"
step="1"
>
</li>
</ul>
</div>

View file

@ -72,7 +72,8 @@ export const defaultState = {
hideUserStats: undefined, // instance default
virtualScrolling: undefined, // instance default
sensitiveByDefault: undefined, // instance default
conversationDisplay: undefined // instance default
conversationDisplay: undefined, // instance default
maxDepthInThread: 6
}
// caching the instance default properties

View file

@ -44,6 +44,7 @@ const defaultState = {
virtualScrolling: true,
sensitiveByDefault: false,
conversationDisplay: 'simple_tree',
maxDepthInThread: 6,
// Nasty stuff
customEmoji: [],