diff --git a/locales/en-US.yml b/locales/en-US.yml index 0eda8afbe..23fe4eff6 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -2837,5 +2837,3 @@ _selfXssPrevention: description3: "For more information, please check here: {link}" insertNewNotes: "Insert new notes at current position" insertNewNotesDescription: "Insert new notes at the current position while scrolling timeline." -defaultReactionEmoji: "Default reaction emoji" -defaultReactionEmojiDescription: "Set the emoji used for quick reaction button." diff --git a/packages/frontend/src/components/MkNote.vue b/packages/frontend/src/components/MkNote.vue index 1bf9c2c99..7b4a75109 100644 --- a/packages/frontend/src/components/MkNote.vue +++ b/packages/frontend/src/components/MkNote.vue @@ -500,34 +500,28 @@ function reply(): void { }); } -async function toggleReaction(reaction: string): Promise<void> { +function like(): void { + pleaseLogin(undefined, pleaseLoginContext.value); + showMovedDialog(); + sound.playMisskeySfx('reaction'); if (props.mock) { - if (appearNote.value.myReaction) { - emit('removeReaction', appearNote.value.myReaction); - } else { - emit('reaction', reaction); - } return; } - - if (appearNote.value.myReaction) { - await misskeyApi('notes/reactions/delete', { - noteId: appearNote.value.id, - }); - } else { - await misskeyApi('notes/reactions/create', { - noteId: appearNote.value.id, - reaction: reaction, + misskeyApi('notes/reactions/create', { + noteId: appearNote.value.id, + reaction: '❤️', + }); + const el = likeButton.value as HTMLElement | null | undefined; + if (el) { + const rect = el.getBoundingClientRect(); + const x = rect.left + (el.offsetWidth / 2); + const y = rect.top + (el.offsetHeight / 2); + const { dispose } = os.popup(MkRippleEffect, { x, y }, { + end: () => dispose(), }); } } -async function like() { - if (props.appearNote.myReaction) return; - const emoji = defaultStore.state.defaultReactionEmoji; - await toggleReaction(emoji); -} - function react(): void { pleaseLogin({ openOnRemote: pleaseLoginContext.value }); showMovedDialog(); diff --git a/packages/frontend/src/components/MkNoteDetailed.vue b/packages/frontend/src/components/MkNoteDetailed.vue index 35dfb184d..c377f2bd2 100644 --- a/packages/frontend/src/components/MkNoteDetailed.vue +++ b/packages/frontend/src/components/MkNoteDetailed.vue @@ -484,25 +484,28 @@ function reply(): void { }); } -async function toggleReaction(reaction: string): Promise<void> { - if (appearNote.value.myReaction) { - await misskeyApi('notes/reactions/delete', { - noteId: appearNote.value.id, - }); - } else { - await misskeyApi('notes/reactions/create', { - noteId: appearNote.value.id, - reaction: reaction, +function like(): void { + pleaseLogin(undefined, pleaseLoginContext.value); + showMovedDialog(); + sound.playMisskeySfx('reaction'); + if (props.mock) { + return; + } + misskeyApi('notes/reactions/create', { + noteId: appearNote.value.id, + reaction: '❤️', + }); + const el = likeButton.value as HTMLElement | null | undefined; + if (el) { + const rect = el.getBoundingClientRect(); + const x = rect.left + (el.offsetWidth / 2); + const y = rect.top + (el.offsetHeight / 2); + const { dispose } = os.popup(MkRippleEffect, { x, y }, { + end: () => dispose(), }); } } -async function like() { - if (props.appearNote.myReaction) return; - const emoji = defaultStore.state.defaultReactionEmoji; - await toggleReaction(emoji); -} - function react(): void { pleaseLogin({ openOnRemote: pleaseLoginContext.value }); showMovedDialog(); diff --git a/packages/frontend/src/pages/settings/pari.vue b/packages/frontend/src/pages/settings/pari.vue index e2181228f..dca8ce80f 100644 --- a/packages/frontend/src/pages/settings/pari.vue +++ b/packages/frontend/src/pages/settings/pari.vue @@ -69,10 +69,6 @@ SPDX-License-Identifier: AGPL-3.0-only <MkSwitch v-model="showDetailTimeWhenHover">{{ i18n.ts.showDetailTimeWhenHover }}</MkSwitch> <MkSwitch v-model="noteClickToOpen">{{ i18n.ts.noteClickToOpen }}</MkSwitch> <MkSwitch v-model="enableFallbackReactButton">{{ i18n.ts.enableFallbackReactButton }}</MkSwitch> - <MkButton @click="changeDefaultEmoji"> - <template #label>{{ i18n.ts.defaultReactionEmoji }}</template> - <template #suffix>{{ defaultReactionEmoji }}</template> - </MkButton> <MkSwitch v-model="enableMFMCheatsheet">{{ i18n.ts.enableMFMCheatsheet }}</MkSwitch> <MkSwitch v-model="enableUndoClearPostForm">{{ i18n.ts.enableUndoClearPostForm }}</MkSwitch> <MkSwitch v-model="collapseNotesRepliedTo">{{ i18n.ts.collapseNotesRepliedTo }}</MkSwitch> @@ -110,7 +106,6 @@ import MkInfo from '@/components/MkInfo.vue'; import MkRange from '@/components/MkRange.vue'; import MkButton from '@/components/MkButton.vue'; import FormSection from '@/components/form/section.vue'; -import * as os from '@/os.js'; const defaultFont = getDefaultFontSettings(); console.log(defaultFont); @@ -143,14 +138,6 @@ const collapsedUnexpectedLangs = computed(defaultStore.makeGetterSetter('collaps const emojiAutoSpacing = computed(defaultStore.makeGetterSetter('emojiAutoSpacing')); const insertNewNotes = computed(defaultStore.makeGetterSetter('insertNewNotes')); -const defaultReactionEmoji = computed(defaultStore.makeGetterSetter('defaultReactionEmoji')); - -async function changeDefaultEmoji() { - const { canceled, result: emoji } = await os.pickEmoji(); - if (canceled) return; - defaultReactionEmoji.value = emoji; -} - definePageMetadata(() => ({ title: 'Pari Plus!', icon: 'ti ti-plus', diff --git a/packages/frontend/src/store.ts b/packages/frontend/src/store.ts index 8141eb2b6..586bb1fa4 100644 --- a/packages/frontend/src/store.ts +++ b/packages/frontend/src/store.ts @@ -563,10 +563,6 @@ export const defaultStore = markRaw(new Storage('base', { where: 'device', default: false, }, - defaultReactionEmoji: { - where: 'device', - default: '♥', - }, })); // TODO: 他のタブと永続化されたstateを同期