From ed7a1e70e815c4c45b51d698c0e3dee98af92f59 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Wed, 9 Sep 2026 15:37:29 +0300 Subject: [PATCH] fixes, cleanup, now properly renders ancestors etc --- src/components/conversation/conversation.js | 23 ++++++------ src/components/conversation/conversation.vue | 35 +++++++++++-------- .../useTreeConversationTopology.js | 2 +- src/composables/useVirtualScrolling.js | 4 +-- 4 files changed, 36 insertions(+), 28 deletions(-) diff --git a/src/components/conversation/conversation.js b/src/components/conversation/conversation.js index c89cfd33a..c0b280e7a 100644 --- a/src/components/conversation/conversation.js +++ b/src/components/conversation/conversation.js @@ -103,13 +103,6 @@ export default { const toggleExpanded = () => { expanded.value = !expanded.value } - watch(expanded, (value) => { - if (value) { - fetchConversation() - } else { - resetDisplayState() - } - }) provide('isExpanded', isExpanded) provide('isPage', isPage) @@ -139,6 +132,14 @@ export default { loadError, } = useConversation(focusedId, isExpanded) + watch(expanded, (value) => { + if (value) { + fetchConversation() + } else { + resetDisplayState() + } + }) + const resetDisplayState = () => { setFocused(statusId.value) resetThreadDisplay() @@ -175,12 +176,12 @@ export default { // # Linear style stuff const isLinearView = computed(() => displayStyle.value !== 'tree') - const body = useTemplateRef('body') + const linearElement = useTemplateRef('linear') const { heightChart: heightChartLinear, changeSuspendState: changeSuspendStateLinear, updateVirtualHeight: updateVirtualHeightLinear, - } = useVirtualScrolling(conversation, body) + } = useVirtualScrolling(conversation, linearElement) // # Tree style stuff const isTreeView = computed(() => displayStyle.value === 'tree') @@ -200,7 +201,7 @@ export default { updateVirtualHeight: updateVirtualHeightAncestors, } = useVirtualScrolling(currentAncestors, ancestorsElement) - const currentLevel = computed(() => [currentStatus.value]) + const currentLevel = computed(() => [currentStatus.value].filter(Boolean)) const currentLevelElement = useTemplateRef('currentLevel') const { heightChart: heightChartCurrentLevel, @@ -215,7 +216,7 @@ export default { () => currentAncestors.value.length > 0 && topLevel.value.length > 1, ) const shouldShowAncestors = computed( - () => isExpanded.value && currentAncestors.value.size > 0, + () => isExpanded.value && heightChartAncestors.value.length > 0, ) const shouldFadeAncestors = computed( () => mergedConfig.value.conversationTreeFadeAncestors, diff --git a/src/components/conversation/conversation.vue b/src/components/conversation/conversation.vue index fd45ec057..8b4cfafde 100644 --- a/src/components/conversation/conversation.vue +++ b/src/components/conversation/conversation.vue @@ -37,7 +37,7 @@ />
+
@@ -169,6 +175,7 @@
-
+
diff --git a/src/composables/useTreeConversationTopology.js b/src/composables/useTreeConversationTopology.js index a698635de..b2ce7e23d 100644 --- a/src/composables/useTreeConversationTopology.js +++ b/src/composables/useTreeConversationTopology.js @@ -81,7 +81,7 @@ export function useTreeConversationTopology(conversation, replies, current) { }) const threadDisplay = computed(() => { return new Map( - [...threadDisplayOverride.value.entries()].map(([k, v]) => [ + [...threadDisplayDefault.value.entries()].map(([k, v]) => [ k, threadDisplayOverride.value.get(k) ?? threadDisplayDefault.value.get(k), ]), diff --git a/src/composables/useVirtualScrolling.js b/src/composables/useVirtualScrolling.js index b6cb769fc..18cffe58b 100644 --- a/src/composables/useVirtualScrolling.js +++ b/src/composables/useVirtualScrolling.js @@ -1,5 +1,5 @@ import { storeToRefs } from 'pinia' -import { computed, onMounted, ref, watch } from 'vue' +import { computed, ref, watch } from 'vue' import { useMergedConfigStore } from 'src/stores/merged_config.js' import { useStatusesStore } from 'src/stores/statuses.js' @@ -82,7 +82,7 @@ export function useVirtualScrolling(conversation, body) { watch(windowHeight, updateBoundaries) watch(scrollY, updateBoundaries) watch(totalHeight, updateBoundaries) - onMounted(updateBoundaries) + watch(body, updateBoundaries) const heightChart = computed(() => { // Map every height and suspendable state