commit: 2e54cf12c76e94f980fbe49f58c080a4a3d17ca4
parent ff5f69b8fd781d2fc8175c074f30aa35c0fea55c
Author: Tusooa Zhu <tusooa@kazv.moe>
Date: Sat, 7 Aug 2021 20:14:14 -0400
Add settings for max depth in thread
Diffstat:
4 files changed, 26 insertions(+), 6 deletions(-)
diff --git a/src/components/conversation/conversation.js b/src/components/conversation/conversation.js
@@ -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()
}
diff --git a/src/components/settings_modal/tabs/general_tab.vue b/src/components/settings_modal/tabs/general_tab.vue
@@ -161,6 +161,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>
<li>
<ChoiceSetting
id="mentionLinkDisplay"
diff --git a/src/modules/config.js b/src/modules/config.js
@@ -83,7 +83,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
diff --git a/src/modules/instance.js b/src/modules/instance.js
@@ -54,6 +54,7 @@ const defaultState = {
virtualScrolling: true,
sensitiveByDefault: false,
conversationDisplay: 'simple_tree',
+ maxDepthInThread: 6,
// Nasty stuff
customEmoji: [],