diff options
| author | Tusooa Zhu <tusooa@kazv.moe> | 2021-08-07 20:14:14 -0400 |
|---|---|---|
| committer | Tusooa Zhu <tusooa@kazv.moe> | 2022-03-07 19:19:30 -0500 |
| commit | 2e54cf12c76e94f980fbe49f58c080a4a3d17ca4 (patch) | |
| tree | 85629b7bfbb8e68d4f153214592f56f592a8bb22 | |
| parent | ff5f69b8fd781d2fc8175c074f30aa35c0fea55c (diff) | |
Add settings for max depth in thread
| -rw-r--r-- | src/components/conversation/conversation.js | 15 | ||||
| -rw-r--r-- | src/components/settings_modal/tabs/general_tab.vue | 13 | ||||
| -rw-r--r-- | src/modules/config.js | 3 | ||||
| -rw-r--r-- | src/modules/instance.js | 1 |
4 files changed, 26 insertions, 6 deletions
diff --git a/src/components/conversation/conversation.js b/src/components/conversation/conversation.js index 8e4eda51..853161df 100644 --- 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 index 8951c021..f97d92c3 100644 --- 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 index ec75dbfb..b3c7e5ab 100644 --- 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 index 8a5bbbd1..853be737 100644 --- 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: [], |
