From c49b8e208968319c08fc5decb4e5836c168f51ae Mon Sep 17 00:00:00 2001 From: Shpuld Shpuldson Date: Wed, 15 Jan 2020 17:01:18 +0200 Subject: [PATCH] make virtual scrolling optional in case people want to be able to ctrl-f all page --- src/components/settings/settings.vue | 5 +++++ src/components/timeline/timeline.js | 5 ++++- src/components/timeline/timeline.vue | 2 +- src/i18n/en.json | 1 + src/i18n/fi.json | 3 ++- src/modules/config.js | 3 ++- src/modules/instance.js | 1 + 7 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/components/settings/settings.vue b/src/components/settings/settings.vue index cef492f3..a17ef0d9 100644 --- a/src/components/settings/settings.vue +++ b/src/components/settings/settings.vue @@ -92,6 +92,11 @@ {{ $t('settings.reply_link_preview') }} +
  • + + {{ $t('settings.virtual_scrolling') }} + +
  • diff --git a/src/components/timeline/timeline.js b/src/components/timeline/timeline.js index da4ca229..0af09f2b 100644 --- a/src/components/timeline/timeline.js +++ b/src/components/timeline/timeline.js @@ -70,11 +70,14 @@ const Timeline = { pinnedStatusIdsObject () { return keyBy(this.pinnedStatusIds) }, - displayingStatuses () { + statusesToDisplay () { const amount = this.timeline.visibleStatuses.length const min = Math.max(0, this.vScrollIndex - 20) const max = Math.min(amount, this.vScrollIndex + 20) return this.timeline.visibleStatuses.slice(min, max).map(_ => _.id) + }, + virtualScrollingEnabled () { + return this.$store.getters.mergedConfig.virtualScrolling } }, components: { diff --git a/src/components/timeline/timeline.vue b/src/components/timeline/timeline.vue index a406a365..d75fb27c 100644 --- a/src/components/timeline/timeline.vue +++ b/src/components/timeline/timeline.vue @@ -56,7 +56,7 @@ :collapsable="true" :in-profile="inProfile" :profile-user-id="userId" - :virtualHidden="!displayingStatuses.includes(status.id)" + :virtualHidden="virtualScrollingEnabled && !statusesToDisplay.includes(status.id)" /> diff --git a/src/i18n/en.json b/src/i18n/en.json index 75d66b9f..614c867c 100644 --- a/src/i18n/en.json +++ b/src/i18n/en.json @@ -375,6 +375,7 @@ "false": "no", "true": "yes" }, + "virtual_scrolling": "Optimize timeline rendering", "fun": "Fun", "greentext": "Meme arrows", "notifications": "Notifications", diff --git a/src/i18n/fi.json b/src/i18n/fi.json index e7ed5408..563ff2b1 100644 --- a/src/i18n/fi.json +++ b/src/i18n/fi.json @@ -228,7 +228,8 @@ "values": { "false": "pois päältä", "true": "päällä" - } + }, + "virtual_scrolling": "Optimoi aikajanan suorituskykyä" }, "time": { "day": "{0} päivä", diff --git a/src/modules/config.js b/src/modules/config.js index de9f041b..2a91800f 100644 --- a/src/modules/config.js +++ b/src/modules/config.js @@ -49,7 +49,8 @@ export const defaultState = { useContainFit: false, greentext: undefined, // instance default hidePostStats: undefined, // instance default - hideUserStats: undefined // instance default + hideUserStats: undefined, // instance default + virtualScrolling: undefined // instance default } // caching the instance default properties diff --git a/src/modules/instance.js b/src/modules/instance.js index 625323b9..d8560d94 100644 --- a/src/modules/instance.js +++ b/src/modules/instance.js @@ -34,6 +34,7 @@ const defaultState = { showFeaturesPanel: true, minimalScopesMode: false, greentext: false, + virtualScrolling: true, // Nasty stuff pleromaBackend: true,