diff options
| author | Hazelnoot <acomputerdog@gmail.com> | 2025-04-01 20:47:04 -0400 |
|---|---|---|
| committer | Hazelnoot <acomputerdog@gmail.com> | 2025-04-01 20:47:04 -0400 |
| commit | 6ac37b4d6cae064545b13fd7fdb414d0cffa178b (patch) | |
| tree | 8e938baa2b15ccd233e91429d7f5ed7566ae3606 /packages/frontend/src/components | |
| parent | fix typo in check_connect.js (diff) | |
| download | sharkey-6ac37b4d6cae064545b13fd7fdb414d0cffa178b.tar.gz sharkey-6ac37b4d6cae064545b13fd7fdb414d0cffa178b.tar.bz2 sharkey-6ac37b4d6cae064545b13fd7fdb414d0cffa178b.zip | |
lint and type fixes
Diffstat (limited to 'packages/frontend/src/components')
17 files changed, 55 insertions, 54 deletions
diff --git a/packages/frontend/src/components/DynamicNote.vue b/packages/frontend/src/components/DynamicNote.vue index 6ce64d8352..e86fbf7374 100644 --- a/packages/frontend/src/components/DynamicNote.vue +++ b/packages/frontend/src/components/DynamicNote.vue @@ -17,7 +17,7 @@ SPDX-License-Identifier: AGPL-3.0-only <script setup lang="ts"> import * as Misskey from 'misskey-js'; -import { computed, defineAsyncComponent, shallowRef } from 'vue'; +import { computed, defineAsyncComponent, useTemplateRef } from 'vue'; import type { ComponentExposed } from 'vue-component-type-helpers'; import type MkNote from '@/components/MkNote.vue'; import type SkNote from '@/components/SkNote.vue'; @@ -31,7 +31,7 @@ const XNote = computed(() => ), ); -const rootEl = shallowRef<ComponentExposed<typeof MkNote | typeof SkNote>>(); +const rootEl = useTemplateRef<ComponentExposed<typeof MkNote | typeof SkNote>>('rootEl'); defineExpose({ rootEl }); diff --git a/packages/frontend/src/components/DynamicNoteDetailed.vue b/packages/frontend/src/components/DynamicNoteDetailed.vue index a6e8249f66..996137a7b0 100644 --- a/packages/frontend/src/components/DynamicNoteDetailed.vue +++ b/packages/frontend/src/components/DynamicNoteDetailed.vue @@ -14,7 +14,7 @@ SPDX-License-Identifier: AGPL-3.0-only <script setup lang="ts"> import * as Misskey from 'misskey-js'; -import { computed, defineAsyncComponent, shallowRef } from 'vue'; +import { computed, defineAsyncComponent, useTemplateRef } from 'vue'; import type { ComponentExposed } from 'vue-component-type-helpers'; import type MkNoteDetailed from '@/components/MkNoteDetailed.vue'; import type SkNoteDetailed from '@/components/SkNoteDetailed.vue'; @@ -28,7 +28,7 @@ const XNoteDetailed = computed(() => ), ); -const rootEl = shallowRef<ComponentExposed<typeof MkNoteDetailed | typeof SkNoteDetailed>>(); +const rootEl = useTemplateRef<ComponentExposed<typeof MkNoteDetailed | typeof SkNoteDetailed>>('rootEl'); defineExpose({ rootEl }); diff --git a/packages/frontend/src/components/DynamicNoteSimple.vue b/packages/frontend/src/components/DynamicNoteSimple.vue index a7713afad1..e9d31d04b7 100644 --- a/packages/frontend/src/components/DynamicNoteSimple.vue +++ b/packages/frontend/src/components/DynamicNoteSimple.vue @@ -15,7 +15,7 @@ SPDX-License-Identifier: AGPL-3.0-only <script setup lang="ts"> import * as Misskey from 'misskey-js'; -import { computed, defineAsyncComponent, shallowRef } from 'vue'; +import { computed, defineAsyncComponent, useTemplateRef } from 'vue'; import type { ComponentExposed } from 'vue-component-type-helpers'; import type MkNoteSimple from '@/components/MkNoteSimple.vue'; import type SkNoteSimple from '@/components/SkNoteSimple.vue'; @@ -29,7 +29,7 @@ const XNoteSimple = computed(() => ), ); -const rootEl = shallowRef<ComponentExposed<typeof MkNoteSimple | typeof SkNoteSimple>>(); +const rootEl = useTemplateRef<ComponentExposed<typeof MkNoteSimple | typeof SkNoteSimple>>('rootEl'); defineExpose({ rootEl }); diff --git a/packages/frontend/src/components/MkCaptcha.vue b/packages/frontend/src/components/MkCaptcha.vue index b7aceb3570..21f604aa43 100644 --- a/packages/frontend/src/components/MkCaptcha.vue +++ b/packages/frontend/src/components/MkCaptcha.vue @@ -98,6 +98,7 @@ const src = computed(() => { case 'fc': return 'https://cdn.jsdelivr.net/npm/friendly-challenge@0.9.18/widget.min.js'; case 'mcaptcha': return null; case 'testcaptcha': return null; + default: return null; } }); diff --git a/packages/frontend/src/components/MkImgWithBlurhash.vue b/packages/frontend/src/components/MkImgWithBlurhash.vue index b71cabd5ff..1282a8fedb 100644 --- a/packages/frontend/src/components/MkImgWithBlurhash.vue +++ b/packages/frontend/src/components/MkImgWithBlurhash.vue @@ -135,7 +135,9 @@ function waitForDecode() { .then(() => img.value?.decode()) .then(() => { loaded.value = true; - }); + }) + // Ignore decoding errors + .catch(() => {}); } else { loaded.value = false; } diff --git a/packages/frontend/src/components/MkNote.vue b/packages/frontend/src/components/MkNote.vue index 3550d3a07b..4f639e7566 100644 --- a/packages/frontend/src/components/MkNote.vue +++ b/packages/frontend/src/components/MkNote.vue @@ -805,8 +805,8 @@ function onContextmenu(ev: MouseEvent): void { ev.preventDefault(); react(); } else { - const { popupMenu, cleanup } = getNoteMenu({ note: note.value, translating, translation, isDeleted, currentClip: currentClip?.value }); - os.contextMenu(popupMenu, ev).then(focus).finally(cleanup); + const { menu, cleanup } = getNoteMenu({ note: note.value, translating, translation, isDeleted, currentClip: currentClip?.value }); + os.contextMenu(menu, ev).then(focus).finally(cleanup); } } @@ -815,8 +815,8 @@ function showMenu(): void { return; } - const { popupMenu, cleanup } = getNoteMenu({ note: note.value, translating, translation, isDeleted, currentClip: currentClip?.value }); - os.popupMenu(popupMenu, menuButton.value).then(focus).finally(cleanup); + const { menu, cleanup } = getNoteMenu({ note: note.value, translating, translation, isDeleted, currentClip: currentClip?.value }); + os.popupMenu(menu, menuButton.value).then(focus).finally(cleanup); } async function menuVersions(): Promise<void> { diff --git a/packages/frontend/src/components/MkNoteDetailed.vue b/packages/frontend/src/components/MkNoteDetailed.vue index a1ae156bbe..3f1e29a824 100644 --- a/packages/frontend/src/components/MkNoteDetailed.vue +++ b/packages/frontend/src/components/MkNoteDetailed.vue @@ -749,14 +749,14 @@ function onContextmenu(ev: MouseEvent): void { ev.preventDefault(); react(); } else { - const { popupMenu, cleanup } = getNoteMenu({ note: note.value, translating, translation, isDeleted }); - os.contextMenu(popupMenu, ev).then(focus).finally(cleanup); + const { menu, cleanup } = getNoteMenu({ note: note.value, translating, translation, isDeleted }); + os.contextMenu(menu, ev).then(focus).finally(cleanup); } } function showMenu(): void { - const { popupMenu, cleanup } = getNoteMenu({ note: note.value, translating, translation, isDeleted }); - os.popupMenu(popupMenu, menuButton.value).then(focus).finally(cleanup); + const { menu, cleanup } = getNoteMenu({ note: note.value, translating, translation, isDeleted }); + os.popupMenu(menu, menuButton.value).then(focus).finally(cleanup); } async function menuVersions(): Promise<void> { diff --git a/packages/frontend/src/components/MkNoteHeader.vue b/packages/frontend/src/components/MkNoteHeader.vue index 42b61b841a..8cfb7338e5 100644 --- a/packages/frontend/src/components/MkNoteHeader.vue +++ b/packages/frontend/src/components/MkNoteHeader.vue @@ -54,11 +54,9 @@ const props = defineProps<{ const menuVersionsButton = shallowRef<HTMLElement>(); -async function menuVersions(viaKeyboard = false): Promise<void> { - const { menu, cleanup } = await getNoteVersionsMenu({ note: props.note, menuVersionsButton }); - popupMenu(menu, menuVersionsButton.value, { - viaKeyboard, - }).then(focus).finally(cleanup); +async function menuVersions(): Promise<void> { + const { menu, cleanup } = await getNoteVersionsMenu({ note: props.note, menuButton: menuVersionsButton }); + popupMenu(menu, menuVersionsButton.value).then(focus).finally(cleanup); } const mock = inject(DI.mock, false); diff --git a/packages/frontend/src/components/MkNoteSimple.vue b/packages/frontend/src/components/MkNoteSimple.vue index 154efd7917..f946e6768d 100644 --- a/packages/frontend/src/components/MkNoteSimple.vue +++ b/packages/frontend/src/components/MkNoteSimple.vue @@ -46,7 +46,7 @@ const props = defineProps<{ hideFiles?: boolean; }>(); -let showContent = ref(prefer.s.uncollapseCW); +const showContent = ref(prefer.s.uncollapseCW); const isDeleted = ref(false); const mergedCW = computed(() => computeMergedCw(props.note)); diff --git a/packages/frontend/src/components/MkNoteSub.vue b/packages/frontend/src/components/MkNoteSub.vue index 0f334483b0..ebf30824a0 100644 --- a/packages/frontend/src/components/MkNoteSub.vue +++ b/packages/frontend/src/components/MkNoteSub.vue @@ -129,7 +129,7 @@ const props = withDefaults(defineProps<{ const canRenote = computed(() => ['public', 'home'].includes(props.note.visibility) || props.note.userId === $i?.id); const el = shallowRef<HTMLElement>(); -const muted = ref($i ? checkWordMute(props.note, $i, $i.mutedWords) : false); +const muted = computed(() => $i ? checkWordMute(props.note, $i, $i.mutedWords) : false); const translation = ref<any>(null); const translating = ref(false); const isDeleted = ref(false); @@ -142,7 +142,7 @@ const likeButton = shallowRef<HTMLElement>(); const renoteTooltip = computeRenoteTooltip(renoted); -let appearNote = computed(() => isRenote ? props.note.renote as Misskey.entities.Note : props.note); +const appearNote = computed(() => isRenote ? props.note.renote as Misskey.entities.Note : props.note); const defaultLike = computed(() => prefer.s.like ? prefer.s.like : null); const replies = ref<Misskey.entities.Note[]>([]); @@ -377,8 +377,8 @@ function quote() { } function menu(): void { - const { popupMenu, cleanup } = getNoteMenu({ note: props.note, translating, translation, isDeleted }); - os.popupMenu(popupMenu, menuButton.value).then(focus).finally(cleanup); + const { menu, cleanup } = getNoteMenu({ note: props.note, translating, translation, isDeleted }); + os.popupMenu(menu, menuButton.value).then(focus).finally(cleanup); } if (props.detail) { diff --git a/packages/frontend/src/components/MkNotification.vue b/packages/frontend/src/components/MkNotification.vue index ab3947adfb..d3e49255a7 100644 --- a/packages/frontend/src/components/MkNotification.vue +++ b/packages/frontend/src/components/MkNotification.vue @@ -219,9 +219,22 @@ const props = withDefaults(defineProps<{ full: false, }); -const userDetailed: Ref<UserDetailed | null> = ref(null); +type ExportCompletedNotification = Misskey.entities.Notification & { type: 'exportCompleted' }; + +const exportEntityName = { + antenna: i18n.ts.antennas, + blocking: i18n.ts.blockedUsers, + clip: i18n.ts.clips, + customEmoji: i18n.ts.customEmojis, + favorite: i18n.ts.favorites, + following: i18n.ts.following, + muting: i18n.ts.mutedUsers, + note: i18n.ts.notes, + userList: i18n.ts.lists, +} as const satisfies Record<ExportCompletedNotification['exportedEntity'], string>; const followRequestDone = ref(true); +const userDetailed: Ref<UserDetailed | null> = ref(null); // watch() is required because computed() doesn't support async. watch(props, async () => { @@ -241,20 +254,6 @@ watch(props, async () => { } }, { immediate: true }); -type ExportCompletedNotification = Misskey.entities.Notification & { type: 'exportCompleted' }; - -const exportEntityName = { - antenna: i18n.ts.antennas, - blocking: i18n.ts.blockedUsers, - clip: i18n.ts.clips, - customEmoji: i18n.ts.customEmojis, - favorite: i18n.ts.favorites, - following: i18n.ts.following, - muting: i18n.ts.mutedUsers, - note: i18n.ts.notes, - userList: i18n.ts.lists, -} as const satisfies Record<ExportCompletedNotification['exportedEntity'], string>; - const acceptFollowRequest = () => { if (!('user' in props.notification)) return; followRequestDone.value = true; diff --git a/packages/frontend/src/components/MkOmit.vue b/packages/frontend/src/components/MkOmit.vue index 7292b28f25..a6f2e1b4e9 100644 --- a/packages/frontend/src/components/MkOmit.vue +++ b/packages/frontend/src/components/MkOmit.vue @@ -62,7 +62,6 @@ onUnmounted(() => { left: 0; width: 100%; height: 64px; - //background: linear-gradient(0deg, var(--MI_THEME-panel), color(from var(--MI_THEME-panel) srgb r g b / 0)); > .fadeLabel { display: inline-block; diff --git a/packages/frontend/src/components/MkSubNoteContent.vue b/packages/frontend/src/components/MkSubNoteContent.vue index 256c84f9b6..8ac07c012a 100644 --- a/packages/frontend/src/components/MkSubNoteContent.vue +++ b/packages/frontend/src/components/MkSubNoteContent.vue @@ -110,7 +110,6 @@ watch(() => props.expandAllCws, (expandAllCws) => { left: 0; width: 100%; height: 64px; - // background: linear-gradient(0deg, var(--MI_THEME-panel), color(from var(--MI_THEME-panel) srgb r g b / 0)); > .fadeLabel { display: inline-block; diff --git a/packages/frontend/src/components/SkNote.vue b/packages/frontend/src/components/SkNote.vue index c146099e3e..0e3a908ce0 100644 --- a/packages/frontend/src/components/SkNote.vue +++ b/packages/frontend/src/components/SkNote.vue @@ -805,8 +805,8 @@ function onContextmenu(ev: MouseEvent): void { ev.preventDefault(); react(); } else { - const { popupMenu, cleanup } = getNoteMenu({ note: note.value, translating, translation, isDeleted, currentClip: currentClip?.value }); - os.contextMenu(popupMenu, ev).then(focus).finally(cleanup); + const { menu, cleanup } = getNoteMenu({ note: note.value, translating, translation, isDeleted, currentClip: currentClip?.value }); + os.contextMenu(menu, ev).then(focus).finally(cleanup); } } @@ -815,8 +815,8 @@ function showMenu(): void { return; } - const { popupMenu, cleanup } = getNoteMenu({ note: note.value, translating, translation, isDeleted, currentClip: currentClip?.value }); - os.popupMenu(popupMenu, menuButton.value).then(focus).finally(cleanup); + const { menu, cleanup } = getNoteMenu({ note: note.value, translating, translation, isDeleted, currentClip: currentClip?.value }); + os.popupMenu(menu, menuButton.value).then(focus).finally(cleanup); } async function menuVersions(): Promise<void> { diff --git a/packages/frontend/src/components/SkNoteDetailed.vue b/packages/frontend/src/components/SkNoteDetailed.vue index 3e49321a3a..0bd3a078c7 100644 --- a/packages/frontend/src/components/SkNoteDetailed.vue +++ b/packages/frontend/src/components/SkNoteDetailed.vue @@ -755,14 +755,14 @@ function onContextmenu(ev: MouseEvent): void { ev.preventDefault(); react(); } else { - const { popupMenu, cleanup } = getNoteMenu({ note: note.value, translating, translation, isDeleted }); - os.contextMenu(popupMenu, ev).then(focus).finally(cleanup); + const { menu, cleanup } = getNoteMenu({ note: note.value, translating, translation, isDeleted }); + os.contextMenu(menu, ev).then(focus).finally(cleanup); } } function showMenu(): void { - const { popupMenu, cleanup } = getNoteMenu({ note: note.value, translating, translation, isDeleted }); - os.popupMenu(popupMenu, menuButton.value).then(focus).finally(cleanup); + const { menu, cleanup } = getNoteMenu({ note: note.value, translating, translation, isDeleted }); + os.popupMenu(menu, menuButton.value).then(focus).finally(cleanup); } async function menuVersions(): Promise<void> { diff --git a/packages/frontend/src/components/SkNoteSub.vue b/packages/frontend/src/components/SkNoteSub.vue index 7995d28f71..c5c8336a4f 100644 --- a/packages/frontend/src/components/SkNoteSub.vue +++ b/packages/frontend/src/components/SkNoteSub.vue @@ -391,8 +391,8 @@ function quote() { } function menu(): void { - const { popupMenu, cleanup } = getNoteMenu({ note: props.note, translating, translation, isDeleted }); - os.popupMenu(popupMenu, menuButton.value).then(focus).finally(cleanup); + const { menu, cleanup } = getNoteMenu({ note: props.note, translating, translation, isDeleted }); + os.popupMenu(menu, menuButton.value).then(focus).finally(cleanup); } if (props.detail) { diff --git a/packages/frontend/src/components/page/page.text.vue b/packages/frontend/src/components/page/page.text.vue index d5c80aa5f8..ef3524fe7a 100644 --- a/packages/frontend/src/components/page/page.text.vue +++ b/packages/frontend/src/components/page/page.text.vue @@ -13,7 +13,7 @@ SPDX-License-Identifier: AGPL-3.0-only </template> <script lang="ts" setup> -import { defineAsyncComponent } from 'vue'; +import { defineAsyncComponent, computed } from 'vue'; import * as mfm from '@transfem-org/sfm-js'; import * as Misskey from 'misskey-js'; import { extractUrlFromMfm } from '@/utility/extract-url-from-mfm.js'; @@ -26,7 +26,10 @@ const props = defineProps<{ page: Misskey.entities.Page, }>(); -const urls = props.block.text ? extractUrlFromMfm(mfm.parse(props.block.text)) : []; +const urls = computed(() => { + if (!props.block.text) return []; + return extractUrlFromMfm(mfm.parse(props.block.text)); +}); </script> <style lang="scss" module> |