cd4ad2df11
* origin/develop: (475 commits) Apply 1 suggestion(s) to 1 file(s) Update dependency @ungap/event-target to v0.2.3 Update package.json fix broken icons after FA upgrade Update Font Awesome Update dependency webpack-dev-middleware to v3.7.3 Update dependency vuelidate to v0.7.7 Pin dependency @kazvmoe-infra/pinch-zoom-element to 1.2.0 lint Make media modal buttons larger Add English translation for hide tooltip Add hide button to media modal Lint Prevent hiding media viewer if swiped over SwipeClick Fix webkit image blurs Fix video in media modal not displaying properly Add changelog for https://git.pleroma.social/pleroma/pleroma-fe/-/merge_requests/1403 Remove image box-shadow in media modal Clean up debug code for image pinch zoom Bump @kazvmoe-infra/pinch-zoom-element to 1.2.0 on npm ...
103 lines
3.9 KiB
JavaScript
103 lines
3.9 KiB
JavaScript
import UserPanel from './components/user_panel/user_panel.vue'
|
|
import NavPanel from './components/nav_panel/nav_panel.vue'
|
|
import Notifications from './components/notifications/notifications.vue'
|
|
import InstanceSpecificPanel from './components/instance_specific_panel/instance_specific_panel.vue'
|
|
import FeaturesPanel from './components/features_panel/features_panel.vue'
|
|
import WhoToFollowPanel from './components/who_to_follow_panel/who_to_follow_panel.vue'
|
|
import ShoutPanel from './components/shout_panel/shout_panel.vue'
|
|
import SettingsModal from './components/settings_modal/settings_modal.vue'
|
|
import MediaModal from './components/media_modal/media_modal.vue'
|
|
import SideDrawer from './components/side_drawer/side_drawer.vue'
|
|
import MobilePostStatusButton from './components/mobile_post_status_button/mobile_post_status_button.vue'
|
|
import MobileNav from './components/mobile_nav/mobile_nav.vue'
|
|
import DesktopNav from './components/desktop_nav/desktop_nav.vue'
|
|
import UserReportingModal from './components/user_reporting_modal/user_reporting_modal.vue'
|
|
import PostStatusModal from './components/post_status_modal/post_status_modal.vue'
|
|
import GlobalNoticeList from './components/global_notice_list/global_notice_list.vue'
|
|
import { windowWidth, windowHeight } from './services/window_utils/window_utils'
|
|
import { mapGetters } from 'vuex'
|
|
|
|
export default {
|
|
name: 'app',
|
|
components: {
|
|
UserPanel,
|
|
NavPanel,
|
|
Notifications,
|
|
InstanceSpecificPanel,
|
|
FeaturesPanel,
|
|
WhoToFollowPanel,
|
|
ShoutPanel,
|
|
MediaModal,
|
|
SideDrawer,
|
|
MobilePostStatusButton,
|
|
MobileNav,
|
|
DesktopNav,
|
|
SettingsModal,
|
|
UserReportingModal,
|
|
PostStatusModal,
|
|
GlobalNoticeList
|
|
},
|
|
data: () => ({
|
|
mobileActivePanel: 'timeline'
|
|
}),
|
|
created () {
|
|
// Load the locale from the storage
|
|
const val = this.$store.getters.mergedConfig.interfaceLanguage
|
|
this.$store.dispatch('setOption', { name: 'interfaceLanguage', value: val })
|
|
window.addEventListener('resize', this.updateMobileState)
|
|
},
|
|
unmounted () {
|
|
window.removeEventListener('resize', this.updateMobileState)
|
|
},
|
|
computed: {
|
|
currentUser () { return this.$store.state.users.currentUser },
|
|
userBackground () { return this.currentUser.background_image },
|
|
instanceBackground () {
|
|
return this.mergedConfig.hideInstanceWallpaper
|
|
? null
|
|
: this.$store.state.instance.background
|
|
},
|
|
background () { return this.userBackground || this.instanceBackground },
|
|
bgStyle () {
|
|
if (this.background) {
|
|
return {
|
|
'--body-background-image': `url(${this.background})`
|
|
}
|
|
}
|
|
},
|
|
shout () { return this.$store.state.shout.channel.state === 'joined' },
|
|
suggestionsEnabled () { return this.$store.state.instance.suggestionsEnabled },
|
|
showInstanceSpecificPanel () {
|
|
return this.$store.state.instance.showInstanceSpecificPanel &&
|
|
!this.$store.getters.mergedConfig.hideISP &&
|
|
this.$store.state.instance.instanceSpecificPanelContent
|
|
},
|
|
showFeaturesPanel () { return this.$store.state.instance.showFeaturesPanel },
|
|
shoutboxPosition () {
|
|
return this.$store.getters.mergedConfig.showNewPostButton || false
|
|
},
|
|
hideShoutbox () {
|
|
return this.$store.getters.mergedConfig.hideShoutbox
|
|
},
|
|
isMobileLayout () { return this.$store.state.interface.mobileLayout },
|
|
privateMode () { return this.$store.state.instance.private },
|
|
sidebarAlign () {
|
|
return {
|
|
'order': this.$store.getters.mergedConfig.sidebarRight ? 99 : 0
|
|
}
|
|
},
|
|
...mapGetters(['mergedConfig'])
|
|
},
|
|
methods: {
|
|
updateMobileState () {
|
|
const mobileLayout = windowWidth() <= 800
|
|
const layoutHeight = windowHeight()
|
|
const changed = mobileLayout !== this.isMobileLayout
|
|
if (changed) {
|
|
this.$store.dispatch('setMobileLayout', mobileLayout)
|
|
}
|
|
this.$store.dispatch('setLayoutHeight', layoutHeight)
|
|
}
|
|
}
|
|
}
|