diff options
Diffstat (limited to 'packages/frontend/src/ui/deck/channel-column.vue')
| -rw-r--r-- | packages/frontend/src/ui/deck/channel-column.vue | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/packages/frontend/src/ui/deck/channel-column.vue b/packages/frontend/src/ui/deck/channel-column.vue index 28c741bba2..7c5b13eaf1 100644 --- a/packages/frontend/src/ui/deck/channel-column.vue +++ b/packages/frontend/src/ui/deck/channel-column.vue @@ -13,13 +13,13 @@ SPDX-License-Identifier: AGPL-3.0-only <div style="padding: 8px; text-align: center;"> <MkButton primary gradate rounded inline small @click="post"><i class="ti ti-pencil"></i></MkButton> </div> - <MkTimeline ref="timeline" src="channel" :channel="column.channelId"/> + <MkTimeline ref="timeline" src="channel" :channel="column.channelId" @note="onNote"/> </template> </XColumn> </template> <script lang="ts" setup> -import { shallowRef } from 'vue'; +import { ref, shallowRef, watch } from 'vue'; import * as Misskey from 'misskey-js'; import XColumn from './column.vue'; import { updateColumn, Column } from './deck-store.js'; @@ -29,6 +29,10 @@ import * as os from '@/os.js'; import { favoritedChannelsCache } from '@/cache.js'; import { misskeyApi } from '@/scripts/misskey-api.js'; import { i18n } from '@/i18n.js'; +import { MenuItem } from '@/types/menu.js'; +import { SoundStore } from '@/store.js'; +import { soundSettingsButton } from '@/ui/deck/tl-note-notification.js'; +import * as sound from '@/scripts/sound.js'; const props = defineProps<{ column: Column; @@ -37,11 +41,16 @@ const props = defineProps<{ const timeline = shallowRef<InstanceType<typeof MkTimeline>>(); const channel = shallowRef<Misskey.entities.Channel>(); +const soundSetting = ref<SoundStore>(props.column.soundSetting ?? { type: null, volume: 1 }); if (props.column.channelId == null) { setChannel(); } +watch(soundSetting, v => { + updateColumn(props.column.id, { soundSetting: v }); +}); + async function setChannel() { const channels = await favoritedChannelsCache.fetch(); const { canceled, result: chosenChannel } = await os.select({ @@ -70,9 +79,17 @@ async function post() { }); } -const menu = [{ +function onNote() { + sound.playMisskeySfxFile(soundSetting.value); +} + +const menu: MenuItem[] = [{ icon: 'ti ti-pencil', text: i18n.ts.selectChannel, action: setChannel, +}, { + icon: 'ti ti-bell', + text: i18n.ts._deck.newNoteNotificationSettings, + action: () => soundSettingsButton(soundSetting), }]; </script> |