diff --git a/src/client/components/ui/a.vue b/src/client/components/ui/a.vue index 98f9212545..516cf02bd6 100644 --- a/src/client/components/ui/a.vue +++ b/src/client/components/ui/a.vue @@ -11,6 +11,7 @@ import * as os from '@/os'; import copyToClipboard from '@/scripts/copy-to-clipboard'; import { router } from '@/router'; import { deckmode, url } from '@/config'; +import { popout } from '@/scripts/popout'; export default defineComponent({ inject: { @@ -87,11 +88,23 @@ export default defineComponent({ }], e); }, + window() { + os.pageWindow(this.to); + }, + + popout() { + popout(this.to); + }, + nav() { + if (this.to.startsWith('/my/messaging')) { + if (this.$store.state.device.chatOpenBehavior === 'window') return this.window(); + if (this.$store.state.device.chatOpenBehavior === 'popout') return this.popout(); + } + if (this.behavior) { if (this.behavior === 'window') { - os.pageWindow(this.to); - return; + return this.window(); } } @@ -99,12 +112,10 @@ export default defineComponent({ this.navHook(this.to); } else { if (this.$store.state.device.defaultSideView && this.sideViewHook && this.to !== '/') { - this.sideViewHook(this.to); - return; + return this.sideViewHook(this.to); } if (this.$store.state.device.deckNavWindow && deckmode && this.to !== '/') { - os.pageWindow(this.to); - return; + return this.window(); } this.$router.push(this.to); diff --git a/src/client/scripts/get-user-menu.ts b/src/client/scripts/get-user-menu.ts index 72ae9c1e7b..693e573b07 100644 --- a/src/client/scripts/get-user-menu.ts +++ b/src/client/scripts/get-user-menu.ts @@ -131,16 +131,10 @@ export function getUserMenu(user) { os.post({ specified: user }); } }, store.state.i.id != user.id ? { + type: 'link', icon: faComments, text: i18n.global.t('startMessaging'), - action: () => { - const acct = getAcct(user); - switch (store.state.device.chatOpenBehavior) { - case 'window': { os.pageWindow('/my/messaging/' + acct); break; } - case 'popout': { popout('/my/messaging'); break; } - default: { router.push('/my/messaging'); break; } - } - } + to: '/my/messaging/' + getAcct(user), } : undefined, null, { icon: faListUl, text: i18n.global.t('addToList'), diff --git a/src/client/sidebar.ts b/src/client/sidebar.ts index af1f68b0dc..4b7acb0a60 100644 --- a/src/client/sidebar.ts +++ b/src/client/sidebar.ts @@ -4,9 +4,6 @@ import { computed } from 'vue'; import { store } from '@/store'; import { deckmode } from '@/config'; import { search } from '@/scripts/search'; -import { popout } from '@/scripts/popout'; -import { router } from '@/router'; -import * as os from '@/os'; export const sidebarDef = { notifications: { @@ -21,13 +18,7 @@ export const sidebarDef = { icon: faComments, show: computed(() => store.getters.isSignedIn), indicated: computed(() => store.getters.isSignedIn && store.state.i.hasUnreadMessagingMessage), - action: () => { - switch (store.state.device.chatOpenBehavior) { - case 'window': { os.pageWindow('/my/messaging'); break; } - case 'popout': { popout('/my/messaging'); break; } - default: { router.push('/my/messaging'); break; } - } - } + to: '/my/messaging', }, drive: { title: 'drive',