FreeTube/src/renderer/components/side-nav/side-nav.js

84 lines
2.5 KiB
JavaScript

import { defineComponent } from 'vue'
import FtFlexBox from '../ft-flex-box/ft-flex-box.vue'
import SideNavMoreOptions from '../side-nav-more-options/side-nav-more-options.vue'
import { youtubeImageUrlToInvidious } from '../../helpers/api/invidious'
import { deepCopy } from '../../helpers/utils'
export default defineComponent({
name: 'SideNav',
components: {
'ft-flex-box': FtFlexBox,
'side-nav-more-options': SideNavMoreOptions
},
computed: {
isOpen: function () {
return this.$store.getters.getIsSideNavOpen
},
backendPreference: function () {
let preference = this.$store.getters.getBackendPreference
if (preference === 'piped') {
preference = this.$store.getters.getFallbackPreference
}
return preference
},
backendFallback: function () {
return this.$store.getters.getBackendFallback && this.$store.getters.getBackendPreference !== 'piped'
},
currentInvidiousInstance: function () {
return this.$store.getters.getCurrentInvidiousInstance
},
profileList: function () {
return this.$store.getters.getProfileList
},
activeProfile: function () {
return this.$store.getters.getActiveProfile
},
locale: function () {
return this.$i18n.locale.replace('_', '-')
},
activeSubscriptions: function () {
const subscriptions = deepCopy(this.activeProfile.subscriptions)
subscriptions.sort((a, b) => {
return a.name?.toLowerCase().localeCompare(b.name?.toLowerCase(), this.locale)
})
if (this.backendPreference === 'invidious') {
subscriptions.forEach((channel) => {
channel.thumbnail = youtubeImageUrlToInvidious(channel.thumbnail, this.currentInvidiousInstance)
})
}
return subscriptions
},
hidePopularVideos: function () {
return this.$store.getters.getHidePopularVideos
},
hidePlaylists: function () {
return this.$store.getters.getHidePlaylists
},
hideTrendingVideos: function () {
return this.$store.getters.getHideTrendingVideos
},
hideActiveSubscriptions: function () {
return this.$store.getters.getHideActiveSubscriptions
},
hideLabelsSideBar: function () {
return this.$store.getters.getHideLabelsSideBar
},
hideText: function () {
return !this.isOpen && this.hideLabelsSideBar
},
applyNavIconExpand: function() {
return {
navIconExpand: this.hideText
}
},
applyHiddenLabels: function() {
return {
hiddenLabels: this.hideText
}
}
}
})