Skip to content
Snippets Groups Projects
App.js 2.72 KiB
Newer Older
  • Learn to ignore specific revisions
  • lain's avatar
    lain committed
    import UserPanel from './components/user_panel/user_panel.vue'
    
    lain's avatar
    lain committed
    import NavPanel from './components/nav_panel/nav_panel.vue'
    
    lain's avatar
    lain committed
    import Notifications from './components/notifications/notifications.vue'
    
    lain's avatar
    lain committed
    import UserFinder from './components/user_finder/user_finder.vue'
    
    Hakaba Hitoyo's avatar
    Hakaba Hitoyo committed
    import FeaturesPanel from './components/features_panel/features_panel.vue'
    
    import InstanceSpecificPanel from './components/instance_specific_panel/instance_specific_panel.vue'
    
    Hakaba Hitoyo's avatar
    Hakaba Hitoyo committed
    import WhoToFollowPanel from './components/who_to_follow_panel/who_to_follow_panel.vue'
    
    lain's avatar
    lain committed
    import ChatPanel from './components/chat_panel/chat_panel.vue'
    
    lain's avatar
    .
    lain committed
    
    export default {
      name: 'app',
      components: {
    
    lain's avatar
    lain committed
        UserPanel,
    
    lain's avatar
    lain committed
        NavPanel,
    
    lain's avatar
    lain committed
        Notifications,
    
    lain's avatar
    lain committed
        UserFinder,
    
    Hakaba Hitoyo's avatar
    Hakaba Hitoyo committed
        WhoToFollowPanel,
        InstanceSpecificPanel,
        ChatPanel
    
    lain's avatar
    lain committed
      },
    
    lain's avatar
    lain committed
      data: () => ({
    
        mobileActivePanel: 'timeline',
        supportsMask: window.CSS && window.CSS.supports && (
          window.CSS.supports('mask-size', 'contain') ||
            window.CSS.supports('-webkit-mask-size', 'contain') ||
            window.CSS.supports('-moz-mask-size', 'contain') ||
            window.CSS.supports('-ms-mask-size', 'contain') ||
            window.CSS.supports('-o-mask-size', 'contain')
        )
    
    lain's avatar
    lain committed
      }),
    
      created () {
        // Load the locale from the storage
        this.$i18n.locale = this.$store.state.config.interfaceLanguage
      },
    
    lain's avatar
    lain committed
      computed: {
    
    lain's avatar
    lain committed
        currentUser () { return this.$store.state.users.currentUser },
    
    lain's avatar
    lain committed
        background () {
          return this.currentUser.background_image || this.$store.state.config.background
        },
    
        enableMask () { return this.supportsMask && this.$store.state.config.logoMask },
        logoStyle () {
          return {
            'visibility': this.enableMask ? 'hidden' : 'visible'
          }
        },
        logoMaskStyle () {
          return this.enableMask ? {
            'mask-image': `url(${this.$store.state.config.logo})`
          } : {
            'background-color': this.enableMask ? '' : 'transparent'
          }
        },
        logoBgStyle () {
          return Object.assign({
            'margin': `${this.$store.state.config.logoMargin} 0`
          }, this.enableMask ? {} : {
            'background-color': this.enableMask ? '' : 'transparent'
          })
        },
        logo () { return this.$store.state.config.logo },
    
    lain's avatar
    lain committed
        style () { return { 'background-image': `url(${this.background})` } },
    
    lain's avatar
    lain committed
        sitename () { return this.$store.state.config.name },
    
    Hakaba Hitoyo's avatar
    Hakaba Hitoyo committed
        chat () { return this.$store.state.chat.channel.state === 'joined' },
    
    tsukada-ecsec's avatar
    tsukada-ecsec committed
        suggestionsEnabled () { return this.$store.state.config.suggestionsEnabled },
    
    Hakaba Hitoyo's avatar
    Hakaba Hitoyo committed
        showInstanceSpecificPanel () { return this.$store.state.config.showInstanceSpecificPanel }
    
    lain's avatar
    lain committed
      },
      methods: {
        activatePanel (panelName) {
          this.mobileActivePanel = panelName
    
        },
        scrollToTop () {
          window.scrollTo(0, 0)
    
    lain's avatar
    lain committed
        },
        logout () {
          this.$store.dispatch('logout')
    
    lain's avatar
    lain committed
        }
    
    lain's avatar
    .
    lain committed
      }
    }