summaryrefslogtreecommitdiff
path: root/packages/frontend/src
diff options
context:
space:
mode:
authorsyuilo <4439005+syuilo@users.noreply.github.com>2025-08-15 12:40:37 +0900
committersyuilo <4439005+syuilo@users.noreply.github.com>2025-08-15 12:40:37 +0900
commitbae92a944dc81b5033e918fd78052a206cb6f10f (patch)
tree2030c40dd3289598e1b7af021276d256d880537b /packages/frontend/src
parentfix(frontend): Botプロテクションの設定の変更検知が正しく... (diff)
downloadmisskey-bae92a944dc81b5033e918fd78052a206cb6f10f.tar.gz
misskey-bae92a944dc81b5033e918fd78052a206cb6f10f.tar.bz2
misskey-bae92a944dc81b5033e918fd78052a206cb6f10f.zip
enhance(frontend): improve enableInfiniteScroll stability
Close #16318
Diffstat (limited to 'packages/frontend/src')
-rw-r--r--packages/frontend/src/components/MkStreamingNotesTimeline.vue2
-rw-r--r--packages/frontend/src/components/MkStreamingNotificationsTimeline.vue2
-rw-r--r--packages/frontend/src/directives/appear.ts5
3 files changed, 6 insertions, 3 deletions
diff --git a/packages/frontend/src/components/MkStreamingNotesTimeline.vue b/packages/frontend/src/components/MkStreamingNotesTimeline.vue
index c2b4d6cd04..9ace0b32d5 100644
--- a/packages/frontend/src/components/MkStreamingNotesTimeline.vue
+++ b/packages/frontend/src/components/MkStreamingNotesTimeline.vue
@@ -47,7 +47,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkNote v-else :class="$style.note" :note="note" :withHardMute="true" :data-scroll-anchor="note.id"/>
</template>
</component>
- <button v-show="paginator.canFetchOlder.value" key="_more_" :disabled="paginator.fetchingOlder.value" class="_button" :class="$style.more" @click="paginator.fetchOlder">
+ <button v-show="paginator.canFetchOlder.value" key="_more_" v-appear="prefer.s.enableInfiniteScroll ? paginator.fetchOlder : null" :disabled="paginator.fetchingOlder.value" class="_button" :class="$style.more" @click="paginator.fetchOlder">
<div v-if="!paginator.fetchingOlder.value">{{ i18n.ts.loadMore }}</div>
<MkLoading v-else :inline="true"/>
</button>
diff --git a/packages/frontend/src/components/MkStreamingNotificationsTimeline.vue b/packages/frontend/src/components/MkStreamingNotificationsTimeline.vue
index ac1f06619a..93ffee8d98 100644
--- a/packages/frontend/src/components/MkStreamingNotificationsTimeline.vue
+++ b/packages/frontend/src/components/MkStreamingNotificationsTimeline.vue
@@ -33,7 +33,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<XNotification v-else :class="$style.content" :notification="notification" :withTime="true" :full="true"/>
</div>
</component>
- <button v-show="paginator.canFetchOlder.value" key="_more_" :disabled="paginator.fetchingOlder.value" class="_button" :class="$style.more" @click="paginator.fetchOlder">
+ <button v-show="paginator.canFetchOlder.value" key="_more_" v-appear="prefer.s.enableInfiniteScroll ? paginator.fetchOlder : null" :disabled="paginator.fetchingOlder.value" class="_button" :class="$style.more" @click="paginator.fetchOlder">
<div v-if="!paginator.fetchingOlder.value">{{ i18n.ts.loadMore }}</div>
<MkLoading v-else/>
</button>
diff --git a/packages/frontend/src/directives/appear.ts b/packages/frontend/src/directives/appear.ts
index 802477e00b..f5fec108dc 100644
--- a/packages/frontend/src/directives/appear.ts
+++ b/packages/frontend/src/directives/appear.ts
@@ -3,6 +3,7 @@
* SPDX-License-Identifier: AGPL-3.0-only
*/
+import { throttle } from 'throttle-debounce';
import type { Directive } from 'vue';
export default {
@@ -10,12 +11,14 @@ export default {
const fn = binding.value;
if (fn == null) return;
- const observer = new IntersectionObserver(entries => {
+ const check = throttle(1000, (entries) => {
if (entries.some(entry => entry.isIntersecting)) {
fn();
}
});
+ const observer = new IntersectionObserver(check);
+
observer.observe(src);
src._observer_ = observer;