summaryrefslogtreecommitdiff
path: root/packages/frontend/src/components
diff options
context:
space:
mode:
authorHazelnoot <acomputerdog@gmail.com>2025-04-01 20:47:04 -0400
committerHazelnoot <acomputerdog@gmail.com>2025-04-01 20:47:04 -0400
commit6ac37b4d6cae064545b13fd7fdb414d0cffa178b (patch)
tree8e938baa2b15ccd233e91429d7f5ed7566ae3606 /packages/frontend/src/components
parentfix typo in check_connect.js (diff)
downloadsharkey-6ac37b4d6cae064545b13fd7fdb414d0cffa178b.tar.gz
sharkey-6ac37b4d6cae064545b13fd7fdb414d0cffa178b.tar.bz2
sharkey-6ac37b4d6cae064545b13fd7fdb414d0cffa178b.zip
lint and type fixes
Diffstat (limited to 'packages/frontend/src/components')
-rw-r--r--packages/frontend/src/components/DynamicNote.vue4
-rw-r--r--packages/frontend/src/components/DynamicNoteDetailed.vue4
-rw-r--r--packages/frontend/src/components/DynamicNoteSimple.vue4
-rw-r--r--packages/frontend/src/components/MkCaptcha.vue1
-rw-r--r--packages/frontend/src/components/MkImgWithBlurhash.vue4
-rw-r--r--packages/frontend/src/components/MkNote.vue8
-rw-r--r--packages/frontend/src/components/MkNoteDetailed.vue8
-rw-r--r--packages/frontend/src/components/MkNoteHeader.vue8
-rw-r--r--packages/frontend/src/components/MkNoteSimple.vue2
-rw-r--r--packages/frontend/src/components/MkNoteSub.vue8
-rw-r--r--packages/frontend/src/components/MkNotification.vue29
-rw-r--r--packages/frontend/src/components/MkOmit.vue1
-rw-r--r--packages/frontend/src/components/MkSubNoteContent.vue1
-rw-r--r--packages/frontend/src/components/SkNote.vue8
-rw-r--r--packages/frontend/src/components/SkNoteDetailed.vue8
-rw-r--r--packages/frontend/src/components/SkNoteSub.vue4
-rw-r--r--packages/frontend/src/components/page/page.text.vue7
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>