Add setting to disable automatic fetching of subscription feed (#2632)
* Add setting to disable automatic fetching of subscriptions * rename from load to fetch. fix profile switch auto fetching * add message for when auto fetch is disabled * add strings to locale file * Use a switch column grid for the subscription settings This matches the layout other settings components * remove import of now unused ft-flex-box component * add variable to track if an attempt to fetch has been made. used so the disable automatic fetch message doesn't block the empty channels message. * reduce distance between switches by adding compact=true * edit tooltip wording
This commit is contained in:
parent
964f29439d
commit
6ddbce2e02
|
@ -2,14 +2,12 @@ import Vue from 'vue'
|
||||||
import { mapActions } from 'vuex'
|
import { mapActions } from 'vuex'
|
||||||
import FtSettingsSection from '../ft-settings-section/ft-settings-section.vue'
|
import FtSettingsSection from '../ft-settings-section/ft-settings-section.vue'
|
||||||
import FtToggleSwitch from '../ft-toggle-switch/ft-toggle-switch.vue'
|
import FtToggleSwitch from '../ft-toggle-switch/ft-toggle-switch.vue'
|
||||||
import FtFlexBox from '../ft-flex-box/ft-flex-box.vue'
|
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
name: 'SubscriptionSettings',
|
name: 'SubscriptionSettings',
|
||||||
components: {
|
components: {
|
||||||
'ft-settings-section': FtSettingsSection,
|
'ft-settings-section': FtSettingsSection,
|
||||||
'ft-toggle-switch': FtToggleSwitch,
|
'ft-toggle-switch': FtToggleSwitch
|
||||||
'ft-flex-box': FtFlexBox
|
|
||||||
},
|
},
|
||||||
data: function () {
|
data: function () {
|
||||||
return {
|
return {
|
||||||
|
@ -22,12 +20,16 @@ export default Vue.extend({
|
||||||
},
|
},
|
||||||
useRssFeeds: function () {
|
useRssFeeds: function () {
|
||||||
return this.$store.getters.getUseRssFeeds
|
return this.$store.getters.getUseRssFeeds
|
||||||
|
},
|
||||||
|
fetchSubscriptionsAutomatically: function () {
|
||||||
|
return this.$store.getters.getFetchSubscriptionsAutomatically
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
...mapActions([
|
...mapActions([
|
||||||
'updateHideWatchedSubs',
|
'updateHideWatchedSubs',
|
||||||
'updateUseRssFeeds'
|
'updateUseRssFeeds',
|
||||||
|
'updateFetchSubscriptionsAutomatically'
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
|
@ -2,19 +2,32 @@
|
||||||
<ft-settings-section
|
<ft-settings-section
|
||||||
:title="$t('Settings.Subscription Settings.Subscription Settings')"
|
:title="$t('Settings.Subscription Settings.Subscription Settings')"
|
||||||
>
|
>
|
||||||
<ft-flex-box class="settingsFlexStart500px">
|
<div class="switchColumnGrid">
|
||||||
<ft-toggle-switch
|
<div class="switchColumn">
|
||||||
:label="$t('Settings.Subscription Settings.Hide Videos on Watch')"
|
<ft-toggle-switch
|
||||||
:default-value="hideWatchedSubs"
|
:label="$t('Settings.Subscription Settings.Fetch Automatically')"
|
||||||
@change="updateHideWatchedSubs"
|
:default-value="fetchSubscriptionsAutomatically"
|
||||||
/>
|
:tooltip="$t('Tooltips.Subscription Settings.Fetch Automatically')"
|
||||||
<ft-toggle-switch
|
:compact="true"
|
||||||
:label="$t('Settings.Subscription Settings.Fetch Feeds from RSS')"
|
@change="updateFetchSubscriptionsAutomatically"
|
||||||
:default-value="useRssFeeds"
|
/>
|
||||||
:tooltip="$t('Tooltips.Subscription Settings.Fetch Feeds from RSS')"
|
<ft-toggle-switch
|
||||||
@change="updateUseRssFeeds"
|
:label="$t('Settings.Subscription Settings.Fetch Feeds from RSS')"
|
||||||
/>
|
:default-value="useRssFeeds"
|
||||||
</ft-flex-box>
|
:tooltip="$t('Tooltips.Subscription Settings.Fetch Feeds from RSS')"
|
||||||
|
:compact="true"
|
||||||
|
@change="updateUseRssFeeds"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="switchColumn">
|
||||||
|
<ft-toggle-switch
|
||||||
|
:label="$t('Settings.Subscription Settings.Hide Videos on Watch')"
|
||||||
|
:default-value="hideWatchedSubs"
|
||||||
|
:compact="true"
|
||||||
|
@change="updateHideWatchedSubs"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</ft-settings-section>
|
</ft-settings-section>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
|
@ -269,7 +269,8 @@ const state = {
|
||||||
screenshotQuality: 95,
|
screenshotQuality: 95,
|
||||||
screenshotAskPath: false,
|
screenshotAskPath: false,
|
||||||
screenshotFolderPath: '',
|
screenshotFolderPath: '',
|
||||||
screenshotFilenamePattern: '%Y%M%D-%H%N%S'
|
screenshotFilenamePattern: '%Y%M%D-%H%N%S',
|
||||||
|
fetchSubscriptionsAutomatically: true
|
||||||
}
|
}
|
||||||
|
|
||||||
const stateWithSideEffects = {
|
const stateWithSideEffects = {
|
||||||
|
|
|
@ -28,7 +28,8 @@ export default Vue.extend({
|
||||||
isLoading: false,
|
isLoading: false,
|
||||||
dataLimit: 100,
|
dataLimit: 100,
|
||||||
videoList: [],
|
videoList: [],
|
||||||
errorChannels: []
|
errorChannels: [],
|
||||||
|
attemptedFetch: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
@ -86,6 +87,9 @@ export default Vue.extend({
|
||||||
|
|
||||||
hideLiveStreams: function() {
|
hideLiveStreams: function() {
|
||||||
return this.$store.getters.getHideLiveStreams
|
return this.$store.getters.getHideLiveStreams
|
||||||
|
},
|
||||||
|
fetchSubscriptionsAutomatically: function() {
|
||||||
|
return this.$store.getters.getFetchSubscriptionsAutomatically
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
|
@ -120,10 +124,12 @@ export default Vue.extend({
|
||||||
}
|
}
|
||||||
|
|
||||||
this.isLoading = false
|
this.isLoading = false
|
||||||
} else {
|
} else if (this.fetchSubscriptionsAutomatically) {
|
||||||
setTimeout(async () => {
|
setTimeout(async () => {
|
||||||
this.getSubscriptions()
|
this.getSubscriptions()
|
||||||
}, 300)
|
}, 300)
|
||||||
|
} else {
|
||||||
|
this.isLoading = false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
@ -149,6 +155,7 @@ export default Vue.extend({
|
||||||
this.isLoading = true
|
this.isLoading = true
|
||||||
this.updateShowProgressBar(true)
|
this.updateShowProgressBar(true)
|
||||||
this.setProgressBarPercentage(0)
|
this.setProgressBarPercentage(0)
|
||||||
|
this.attemptedFetch = true
|
||||||
|
|
||||||
let videoList = []
|
let videoList = []
|
||||||
let channelCount = 0
|
let channelCount = 0
|
||||||
|
@ -230,8 +237,13 @@ export default Vue.extend({
|
||||||
}
|
}
|
||||||
}))
|
}))
|
||||||
this.isLoading = false
|
this.isLoading = false
|
||||||
} else {
|
} else if (this.fetchSubscriptionsAutomatically) {
|
||||||
this.getSubscriptions()
|
this.getSubscriptions()
|
||||||
|
} else if (this.activeProfile._id === this.profileSubscriptions.activeProfile) {
|
||||||
|
this.videoList = this.profileSubscriptions.videoList
|
||||||
|
} else {
|
||||||
|
this.videoList = []
|
||||||
|
this.attemptedFetch = false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -28,9 +28,24 @@
|
||||||
<ft-flex-box
|
<ft-flex-box
|
||||||
v-if="activeVideoList.length === 0"
|
v-if="activeVideoList.length === 0"
|
||||||
>
|
>
|
||||||
<p class="message">
|
<p
|
||||||
|
v-if="activeSubscriptionList.length === 0"
|
||||||
|
class="message"
|
||||||
|
>
|
||||||
{{ $t("Subscriptions['Your Subscription list is currently empty. Start adding subscriptions to see them here.']") }}
|
{{ $t("Subscriptions['Your Subscription list is currently empty. Start adding subscriptions to see them here.']") }}
|
||||||
</p>
|
</p>
|
||||||
|
<p
|
||||||
|
v-else-if="!fetchSubscriptionsAutomatically && !attemptedFetch"
|
||||||
|
class="message"
|
||||||
|
>
|
||||||
|
{{ $t("Subscriptions.Disabled Automatic Fetching") }}
|
||||||
|
</p>
|
||||||
|
<p
|
||||||
|
v-else
|
||||||
|
class="message"
|
||||||
|
>
|
||||||
|
{{ $t("Subscriptions.Empty Channels") }}
|
||||||
|
</p>
|
||||||
</ft-flex-box>
|
</ft-flex-box>
|
||||||
<ft-element-list
|
<ft-element-list
|
||||||
v-else
|
v-else
|
||||||
|
|
|
@ -84,8 +84,9 @@ Subscriptions:
|
||||||
Latest Subscriptions: Latest Subscriptions
|
Latest Subscriptions: Latest Subscriptions
|
||||||
This profile has a large number of subscriptions. Forcing RSS to avoid rate limiting: This
|
This profile has a large number of subscriptions. Forcing RSS to avoid rate limiting: This
|
||||||
profile has a large number of subscriptions. Forcing RSS to avoid rate limiting
|
profile has a large number of subscriptions. Forcing RSS to avoid rate limiting
|
||||||
'Your Subscription list is currently empty. Start adding subscriptions to see them here.': Your
|
'Your Subscription list is currently empty. Start adding subscriptions to see them here.': Your Subscription list is currently empty. Start adding subscriptions to see them here.
|
||||||
Subscription list is currently empty. Start adding subscriptions to see them here.
|
Disabled Automatic Fetching: You have disabled automatic subscription fetching. Refresh subscriptions to see them here.
|
||||||
|
Empty Channels: Your subscribed channels currently does not have any videos.
|
||||||
'Getting Subscriptions. Please wait.': Getting Subscriptions. Please wait.
|
'Getting Subscriptions. Please wait.': Getting Subscriptions. Please wait.
|
||||||
Refresh Subscriptions: Refresh Subscriptions
|
Refresh Subscriptions: Refresh Subscriptions
|
||||||
Load More Videos: Load More Videos
|
Load More Videos: Load More Videos
|
||||||
|
@ -304,6 +305,7 @@ Settings:
|
||||||
Hide Videos on Watch: Hide Videos on Watch
|
Hide Videos on Watch: Hide Videos on Watch
|
||||||
Fetch Feeds from RSS: Fetch Feeds from RSS
|
Fetch Feeds from RSS: Fetch Feeds from RSS
|
||||||
Manage Subscriptions: Manage Subscriptions
|
Manage Subscriptions: Manage Subscriptions
|
||||||
|
Fetch Automatically: Fetch Feed Automatically
|
||||||
Distraction Free Settings:
|
Distraction Free Settings:
|
||||||
Distraction Free Settings: Distraction Free Settings
|
Distraction Free Settings: Distraction Free Settings
|
||||||
Hide Video Views: Hide Video Views
|
Hide Video Views: Hide Video Views
|
||||||
|
@ -774,6 +776,8 @@ Tooltips:
|
||||||
Fetch Feeds from RSS: When enabled, FreeTube will use RSS instead of its default
|
Fetch Feeds from RSS: When enabled, FreeTube will use RSS instead of its default
|
||||||
method for grabbing your subscription feed. RSS is faster and prevents IP blocking,
|
method for grabbing your subscription feed. RSS is faster and prevents IP blocking,
|
||||||
but doesn't provide certain information like video duration or live status
|
but doesn't provide certain information like video duration or live status
|
||||||
|
Fetch Automatically: When enabled, FreeTube will automatically fetch
|
||||||
|
your subscription feed when a new window is opened and when switching profile.
|
||||||
Privacy Settings:
|
Privacy Settings:
|
||||||
Remove Video Meta Files: When enabled, FreeTube automatically deletes meta files created during video playback,
|
Remove Video Meta Files: When enabled, FreeTube automatically deletes meta files created during video playback,
|
||||||
when the watch page is closed.
|
when the watch page is closed.
|
||||||
|
|
Loading…
Reference in New Issue