From 506c8a259becee338f4aabb2307a5c68e6891589 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Tue, 26 Aug 2025 08:50:34 +0900 Subject: refactor --- .../frontend/src/pages/settings/webhook.new.vue | 2 +- packages/frontend/src/pages/theme-editor.vue | 22 +++++++++++++--------- .../frontend/src/pages/user/activity.following.vue | 2 +- packages/frontend/src/pages/user/follow-list.vue | 2 +- packages/frontend/src/pages/user/home.vue | 10 +++++----- packages/frontend/src/pages/user/raw.vue | 2 +- packages/frontend/src/utility/admin-lookup.ts | 4 ++-- packages/frontend/src/utility/get-note-menu.ts | 4 ++-- 8 files changed, 26 insertions(+), 22 deletions(-) diff --git a/packages/frontend/src/pages/settings/webhook.new.vue b/packages/frontend/src/pages/settings/webhook.new.vue index e853f967cb..6c4dff5551 100644 --- a/packages/frontend/src/pages/settings/webhook.new.vue +++ b/packages/frontend/src/pages/settings/webhook.new.vue @@ -61,7 +61,7 @@ const event_reaction = ref(true); const event_mention = ref(true); async function create(): Promise { - const events = []; + const events: string[] = []; if (event_follow.value) events.push('follow'); if (event_followed.value) events.push('followed'); if (event_note.value) events.push('note'); diff --git a/packages/frontend/src/pages/theme-editor.vue b/packages/frontend/src/pages/theme-editor.vue index d1be9e38b7..af3891ac8e 100644 --- a/packages/frontend/src/pages/theme-editor.vue +++ b/packages/frontend/src/pages/theme-editor.vue @@ -11,12 +11,12 @@ SPDX-License-Identifier: AGPL-3.0-only
-
-
@@ -27,7 +27,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-
@@ -38,7 +38,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-
@@ -75,17 +75,17 @@ SPDX-License-Identifier: AGPL-3.0-only import { watch, ref, computed } from 'vue'; import { toUnicode } from 'punycode.js'; import tinycolor from 'tinycolor2'; -import { genId } from '@/utility/id.js'; import JSON5 from 'json5'; import lightTheme from '@@/themes/_light.json5'; import darkTheme from '@@/themes/_dark.json5'; import { host } from '@@/js/config.js'; import type { Theme } from '@/theme.js'; +import { genId } from '@/utility/id.js'; import MkButton from '@/components/MkButton.vue'; import MkCodeEditor from '@/components/MkCodeEditor.vue'; import MkTextarea from '@/components/MkTextarea.vue'; import MkFolder from '@/components/MkFolder.vue'; -import { $i } from '@/i.js'; +import { ensureSignin } from '@/i.js'; import { addTheme, applyTheme } from '@/theme.js'; import * as os from '@/os.js'; import { store } from '@/store.js'; @@ -94,6 +94,8 @@ import { useLeaveGuard } from '@/composables/use-leave-guard.js'; import { definePage } from '@/page.js'; import { prefer } from '@/preferences.js'; +const $i = ensureSignin(); + const bgColors = [ { color: '#f5f5f5', kind: 'light', forPreview: '#f5f5f5' }, { color: '#f0eee9', kind: 'light', forPreview: '#f3e2b9' }, @@ -123,12 +125,15 @@ const fgColors = [ { color: 'pink', forLight: '#84667d', forDark: '#e4d1e0', forPreview: '#b12390' }, ]; -const theme = ref>({ +const theme = ref({ + id: genId(), + name: 'untitled', + author: `@${$i.username}@${toUnicode(host)}`, base: 'light', props: lightTheme.props, }); const description = ref(null); -const themeCode = ref(null); +const themeCode = ref(''); const changed = ref(false); useLeaveGuard(changed); @@ -194,7 +199,6 @@ async function saveAs() { theme.value.id = genId(); theme.value.name = name; - theme.value.author = `@${$i.username}@${toUnicode(host)}`; if (description.value) theme.value.desc = description.value; await addTheme(theme.value); applyTheme(theme.value); diff --git a/packages/frontend/src/pages/user/activity.following.vue b/packages/frontend/src/pages/user/activity.following.vue index f2a5ad8e75..2cd825f3dc 100644 --- a/packages/frontend/src/pages/user/activity.following.vue +++ b/packages/frontend/src/pages/user/activity.following.vue @@ -36,7 +36,7 @@ const props = defineProps<{ const chartEl = useTemplateRef('chartEl'); const legendEl = useTemplateRef('legendEl'); const now = new Date(); -let chartInstance: Chart = null; +let chartInstance: Chart | null = null; const chartLimit = 30; const fetching = ref(true); diff --git a/packages/frontend/src/pages/user/follow-list.vue b/packages/frontend/src/pages/user/follow-list.vue index 6bb1360d42..c383b9b7bd 100644 --- a/packages/frontend/src/pages/user/follow-list.vue +++ b/packages/frontend/src/pages/user/follow-list.vue @@ -7,7 +7,7 @@ SPDX-License-Identifier: AGPL-3.0-only
- +
diff --git a/packages/frontend/src/pages/user/home.vue b/packages/frontend/src/pages/user/home.vue index ed3ae6a2aa..e10c44960a 100644 --- a/packages/frontend/src/pages/user/home.vue +++ b/packages/frontend/src/pages/user/home.vue @@ -25,8 +25,8 @@ SPDX-License-Identifier: AGPL-3.0-only
- - + + @@ -43,8 +43,8 @@ SPDX-License-Identifier: AGPL-3.0-only
- - + +
@@ -228,7 +228,7 @@ const bannerEl = ref(null); const memoTextareaEl = ref(null); const memoDraft = ref(props.user.memo); const isEditingMemo = ref(false); -const moderationNote = ref(props.user.moderationNote); +const moderationNote = ref(props.user.moderationNote ?? ''); const editModerationNote = ref(false); watch(moderationNote, async () => { diff --git a/packages/frontend/src/pages/user/raw.vue b/packages/frontend/src/pages/user/raw.vue index f0e675b913..145ef5dd92 100644 --- a/packages/frontend/src/pages/user/raw.vue +++ b/packages/frontend/src/pages/user/raw.vue @@ -48,7 +48,7 @@ import FormSection from '@/components/form/section.vue'; import MkObjectView from '@/components/MkObjectView.vue'; const props = defineProps<{ - user: Misskey.entities.User; + user: Misskey.entities.UserDetailed & { isModerator?: boolean; }; }>(); const moderator = computed(() => props.user.isModerator ?? false); diff --git a/packages/frontend/src/utility/admin-lookup.ts b/packages/frontend/src/utility/admin-lookup.ts index 7405e229fe..eccc88d8a9 100644 --- a/packages/frontend/src/utility/admin-lookup.ts +++ b/packages/frontend/src/utility/admin-lookup.ts @@ -12,7 +12,7 @@ export async function lookupUser() { const { canceled, result } = await os.inputText({ title: i18n.ts.usernameOrUserId, }); - if (canceled) return; + if (canceled || result == null) return; const show = (user) => { os.pageWindow(`/admin/user/${user.id}`); @@ -46,7 +46,7 @@ export async function lookupUserByEmail() { title: i18n.ts.emailAddress, type: 'email', }); - if (canceled) return; + if (canceled || result == null) return; try { const user = await os.apiWithDialog('admin/accounts/find-by-email', { email: result }); diff --git a/packages/frontend/src/utility/get-note-menu.ts b/packages/frontend/src/utility/get-note-menu.ts index 11c87dc653..f7b56040cc 100644 --- a/packages/frontend/src/utility/get-note-menu.ts +++ b/packages/frontend/src/utility/get-note-menu.ts @@ -179,7 +179,7 @@ export function getNoteMenu(props: { translating: Ref; currentClip?: Misskey.entities.Clip; }) { - const appearNote = getAppearNote(props.note); + const appearNote = getAppearNote(props.note) ?? props.note; const link = appearNote.url ?? appearNote.uri; const cleanups = [] as (() => void)[]; @@ -554,7 +554,7 @@ export function getRenoteMenu(props: { renoteButton: ShallowRef; mock?: boolean; }) { - const appearNote = getAppearNote(props.note); + const appearNote = getAppearNote(props.note) ?? props.note; const channelRenoteItems: MenuItem[] = []; const normalRenoteItems: MenuItem[] = []; -- cgit v1.2.3-freya