mirror of https://github.com/FreeTubeApp/FreeTube
84 lines
2.5 KiB
JavaScript
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
|
|
}
|
|
}
|
|
}
|
|
})
|