From 0db88a5a3b1ee413886edfb78940de4d2ed1b815 Mon Sep 17 00:00:00 2001 From: tamaina Date: Wed, 12 Apr 2023 10:39:57 +0900 Subject: refactor: サウンド関連の設定をpizzaxに移行 (#8105) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * enhane: unison-reloadに指定したパスに移動できるように * null * null * feat: ログインするアカウントのIDをクエリ文字列で指定する機能 * null * await? * rename * rename * Update read.ts * merge * get-note-summary * fix * swパッケージに * add missing packages * fix getNoteSummary * add webpack-cli * :v: * remove plugins * sw-inject分離したがテストしてない * fix notification.vue * remove a blank line * disconnect intersection observer * disconnect2 * fix notification.vue * remove a blank line * disconnect intersection observer * disconnect2 * fix * :v: * clean up config * typesを戻した * backend/src/web/index.ts * notification-badges * add scripts * change create-notification.ts * Update packages/client/src/components/notification.vue Co-authored-by: Acid Chicken (硫酸鶏) * disconnect * oops * Failed to load the script unexpectedly回避 sw.jsとlib.tsを分離してみた * truncate notification * Update packages/client/src/ui/_common_/common.vue Co-authored-by: syuilo * clean up * clean up * refactor * キャッシュ対策 * Truncate push notification message * fix * wip * clean up * migration * migration * comment * move soundConfigStore * :v: * clean up * クライアントがあったらストリームに接続しているということなので通知しない判定の位置を修正 * components/drive-file-thumbnail.vue * components/drive-select-dialog.vue * components/drive-window.vue * merge * fix * remove reversi setting * Service Workerのビルドにesbuildを使うようにする * return createEmptyNotification() * fix * fix * i18n.ts * update * :v: * remove ts-loader * fix * fix * enhance: Service Workerを常に登録するように * pollEnded * pollEnded * URLをsw.jsに戻す * clean up * clean up * update sounds.vue * update * fix type * :v: * ;v; --------- Co-authored-by: Acid Chicken (硫酸鶏) Co-authored-by: syuilo --- packages/frontend/src/scripts/sound.ts | 61 +++++++++++++++++++++++++++++++--- 1 file changed, 57 insertions(+), 4 deletions(-) (limited to 'packages/frontend/src/scripts') diff --git a/packages/frontend/src/scripts/sound.ts b/packages/frontend/src/scripts/sound.ts index 35fd007e64..7a5dd4dbfa 100644 --- a/packages/frontend/src/scripts/sound.ts +++ b/packages/frontend/src/scripts/sound.ts @@ -1,4 +1,56 @@ -import { ColdDeviceStorage } from '@/store'; +import { markRaw } from 'vue'; +import { Storage } from '@/pizzax'; + +export const soundConfigStore = markRaw(new Storage('sound', { + mediaVolume: { + where: 'device', + default: 0.5 + }, + sound_masterVolume: { + where: 'device', + default: 0.3 + }, + sound_note: { + where: 'account', + default: { type: 'syuilo/n-aec', volume: 1 } + }, + sound_noteMy: { + where: 'account', + default: { type: 'syuilo/n-cea-4va', volume: 1 } + }, + sound_notification: { + where: 'account', + default: { type: 'syuilo/n-ea', volume: 1 } + }, + sound_chat: { + where: 'account', + default: { type: 'syuilo/pope1', volume: 1 } + }, + sound_chatBg: { + where: 'account', + default: { type: 'syuilo/waon', volume: 1 } + }, + sound_antenna: { + where: 'account', + default: { type: 'syuilo/triple', volume: 1 } + }, + sound_channel: { + where: 'account', + default: { type: 'syuilo/square-pico', volume: 1 } + }, +})); + +await soundConfigStore.ready; + +//#region サウンドのColdDeviceStorage => indexedDBのマイグレーション +for (const target of Object.keys(soundConfigStore.state) as Array) { + const value = localStorage.getItem(`miux:${target}`); + if (value) { + soundConfigStore.set(target, JSON.parse(value) as typeof soundConfigStore.def[typeof target]['default']); + localStorage.removeItem(`miux:${target}`); + } +} +//#endregion const cache = new Map(); @@ -67,19 +119,20 @@ export function getAudio(file: string, useCache = true): HTMLAudioElement { } export function setVolume(audio: HTMLAudioElement, volume: number): HTMLAudioElement { - const masterVolume = ColdDeviceStorage.get('sound_masterVolume'); + const masterVolume = soundConfigStore.state.sound_masterVolume; audio.volume = masterVolume - ((1 - volume) * masterVolume); return audio; } export function play(type: 'noteMy' | 'note' | 'antenna' | 'channel' | 'notification') { - const sound = ColdDeviceStorage.get(`sound_${type}`); + const sound = soundConfigStore.state[`sound_${type}`]; + if (_DEV_) console.log('play', type, sound); if (sound.type == null) return; playFile(sound.type, sound.volume); } export function playFile(file: string, volume: number) { - const masterVolume = ColdDeviceStorage.get('sound_masterVolume'); + const masterVolume = soundConfigStore.state.sound_masterVolume; if (masterVolume === 0) return; const audio = setVolume(getAudio(file), volume); -- cgit v1.2.3-freya From 81d2c5a4a7355af8a385893136e12e618a8b92d2 Mon Sep 17 00:00:00 2001 From: tamaina Date: Wed, 12 Apr 2023 10:58:56 +0900 Subject: enhance: カスタム絵文字関連の変更 (#9794) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * PackedNoteなどのemojisはプロキシしていないURLを返すように * MFMでx3/x4もしくはscale.x/yが2.5以上に指定されていた場合にはオリジナル品質の絵文字を使用する * update CHANGELOG.md * fix changelog * ?? * wip * fix * merge * Update packages/frontend/src/scripts/media-proxy.ts Co-authored-by: syuilo * merge * calc scale --------- Co-authored-by: syuilo --- CHANGELOG.md | 4 +- packages/backend/src/core/CustomEmojiService.ts | 11 +---- .../src/components/global/MkCustomEmoji.vue | 27 ++++++++--- packages/frontend/src/components/mfm.ts | 52 +++++++++++++--------- packages/frontend/src/scripts/media-proxy.ts | 4 +- 5 files changed, 58 insertions(+), 40 deletions(-) (limited to 'packages/frontend/src/scripts') diff --git a/CHANGELOG.md b/CHANGELOG.md index 2741b8f568..b1cd253a1c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,7 +15,9 @@ ## 13.x.x (unreleased) ### General -- +- カスタム絵文字関連の変更 + * ノートなどに含まれるemojis(populateEmojiの結果)は(プロキシされたURLではなく)オリジナルのURLを指すように + * MFMでx3/x4もしくはscale.x/yが2.5以上に指定されていた場合にはオリジナル品質の絵文字を使用するように ### Client - diff --git a/packages/backend/src/core/CustomEmojiService.ts b/packages/backend/src/core/CustomEmojiService.ts index 3de936dd65..416c3de5a8 100644 --- a/packages/backend/src/core/CustomEmojiService.ts +++ b/packages/backend/src/core/CustomEmojiService.ts @@ -267,16 +267,7 @@ export class CustomEmojiService { const emoji = await this.cache.fetch(`${name} ${host}`, queryOrNull); if (emoji == null) return null; - - const isLocal = emoji.host == null; - const emojiUrl = emoji.publicUrl || emoji.originalUrl; // || emoji.originalUrl してるのは後方互換性のため(publicUrlはstringなので??はだめ) - const url = isLocal - ? emojiUrl - : this.config.proxyRemoteFiles - ? `${this.config.mediaProxy}/emoji.webp?${query({ url: emojiUrl })}` - : emojiUrl; - - return url; + return emoji.publicUrl || emoji.originalUrl; // || emoji.originalUrl してるのは後方互換性のため(publicUrlはstringなので??はだめ) } /** diff --git a/packages/frontend/src/components/global/MkCustomEmoji.vue b/packages/frontend/src/components/global/MkCustomEmoji.vue index 84aae1cff8..0cb31ffcba 100644 --- a/packages/frontend/src/components/global/MkCustomEmoji.vue +++ b/packages/frontend/src/components/global/MkCustomEmoji.vue @@ -5,7 +5,7 @@