From 9ce33e337fbbe807502ebf32f76b9dcdd3674181 Mon Sep 17 00:00:00 2001 From: pa Date: Sun, 25 Jan 2026 15:17:27 +0900 Subject: [PATCH] remove useVirtualizerAnchor --- src/composables/useVirtualizerAnchor.js | 62 ------------------- .../Sidebar/components/FriendsSidebar.vue | 9 +-- .../Sidebar/components/GroupsSidebar.vue | 8 +-- 3 files changed, 2 insertions(+), 77 deletions(-) delete mode 100644 src/composables/useVirtualizerAnchor.js diff --git a/src/composables/useVirtualizerAnchor.js b/src/composables/useVirtualizerAnchor.js deleted file mode 100644 index b063e7d6..00000000 --- a/src/composables/useVirtualizerAnchor.js +++ /dev/null @@ -1,62 +0,0 @@ -import { nextTick } from 'vue'; - -export function useVirtualizerAnchor({ - virtualizer, - virtualRows, - scrollViewportRef -}) { - const captureScrollAnchor = () => { - const viewport = scrollViewportRef.value; - const items = virtualizer.value?.getVirtualItems?.() ?? []; - if (!viewport || !items.length) { - return null; - } - const firstItem = items[0]; - const row = virtualRows.value[firstItem.index]; - const key = row?.key ?? firstItem.key; - if (typeof key === 'undefined') { - return null; - } - return { - key, - offset: viewport.scrollTop - firstItem.start - }; - }; - - const restoreScrollAnchor = (anchor) => { - if (!anchor) { - return; - } - const index = virtualRows.value.findIndex( - (row) => row?.key === anchor.key - ); - if (index === -1) { - return; - } - const offsetInfo = virtualizer.value?.getOffsetForIndex?.( - index, - 'start' - ); - const targetStart = Array.isArray(offsetInfo) ? offsetInfo[0] : null; - if (typeof targetStart !== 'number') { - return; - } - virtualizer.value?.scrollToOffset?.(targetStart + anchor.offset); - }; - - const measureWithAnchor = (measureFn) => { - const anchor = captureScrollAnchor(); - nextTick(() => { - if (measureFn) { - measureFn(); - } - restoreScrollAnchor(anchor); - }); - }; - - return { - captureScrollAnchor, - restoreScrollAnchor, - measureWithAnchor - }; -} diff --git a/src/views/Sidebar/components/FriendsSidebar.vue b/src/views/Sidebar/components/FriendsSidebar.vue index 966d1db4..9925f5eb 100644 --- a/src/views/Sidebar/components/FriendsSidebar.vue +++ b/src/views/Sidebar/components/FriendsSidebar.vue @@ -98,7 +98,6 @@ } from '../../../stores'; import { isRealInstance, userImage, userStatusClass } from '../../../shared/utils'; import { getFriendsLocations } from '../../../shared/utils/location.js'; - import { useVirtualizerAnchor } from '../../../composables/useVirtualizerAnchor'; import FriendItem from './FriendItem.vue'; import Location from '../../../components/Location.vue'; @@ -421,12 +420,6 @@ }; }; - const { measureWithAnchor } = useVirtualizerAnchor({ - virtualizer, - virtualRows, - scrollViewportRef - }); - function saveFriendsGroupStates() { configRepository.setBool('VRCX_isFriendsGroupMe', isFriendsGroupMe.value); configRepository.setBool('VRCX_isFriendsGroupFavorites', isVIPFriends.value); @@ -485,7 +478,7 @@ }); watch(virtualRows, () => { - measureWithAnchor(() => { + nextTick(() => { virtualizer.value?.measure?.(); }); }); diff --git a/src/views/Sidebar/components/GroupsSidebar.vue b/src/views/Sidebar/components/GroupsSidebar.vue index 54f3d28d..a9068337 100644 --- a/src/views/Sidebar/components/GroupsSidebar.vue +++ b/src/views/Sidebar/components/GroupsSidebar.vue @@ -56,7 +56,6 @@ import { useAppearanceSettingsStore, useGroupStore } from '../../../stores'; import { convertFileUrlToImageUrl } from '../../../shared/utils'; - import { useVirtualizerAnchor } from '../../../composables/useVirtualizerAnchor'; import Location from '../../../components/Location.vue'; @@ -162,11 +161,6 @@ transform: `translateY(${item.virtualItem.start}px)` }); - const { measureWithAnchor } = useVirtualizerAnchor({ - virtualizer, - virtualRows, - scrollViewportRef - }); function getSmallGroupIconUrl(url) { return convertFileUrlToImageUrl(url); @@ -188,7 +182,7 @@ }); watch(virtualRows, () => { - measureWithAnchor(() => { + nextTick(() => { virtualizer.value?.measure?.(); }); });