From 5bdae9f6d03bbb1fc1cf341b2e6b3e5d15d03fad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=8B=E3=81=A3=E3=81=93=E3=81=8B=E3=82=8A?= <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Sun, 26 Nov 2023 13:04:44 +0900 Subject: [PATCH] =?UTF-8?q?enhance(frontend):=20=E3=83=AA=E3=82=A2?= =?UTF-8?q?=E3=82=AF=E3=82=B7=E3=83=A7=E3=83=B3=E9=81=B8=E6=8A=9E=E6=99=82?= =?UTF-8?q?=E3=81=AB=E9=9F=B3=E3=82=92=E6=B5=81=E3=81=9B=E3=82=8B=E3=82=88?= =?UTF-8?q?=E3=81=86=E3=81=AB=20(#12441)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * (add) リアクション選択時に音を鳴らせるように * Update Changelog * tweak sound * tweak sound --------- Co-authored-by: syuilo <Syuilotan@yahoo.co.jp> --- CHANGELOG.md | 1 + locales/index.d.ts | 1 + locales/ja-JP.yml | 1 + .../frontend/assets/sounds/syuilo/bubble1.mp3 | Bin 0 -> 19328 bytes .../frontend/assets/sounds/syuilo/bubble2.mp3 | Bin 0 -> 19328 bytes packages/frontend/src/components/MkNote.vue | 5 +++++ .../frontend/src/components/MkNoteDetailed.vue | 5 +++++ .../components/MkReactionsViewer.reaction.vue | 7 +++++++ packages/frontend/src/pages/settings/sounds.vue | 3 ++- packages/frontend/src/scripts/sound.ts | 4 +++- packages/frontend/src/store.ts | 4 ++++ 11 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 packages/frontend/assets/sounds/syuilo/bubble1.mp3 create mode 100644 packages/frontend/assets/sounds/syuilo/bubble2.mp3 diff --git a/CHANGELOG.md b/CHANGELOG.md index fdf6709117..7f02d462b2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ ### Client - Enhance: 絵文字のオートコンプリート機能強化 #12364 - Enhance: ユーザーのRawデータを表示するページが復活 +- Enhance: リアクション選択時に音を鳴らせるように - fix: 「設定のバックアップ」で一部の項目がバックアップに含まれていなかった問題を修正 - Fix: ウィジェットのジョブキューにて音声の発音方法変更に追従できていなかったのを修正 #12367 - Fix: コードエディタが正しく表示されない問題を修正 diff --git a/locales/index.d.ts b/locales/index.d.ts index 042c7750e1..6e9fe311f1 100644 --- a/locales/index.d.ts +++ b/locales/index.d.ts @@ -1943,6 +1943,7 @@ export interface Locale { "notification": string; "antenna": string; "channel": string; + "reaction": string; }; "_ago": { "future": string; diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 58e0dd0b19..0b051b6190 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -1848,6 +1848,7 @@ _sfx: notification: "通知" antenna: "アンテナ受信" channel: "チャンネル通知" + reaction: "リアクション選択時" _ago: future: "未来" diff --git a/packages/frontend/assets/sounds/syuilo/bubble1.mp3 b/packages/frontend/assets/sounds/syuilo/bubble1.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..05b8ef8b10056c66a6e1a9b401d86530ecdc3296 GIT binary patch literal 19328 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 E54tYUVgLXD literal 0 HcmV?d00001 diff --git a/packages/frontend/assets/sounds/syuilo/bubble2.mp3 b/packages/frontend/assets/sounds/syuilo/bubble2.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..8b4f8df6e9c17daec54da10bb50e790194c767d2 GIT binary patch literal 19328 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 DcMQD( literal 0 HcmV?d00001 diff --git a/packages/frontend/src/components/MkNote.vue b/packages/frontend/src/components/MkNote.vue index 6349df2e30..d047495dc9 100644 --- a/packages/frontend/src/components/MkNote.vue +++ b/packages/frontend/src/components/MkNote.vue @@ -163,6 +163,7 @@ import { focusPrev, focusNext } from '@/scripts/focus.js'; import { checkWordMute } from '@/scripts/check-word-mute.js'; import { userPage } from '@/filters/user.js'; import * as os from '@/os.js'; +import * as sound from '@/scripts/sound.js'; import { defaultStore, noteViewInterruptors } from '@/store.js'; import { reactionPicker } from '@/scripts/reaction-picker.js'; import { extractUrlFromMfm } from '@/scripts/extract-url-from-mfm.js'; @@ -336,6 +337,8 @@ function react(viaKeyboard = false): void { pleaseLogin(); showMovedDialog(); if (appearNote.reactionAcceptance === 'likeOnly') { + sound.play('reaction'); + if (props.mock) { return; } @@ -354,6 +357,8 @@ function react(viaKeyboard = false): void { } else { blur(); reactionPicker.show(reactButton.value, reaction => { + sound.play('reaction'); + if (props.mock) { emit('reaction', reaction); return; diff --git a/packages/frontend/src/components/MkNoteDetailed.vue b/packages/frontend/src/components/MkNoteDetailed.vue index d1bc3f676f..d8089ac36f 100644 --- a/packages/frontend/src/components/MkNoteDetailed.vue +++ b/packages/frontend/src/components/MkNoteDetailed.vue @@ -210,6 +210,7 @@ import { checkWordMute } from '@/scripts/check-word-mute.js'; import { userPage } from '@/filters/user.js'; import { notePage } from '@/filters/note.js'; import * as os from '@/os.js'; +import * as sound from '@/scripts/sound.js'; import { defaultStore, noteViewInterruptors } from '@/store.js'; import { reactionPicker } from '@/scripts/reaction-picker.js'; import { extractUrlFromMfm } from '@/scripts/extract-url-from-mfm.js'; @@ -369,6 +370,8 @@ function react(viaKeyboard = false): void { pleaseLogin(); showMovedDialog(); if (appearNote.reactionAcceptance === 'likeOnly') { + sound.play('reaction'); + os.api('notes/reactions/create', { noteId: appearNote.id, reaction: '❤️', @@ -383,6 +386,8 @@ function react(viaKeyboard = false): void { } else { blur(); reactionPicker.show(reactButton.value, reaction => { + sound.play('reaction'); + os.api('notes/reactions/create', { noteId: appearNote.id, reaction: reaction, diff --git a/packages/frontend/src/components/MkReactionsViewer.reaction.vue b/packages/frontend/src/components/MkReactionsViewer.reaction.vue index 9a107c3674..65a5c2374e 100644 --- a/packages/frontend/src/components/MkReactionsViewer.reaction.vue +++ b/packages/frontend/src/components/MkReactionsViewer.reaction.vue @@ -28,6 +28,7 @@ import MkReactionEffect from '@/components/MkReactionEffect.vue'; import { claimAchievement } from '@/scripts/achievements.js'; import { defaultStore } from '@/store.js'; import { i18n } from '@/i18n.js'; +import * as sound from '@/scripts/sound.js'; const props = defineProps<{ reaction: string; @@ -59,6 +60,10 @@ async function toggleReaction() { }); if (confirm.canceled) return; + if (oldReaction !== props.reaction) { + sound.play('reaction'); + } + if (mock) { emit('reactionToggled', props.reaction, (props.count - 1)); return; @@ -75,6 +80,8 @@ async function toggleReaction() { } }); } else { + sound.play('reaction'); + if (mock) { emit('reactionToggled', props.reaction, (props.count + 1)); return; diff --git a/packages/frontend/src/pages/settings/sounds.vue b/packages/frontend/src/pages/settings/sounds.vue index cd1707a594..244bb1e0e2 100644 --- a/packages/frontend/src/pages/settings/sounds.vue +++ b/packages/frontend/src/pages/settings/sounds.vue @@ -38,7 +38,7 @@ import { defaultStore } from '@/store.js'; const masterVolume = computed(defaultStore.makeGetterSetter('sound_masterVolume')); -const soundsKeys = ['note', 'noteMy', 'notification', 'antenna', 'channel'] as const; +const soundsKeys = ['note', 'noteMy', 'notification', 'antenna', 'channel', 'reaction'] as const; const sounds = ref<Record<typeof soundsKeys[number], Ref<any>>>({ note: defaultStore.reactiveState.sound_note, @@ -46,6 +46,7 @@ const sounds = ref<Record<typeof soundsKeys[number], Ref<any>>>({ notification: defaultStore.reactiveState.sound_notification, antenna: defaultStore.reactiveState.sound_antenna, channel: defaultStore.reactiveState.sound_channel, + reaction: defaultStore.reactiveState.sound_reaction, }); async function updated(type: keyof typeof sounds.value, sound) { diff --git a/packages/frontend/src/scripts/sound.ts b/packages/frontend/src/scripts/sound.ts index 2b604bd98a..4d7ef9bdee 100644 --- a/packages/frontend/src/scripts/sound.ts +++ b/packages/frontend/src/scripts/sound.ts @@ -38,6 +38,8 @@ export const soundsTypes = [ 'syuilo/waon', 'syuilo/popo', 'syuilo/triple', + 'syuilo/bubble1', + 'syuilo/bubble2', 'syuilo/poi1', 'syuilo/poi2', 'syuilo/pirori', @@ -77,7 +79,7 @@ export async function loadAudio(file: string, useCache = true) { return audioBuffer; } -export function play(type: 'noteMy' | 'note' | 'antenna' | 'channel' | 'notification') { +export function play(type: 'noteMy' | 'note' | 'antenna' | 'channel' | 'notification' | 'reaction') { const sound = defaultStore.state[`sound_${type}`]; if (_DEV_) console.log('play', type, sound); if (sound.type == null) return; diff --git a/packages/frontend/src/store.ts b/packages/frontend/src/store.ts index 12660e9e8d..f2ed4e7c0b 100644 --- a/packages/frontend/src/store.ts +++ b/packages/frontend/src/store.ts @@ -411,6 +411,10 @@ export const defaultStore = markRaw(new Storage('base', { where: 'device', default: { type: 'syuilo/square-pico', volume: 1 }, }, + sound_reaction: { + where: 'device', + default: { type: 'syuilo/bubble2', volume: 1 }, + }, })); // TODO: 他のタブと永続化されたstateを同期