2018-12-23 09:50:19 -08:00
|
|
|
import UserCardContent from '../user_card_content/user_card_content.vue'
|
2018-12-28 11:39:54 -08:00
|
|
|
import { unseenNotificationsFromStore } from '../../services/notification_utils/notification_utils'
|
2018-12-23 09:50:19 -08:00
|
|
|
|
2018-12-29 02:44:21 -08:00
|
|
|
// TODO: separate touch gesture stuff into their own utils if more components want them
|
2018-12-28 11:39:54 -08:00
|
|
|
const deltaCoord = (oldCoord, newCoord) => [newCoord[0] - oldCoord[0], newCoord[1] - oldCoord[1]]
|
2018-12-23 09:50:19 -08:00
|
|
|
|
2018-12-28 11:39:54 -08:00
|
|
|
const touchEventCoord = e => ([e.touches[0].screenX, e.touches[0].screenY])
|
2018-12-23 09:50:19 -08:00
|
|
|
|
2018-12-15 09:13:01 -08:00
|
|
|
const SideDrawer = {
|
2018-12-28 11:39:54 -08:00
|
|
|
props: [ 'logout' ],
|
2018-12-23 09:50:19 -08:00
|
|
|
data: () => ({
|
|
|
|
closed: true,
|
2018-12-28 11:39:54 -08:00
|
|
|
touchCoord: [0, 0]
|
2018-12-23 09:50:19 -08:00
|
|
|
}),
|
|
|
|
components: { UserCardContent },
|
2018-12-15 09:13:01 -08:00
|
|
|
computed: {
|
|
|
|
currentUser () {
|
|
|
|
return this.$store.state.users.currentUser
|
2018-12-28 11:39:54 -08:00
|
|
|
},
|
|
|
|
chat () { return this.$store.state.chat.channel.state === 'joined' },
|
|
|
|
unseenNotifications () {
|
|
|
|
return unseenNotificationsFromStore(this.$store)
|
|
|
|
},
|
|
|
|
unseenNotificationsCount () {
|
|
|
|
return this.unseenNotifications.length
|
2019-01-15 18:33:08 -08:00
|
|
|
},
|
|
|
|
suggestionsEnabled () {
|
|
|
|
return this.$store.state.instance.suggestionsEnabled
|
2019-02-03 11:47:02 -08:00
|
|
|
},
|
|
|
|
logo () {
|
|
|
|
return this.$store.state.instance.logo
|
|
|
|
},
|
|
|
|
sitename () {
|
|
|
|
return this.$store.state.instance.name
|
2018-12-20 12:20:04 -08:00
|
|
|
}
|
|
|
|
},
|
|
|
|
methods: {
|
2018-12-23 09:50:19 -08:00
|
|
|
toggleDrawer () {
|
|
|
|
this.closed = !this.closed
|
|
|
|
},
|
2018-12-22 07:32:07 -08:00
|
|
|
doLogout () {
|
|
|
|
this.logout()
|
2018-12-28 11:39:54 -08:00
|
|
|
this.toggleDrawer()
|
2018-12-23 09:50:19 -08:00
|
|
|
},
|
|
|
|
touchStart (e) {
|
2018-12-28 11:39:54 -08:00
|
|
|
this.touchCoord = touchEventCoord(e)
|
2018-12-23 09:50:19 -08:00
|
|
|
},
|
|
|
|
touchMove (e) {
|
2018-12-28 11:39:54 -08:00
|
|
|
const delta = deltaCoord(this.touchCoord, touchEventCoord(e))
|
|
|
|
if (delta[0] < -30 && Math.abs(delta[1]) < Math.abs(delta[0]) && !this.closed) {
|
2018-12-23 09:50:19 -08:00
|
|
|
this.toggleDrawer()
|
|
|
|
}
|
2018-12-15 09:13:01 -08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export default SideDrawer
|