From 11204eeb43fd02ed48e1099e07f07ee419a7e671 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon, 1 Sep 2025 09:50:36 +0900 Subject: [PATCH 01/15] refactor --- packages/frontend/.storybook/fakes.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/frontend/.storybook/fakes.ts b/packages/frontend/.storybook/fakes.ts index 9cd8ac474c..ed29c63471 100644 --- a/packages/frontend/.storybook/fakes.ts +++ b/packages/frontend/.storybook/fakes.ts @@ -207,6 +207,7 @@ export function federationInstance(): entities.FederationInstance { isSuspended: false, suspensionState: 'none', isBlocked: false, + isMediaSilenced: false, softwareName: 'misskey', softwareVersion: '2024.5.0', openRegistrations: false, @@ -311,6 +312,8 @@ export function userDetailed(id = 'someuserid', username = 'miskist', host: enti alsoKnownAs: null, notify: 'none', memo: null, + canChat: true, + chatScope: 'everyone', }; } @@ -378,6 +381,7 @@ export function role(params: { asBadge: params.asBadge ?? true, canEditMembersByModerator: params.canEditMembersByModerator ?? false, usersCount: params.usersCount ?? 10, + preserveAssignmentOnMoveAccount: false, condFormula: { id: '', type: 'or', From 18e42cc83d929f3029d893fdae24916ed60fde56 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon, 1 Sep 2025 09:53:38 +0900 Subject: [PATCH 02/15] refactoe --- packages/frontend/src/pages/drop-and-fusion.vue | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/frontend/src/pages/drop-and-fusion.vue b/packages/frontend/src/pages/drop-and-fusion.vue index bc957ff38a..c1a8b992b7 100644 --- a/packages/frontend/src/pages/drop-and-fusion.vue +++ b/packages/frontend/src/pages/drop-and-fusion.vue @@ -48,8 +48,8 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ i18n.tsx.lastNDays({ n: 7 }) }} {{ i18n.ts.ranking }} ({{ gameMode.toUpperCase() }})
- - + + {{ r.score.toLocaleString() }} {{ getScoreUnit(gameMode) }}
@@ -87,6 +87,7 @@ SPDX-License-Identifier: AGPL-3.0-only diff --git a/packages/frontend/src/components/grid/MkDataCell.vue b/packages/frontend/src/components/grid/MkDataCell.vue index 0f326b14ca..6f1dae8398 100644 --- a/packages/frontend/src/components/grid/MkDataCell.vue +++ b/packages/frontend/src/components/grid/MkDataCell.vue @@ -48,6 +48,7 @@ SPDX-License-Identifier: AGPL-3.0-only
import('./index.timeline.vue')); const props = withDefaults(defineProps<{ user: Misskey.entities.UserDetailed; /** Test only; MkNotesTimeline currently causes problems in vitest */ - disableNotes: boolean; + disableNotes?: boolean; }>(), { disableNotes: false, }); From bdec4bf87a546efd07b7c0076d9205f690ce021f Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon, 1 Sep 2025 10:16:33 +0900 Subject: [PATCH 04/15] refactor --- packages/frontend/src/pages/user/activity.following.vue | 1 - packages/frontend/src/pages/user/activity.notes.vue | 1 - packages/frontend/src/pages/user/activity.pv.vue | 1 - packages/frontend/src/plugin.ts | 4 ++-- 4 files changed, 2 insertions(+), 5 deletions(-) diff --git a/packages/frontend/src/pages/user/activity.following.vue b/packages/frontend/src/pages/user/activity.following.vue index 882b45080e..d1cfa5356b 100644 --- a/packages/frontend/src/pages/user/activity.following.vue +++ b/packages/frontend/src/pages/user/activity.following.vue @@ -117,7 +117,6 @@ async function renderChart() { offset: true, stacked: true, time: { - stepSize: 1, unit: 'day', displayFormats: { day: 'M/d', diff --git a/packages/frontend/src/pages/user/activity.notes.vue b/packages/frontend/src/pages/user/activity.notes.vue index 39c9fd7950..1cf7a00716 100644 --- a/packages/frontend/src/pages/user/activity.notes.vue +++ b/packages/frontend/src/pages/user/activity.notes.vue @@ -116,7 +116,6 @@ async function renderChart() { offset: true, stacked: true, time: { - stepSize: 1, unit: 'day', displayFormats: { day: 'M/d', diff --git a/packages/frontend/src/pages/user/activity.pv.vue b/packages/frontend/src/pages/user/activity.pv.vue index 9e1b92058b..2539a6777b 100644 --- a/packages/frontend/src/pages/user/activity.pv.vue +++ b/packages/frontend/src/pages/user/activity.pv.vue @@ -117,7 +117,6 @@ async function renderChart() { offset: true, stacked: true, time: { - stepSize: 1, unit: 'day', displayFormats: { day: 'M/d', diff --git a/packages/frontend/src/plugin.ts b/packages/frontend/src/plugin.ts index 346e275575..657197d1b3 100644 --- a/packages/frontend/src/plugin.ts +++ b/packages/frontend/src/plugin.ts @@ -205,13 +205,13 @@ type HandlerDef = { handler: (note: Misskey.entities.Note) => void; }; note_view_interruptor: { - handler: (note: Misskey.entities.Note) => unknown; + handler: (note: Misskey.entities.Note) => Misskey.entities.Note; }; note_post_interruptor: { handler: (note: FIXME) => unknown; }; page_view_interruptor: { - handler: (page: Misskey.entities.Page) => unknown; + handler: (page: Misskey.entities.Page) => Misskey.entities.Page; }; }; From 08ecf7ca79812cb904d2861ec82a67260a6819bf Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon, 1 Sep 2025 10:19:14 +0900 Subject: [PATCH 05/15] refactor --- packages/frontend/src/pages/admin/security.vue | 2 +- packages/frontend/src/pages/channel-editor.vue | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/frontend/src/pages/admin/security.vue b/packages/frontend/src/pages/admin/security.vue index 27e35c7e69..fa93124daa 100644 --- a/packages/frontend/src/pages/admin/security.vue +++ b/packages/frontend/src/pages/admin/security.vue @@ -194,7 +194,7 @@ const sensitiveMediaDetectionForm = useForm({ state.sensitiveMediaDetectionSensitivity === 2 ? 'medium' : state.sensitiveMediaDetectionSensitivity === 3 ? 'high' : state.sensitiveMediaDetectionSensitivity === 4 ? 'veryHigh' : - 0, + null as never, setSensitiveFlagAutomatically: state.setSensitiveFlagAutomatically, enableSensitiveMediaDetectionForVideos: state.enableSensitiveMediaDetectionForVideos, }); diff --git a/packages/frontend/src/pages/channel-editor.vue b/packages/frontend/src/pages/channel-editor.vue index ce26a26109..251f5d557d 100644 --- a/packages/frontend/src/pages/channel-editor.vue +++ b/packages/frontend/src/pages/channel-editor.vue @@ -138,9 +138,10 @@ async function addPinnedNote() { const { canceled, result: value } = await os.inputText({ title: i18n.ts.noteIdOrUrl, }); - if (canceled) return; + if (canceled || value == null) return; + const fromUrl = value.includes('/') ? value.split('/').pop() : null; const note = await os.apiWithDialog('notes/show', { - noteId: value.includes('/') ? value.split('/').pop() : value, + noteId: fromUrl ?? value, }); pinnedNotes.value = [{ id: note.id, From d27c740ab02b635da6ec7bb2d76835525009489e Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon, 1 Sep 2025 12:31:27 +0900 Subject: [PATCH 06/15] refactor --- .../src/pages/admin/overview.active-users.vue | 7 +++++-- .../src/pages/admin/overview.ap-requests.vue | 15 ++++++++++----- .../src/pages/user/activity.following.vue | 4 +++- .../frontend/src/pages/user/activity.notes.vue | 4 +++- packages/frontend/src/pages/user/activity.pv.vue | 6 +++--- packages/frontend/src/utility/chart-legend.ts | 4 +++- 6 files changed, 27 insertions(+), 13 deletions(-) diff --git a/packages/frontend/src/pages/admin/overview.active-users.vue b/packages/frontend/src/pages/admin/overview.active-users.vue index f74356599b..6c85f11cb1 100644 --- a/packages/frontend/src/pages/admin/overview.active-users.vue +++ b/packages/frontend/src/pages/admin/overview.active-users.vue @@ -37,6 +37,8 @@ async function renderChart() { chartInstance.destroy(); } + if (chartEl.value == null) return; + const getDate = (ago: number) => { const y = now.getFullYear(); const m = now.getMonth(); @@ -105,7 +107,6 @@ async function renderChart() { type: 'time', offset: true, time: { - stepSize: 1, unit: 'day', displayFormats: { day: 'M/d', @@ -149,7 +150,9 @@ async function renderChart() { }, external: externalTooltipHandler, }, - gradient, + ...({ // TSを黙らすため + gradient, + }), }, }, plugins: [chartVLine(vLineColor)], diff --git a/packages/frontend/src/pages/admin/overview.ap-requests.vue b/packages/frontend/src/pages/admin/overview.ap-requests.vue index 96ea4749dc..75f544c5a9 100644 --- a/packages/frontend/src/pages/admin/overview.ap-requests.vue +++ b/packages/frontend/src/pages/admin/overview.ap-requests.vue @@ -42,6 +42,9 @@ const { handler: externalTooltipHandler } = useChartTooltip(); const { handler: externalTooltipHandler2 } = useChartTooltip(); onMounted(async () => { + if (chartEl.value == null) return; + if (chartEl2.value == null) return; + const now = isChromatic() ? new Date('2024-08-31T10:00:00Z') : new Date(); const getDate = (ago: number) => { @@ -122,7 +125,6 @@ onMounted(async () => { stacked: true, offset: false, time: { - stepSize: 1, unit: 'day', }, grid: { @@ -144,7 +146,7 @@ onMounted(async () => { ticks: { display: true, //mirror: true, - callback: (value, index, values) => value < 0 ? -value : value, + callback: (value, index, values) => (value as number) < 0 ? -value : value, }, }, }, @@ -173,7 +175,9 @@ onMounted(async () => { label: context => `${context.dataset.label}: ${Math.abs(context.parsed.y)}`, }, }, - gradient, + ...({ // TSを黙らすため + gradient, + }), }, }, plugins: [chartVLine(vLineColor)], @@ -213,7 +217,6 @@ onMounted(async () => { type: 'time', offset: false, time: { - stepSize: 1, unit: 'day', displayFormats: { day: 'M/d', @@ -260,7 +263,9 @@ onMounted(async () => { }, external: externalTooltipHandler2, }, - gradient, + ...({ // TSを黙らすため + gradient, + }), }, }, plugins: [chartVLine(vLineColor)], diff --git a/packages/frontend/src/pages/user/activity.following.vue b/packages/frontend/src/pages/user/activity.following.vue index d1cfa5356b..4310c7ad85 100644 --- a/packages/frontend/src/pages/user/activity.following.vue +++ b/packages/frontend/src/pages/user/activity.following.vue @@ -161,7 +161,9 @@ async function renderChart() { }, external: externalTooltipHandler, }, - gradient, + ...({ // TSを黙らすため + gradient, + }), }, }, plugins: [chartVLine(vLineColor), chartLegend(legendEl.value)], diff --git a/packages/frontend/src/pages/user/activity.notes.vue b/packages/frontend/src/pages/user/activity.notes.vue index 1cf7a00716..6d9c1bedd9 100644 --- a/packages/frontend/src/pages/user/activity.notes.vue +++ b/packages/frontend/src/pages/user/activity.notes.vue @@ -160,7 +160,9 @@ async function renderChart() { }, external: externalTooltipHandler, }, - gradient, + ...({ // TSを黙らすため + gradient, + }), }, }, plugins: [chartVLine(vLineColor), chartLegend(legendEl.value)], diff --git a/packages/frontend/src/pages/user/activity.pv.vue b/packages/frontend/src/pages/user/activity.pv.vue index 2539a6777b..76df53becd 100644 --- a/packages/frontend/src/pages/user/activity.pv.vue +++ b/packages/frontend/src/pages/user/activity.pv.vue @@ -154,8 +154,6 @@ async function renderChart() { display: true, text: 'Unique/Natural PV', padding: { - left: 0, - right: 0, top: 0, bottom: 12, }, @@ -171,7 +169,9 @@ async function renderChart() { }, external: externalTooltipHandler, }, - gradient, + ...({ // TSを黙らすため + gradient, + }), }, }, plugins: [chartVLine(vLineColor), chartLegend(legendEl.value)], diff --git a/packages/frontend/src/utility/chart-legend.ts b/packages/frontend/src/utility/chart-legend.ts index fcbddf5669..490d6c4497 100644 --- a/packages/frontend/src/utility/chart-legend.ts +++ b/packages/frontend/src/utility/chart-legend.ts @@ -6,9 +6,11 @@ import type { Plugin } from 'chart.js'; import MkChartLegend from '@/components/MkChartLegend.vue'; -export const chartLegend = (legend: InstanceType) => ({ +export const chartLegend = (legend: InstanceType | null | undefined) => ({ id: 'htmlLegend', afterUpdate(chart, args, options) { + if (legend == null) return; + // Reuse the built-in legendItems generator const items = chart.options.plugins!.legend!.labels!.generateLabels!(chart); From 782c9f9852a7bc0e44d5aba7f92d0ac9c02153d6 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon, 1 Sep 2025 12:33:44 +0900 Subject: [PATCH 07/15] refactor --- packages/frontend/src/components/MkInput.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/frontend/src/components/MkInput.vue b/packages/frontend/src/components/MkInput.vue index 955bf72a6b..7f052dff94 100644 --- a/packages/frontend/src/components/MkInput.vue +++ b/packages/frontend/src/components/MkInput.vue @@ -44,10 +44,10 @@ SPDX-License-Identifier: AGPL-3.0-only From 3c998e1f482c933aa22e597c79978bfe618845eb Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon, 1 Sep 2025 12:59:53 +0900 Subject: [PATCH 08/15] refactor --- .../frontend/src/components/MkChartTooltip.vue | 4 ++-- .../src/components/page/page.image.vue | 2 +- .../frontend/src/components/page/page.note.vue | 2 +- .../src/components/page/page.section.vue | 2 +- .../frontend/src/components/page/page.text.vue | 2 +- packages/frontend/src/instance.ts | 6 ++++++ packages/frontend/src/pages/admin/branding.vue | 15 ++++++++++----- .../src/pages/admin/email-settings.vue | 2 +- .../pages/admin/federation-job-queue.chart.vue | 16 ++++++++-------- .../frontend/src/pages/emoji-edit-dialog.vue | 2 +- .../src/pages/settings/2fa.qrdialog.vue | 4 ++-- .../frontend/src/pages/settings/statusbar.vue | 3 ++- packages/frontend/src/preferences/def.ts | 18 ++++++++++-------- 13 files changed, 46 insertions(+), 32 deletions(-) diff --git a/packages/frontend/src/components/MkChartTooltip.vue b/packages/frontend/src/components/MkChartTooltip.vue index 51081ede23..b9d2c8219a 100644 --- a/packages/frontend/src/components/MkChartTooltip.vue +++ b/packages/frontend/src/components/MkChartTooltip.vue @@ -25,12 +25,12 @@ defineProps<{ showing: boolean; x: number; y: number; - title?: string; + title?: string | null; series?: { backgroundColor: string; borderColor: string; text: string; - }[]; + }[] | null; }>(); const emit = defineEmits<{ diff --git a/packages/frontend/src/components/page/page.image.vue b/packages/frontend/src/components/page/page.image.vue index 69443ce7dd..7e8d8f7bfb 100644 --- a/packages/frontend/src/components/page/page.image.vue +++ b/packages/frontend/src/components/page/page.image.vue @@ -15,7 +15,7 @@ import * as Misskey from 'misskey-js'; import MkMediaList from '@/components/MkMediaList.vue'; const props = defineProps<{ - block: Misskey.entities.PageBlock, + block: Extract, page: Misskey.entities.Page, }>(); diff --git a/packages/frontend/src/components/page/page.note.vue b/packages/frontend/src/components/page/page.note.vue index df26874c17..bae05b9765 100644 --- a/packages/frontend/src/components/page/page.note.vue +++ b/packages/frontend/src/components/page/page.note.vue @@ -18,7 +18,7 @@ import MkNoteDetailed from '@/components/MkNoteDetailed.vue'; import { misskeyApi } from '@/utility/misskey-api.js'; const props = defineProps<{ - block: Misskey.entities.PageBlock, + block: Extract, page: Misskey.entities.Page, }>(); diff --git a/packages/frontend/src/components/page/page.section.vue b/packages/frontend/src/components/page/page.section.vue index e3d26d924f..05c12b3b83 100644 --- a/packages/frontend/src/components/page/page.section.vue +++ b/packages/frontend/src/components/page/page.section.vue @@ -29,7 +29,7 @@ import * as Misskey from 'misskey-js'; const XBlock = defineAsyncComponent(() => import('./page.block.vue')); defineProps<{ - block: Misskey.entities.PageBlock, + block: Extract, h: number, page: Misskey.entities.Page, }>(); diff --git a/packages/frontend/src/components/page/page.text.vue b/packages/frontend/src/components/page/page.text.vue index a00eb0b5ca..792f6529d8 100644 --- a/packages/frontend/src/components/page/page.text.vue +++ b/packages/frontend/src/components/page/page.text.vue @@ -22,7 +22,7 @@ import { isEnabledUrlPreview } from '@/utility/url-preview.js'; const MkUrlPreview = defineAsyncComponent(() => import('@/components/MkUrlPreview.vue')); const props = defineProps<{ - block: Misskey.entities.PageBlock, + block: Extract, page: Misskey.entities.Page, }>(); diff --git a/packages/frontend/src/instance.ts b/packages/frontend/src/instance.ts index a5397f0c0d..c9d83a4dbe 100644 --- a/packages/frontend/src/instance.ts +++ b/packages/frontend/src/instance.ts @@ -51,3 +51,9 @@ export async function fetchInstance(force = false): Promise(meta.clientOptions.entrancePageStyle ?? 'classic'); +// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition +const showTimelineForVisitor = ref(meta.clientOptions.showTimelineForVisitor ?? true); +// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition +const showActivitiesForVisitor = ref(meta.clientOptions.showActivitiesForVisitor ?? true); + const iconUrl = ref(meta.iconUrl); const app192IconUrl = ref(meta.app192IconUrl); const app512IconUrl = ref(meta.app512IconUrl); @@ -186,11 +191,11 @@ const manifestJsonOverride = ref(meta.manifestJsonOverride === '' ? '{}' : JSON. function save() { os.apiWithDialog('admin/update-meta', { - clientOptions: { + clientOptions: ({ entrancePageStyle: entrancePageStyle.value, showTimelineForVisitor: showTimelineForVisitor.value, showActivitiesForVisitor: showActivitiesForVisitor.value, - }, + } as ClientOptions) as any, iconUrl: iconUrl.value, app192IconUrl: app192IconUrl.value, app512IconUrl: app512IconUrl.value, diff --git a/packages/frontend/src/pages/admin/email-settings.vue b/packages/frontend/src/pages/admin/email-settings.vue index 8eb403f94c..340391a12f 100644 --- a/packages/frontend/src/pages/admin/email-settings.vue +++ b/packages/frontend/src/pages/admin/email-settings.vue @@ -107,7 +107,7 @@ const smtpPass = ref(meta.smtpPass); async function testEmail() { const { canceled, result: destination } = await os.inputText({ - title: i18n.ts.destination, + title: 'To', type: 'email', default: instance.maintainerEmail ?? '', placeholder: 'test@example.com', diff --git a/packages/frontend/src/pages/admin/federation-job-queue.chart.vue b/packages/frontend/src/pages/admin/federation-job-queue.chart.vue index b17eceadde..d449801985 100644 --- a/packages/frontend/src/pages/admin/federation-job-queue.chart.vue +++ b/packages/frontend/src/pages/admin/federation-job-queue.chart.vue @@ -81,10 +81,10 @@ function onStats(stats: Misskey.entities.QueueStats) { delayed.value = stats[props.domain].delayed; waiting.value = stats[props.domain].waiting; - chartProcess.value.pushData(stats[props.domain].activeSincePrevTick); - chartActive.value.pushData(stats[props.domain].active); - chartDelayed.value.pushData(stats[props.domain].delayed); - chartWaiting.value.pushData(stats[props.domain].waiting); + if (chartProcess.value != null) chartProcess.value.pushData(stats[props.domain].activeSincePrevTick); + if (chartActive.value != null) chartActive.value.pushData(stats[props.domain].active); + if (chartDelayed.value != null) chartDelayed.value.pushData(stats[props.domain].delayed); + if (chartWaiting.value != null) chartWaiting.value.pushData(stats[props.domain].waiting); } function onStatsLog(statsLog: Misskey.entities.QueueStatsLog) { @@ -100,10 +100,10 @@ function onStatsLog(statsLog: Misskey.entities.QueueStatsLog) { dataWaiting.push(stats[props.domain].waiting); } - chartProcess.value.setData(dataProcess); - chartActive.value.setData(dataActive); - chartDelayed.value.setData(dataDelayed); - chartWaiting.value.setData(dataWaiting); + if (chartProcess.value != null) chartProcess.value.setData(dataProcess); + if (chartActive.value != null) chartActive.value.setData(dataActive); + if (chartDelayed.value != null) chartDelayed.value.setData(dataDelayed); + if (chartWaiting.value != null) chartWaiting.value.setData(dataWaiting); } onMounted(() => { diff --git a/packages/frontend/src/pages/emoji-edit-dialog.vue b/packages/frontend/src/pages/emoji-edit-dialog.vue index 201ce003f0..033e3376a5 100644 --- a/packages/frontend/src/pages/emoji-edit-dialog.vue +++ b/packages/frontend/src/pages/emoji-edit-dialog.vue @@ -36,7 +36,7 @@ SPDX-License-Identifier: AGPL-3.0-only - + diff --git a/packages/frontend/src/pages/settings/2fa.qrdialog.vue b/packages/frontend/src/pages/settings/2fa.qrdialog.vue index 5bb125e67c..780040f699 100644 --- a/packages/frontend/src/pages/settings/2fa.qrdialog.vue +++ b/packages/frontend/src/pages/settings/2fa.qrdialog.vue @@ -135,7 +135,7 @@ const emit = defineEmits<{ const dialog = useTemplateRef('dialog'); const page = ref(0); -const token = ref(null); +const token = ref(null); const backupCodes = ref(); function cancel() { @@ -145,7 +145,7 @@ function cancel() { async function tokenDone() { if (token.value == null) return; const res = await os.apiWithDialog('i/2fa/done', { - token: typeof token.value === 'string' ? token.value : token.value.toString(), + token: token.value.toString(), // 実装ミスなどでnumberが入る可能性を払拭できないため念のためtoString }); backupCodes.value = res.backupCodes; diff --git a/packages/frontend/src/pages/settings/statusbar.vue b/packages/frontend/src/pages/settings/statusbar.vue index 2db9f7e6f9..1d0fadabd7 100644 --- a/packages/frontend/src/pages/settings/statusbar.vue +++ b/packages/frontend/src/pages/settings/statusbar.vue @@ -17,8 +17,8 @@ SPDX-License-Identifier: AGPL-3.0-only + + diff --git a/packages/frontend/src/pages/admin-file.vue b/packages/frontend/src/pages/admin-file.vue index 052829ffe2..63d3640f9c 100644 --- a/packages/frontend/src/pages/admin-file.vue +++ b/packages/frontend/src/pages/admin-file.vue @@ -4,197 +4,43 @@ SPDX-License-Identifier: AGPL-3.0-only --> - - From 959e72b2b34968d9b3188776cf2843a2f69bf8b2 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon, 1 Sep 2025 14:02:14 +0900 Subject: [PATCH 10/15] refactor --- packages/backend/src/core/RoleService.ts | 1 + packages/backend/src/models/Notification.ts | 1 + packages/frontend-shared/js/const.ts | 62 ------------------- .../components/MkNotificationSelectWindow.vue | 2 +- .../src/components/MkServerSetupWizard.vue | 1 - .../MkStreamingNotificationsTimeline.vue | 2 +- .../frontend/src/pages/admin/roles.editor.vue | 5 +- packages/frontend/src/pages/admin/roles.vue | 6 +- packages/frontend/src/pages/notifications.vue | 2 +- .../src/pages/settings/notifications.vue | 2 +- .../src/widgets/WidgetNotifications.vue | 2 +- packages/misskey-js/src/consts.ts | 62 ++++++++++++++++++- packages/misskey-js/src/index.ts | 1 + 13 files changed, 75 insertions(+), 74 deletions(-) diff --git a/packages/backend/src/core/RoleService.ts b/packages/backend/src/core/RoleService.ts index 3df7ee69ee..7dc07ef4dd 100644 --- a/packages/backend/src/core/RoleService.ts +++ b/packages/backend/src/core/RoleService.ts @@ -31,6 +31,7 @@ import { FanoutTimelineService } from '@/core/FanoutTimelineService.js'; import { NotificationService } from '@/core/NotificationService.js'; import type { OnApplicationShutdown, OnModuleInit } from '@nestjs/common'; +// misskey-js の rolePolicies と同期すべし export type RolePolicies = { gtlAvailable: boolean; ltlAvailable: boolean; diff --git a/packages/backend/src/models/Notification.ts b/packages/backend/src/models/Notification.ts index 5764a307b0..0b4eeb3455 100644 --- a/packages/backend/src/models/Notification.ts +++ b/packages/backend/src/models/Notification.ts @@ -10,6 +10,7 @@ import { MiAccessToken } from './AccessToken.js'; import { MiRole } from './Role.js'; import { MiDriveFile } from './DriveFile.js'; +// misskey-js の notificationTypes と同期すべし export type MiNotification = { type: 'note'; id: string; diff --git a/packages/frontend-shared/js/const.ts b/packages/frontend-shared/js/const.ts index b2d83fff8b..c8c437afe9 100644 --- a/packages/frontend-shared/js/const.ts +++ b/packages/frontend-shared/js/const.ts @@ -54,68 +54,6 @@ https://github.com/sindresorhus/file-type/blob/main/core.js https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Containers */ -export const notificationTypes = [ - 'note', - 'follow', - 'mention', - 'reply', - 'renote', - 'quote', - 'reaction', - 'pollEnded', - 'receiveFollowRequest', - 'followRequestAccepted', - 'roleAssigned', - 'chatRoomInvitationReceived', - 'achievementEarned', - 'exportCompleted', - 'login', - 'createToken', - 'test', - 'app', -] as const; -export const obsoleteNotificationTypes = ['pollVote', 'groupInvited'] as const; - -export const ROLE_POLICIES = [ - 'gtlAvailable', - 'ltlAvailable', - 'canPublicNote', - 'mentionLimit', - 'canInvite', - 'inviteLimit', - 'inviteLimitCycle', - 'inviteExpirationTime', - 'canManageCustomEmojis', - 'canManageAvatarDecorations', - 'canSearchNotes', - 'canSearchUsers', - 'canUseTranslator', - 'canHideAds', - 'driveCapacityMb', - 'maxFileSizeMb', - 'alwaysMarkNsfw', - 'canUpdateBioMedia', - 'pinLimit', - 'antennaLimit', - 'wordMuteLimit', - 'webhookLimit', - 'clipLimit', - 'noteEachClipsLimit', - 'userListLimit', - 'userEachUserListsLimit', - 'rateLimitFactor', - 'avatarDecorationLimit', - 'canImportAntennas', - 'canImportBlocking', - 'canImportFollowing', - 'canImportMuting', - 'canImportUserLists', - 'chatAvailability', - 'uploadableFileTypes', - 'noteDraftLimit', - 'watermarkAvailable', -] as const; - export const MFM_TAGS = ['tada', 'jelly', 'twitch', 'shake', 'spin', 'jump', 'bounce', 'flip', 'x2', 'x3', 'x4', 'scale', 'position', 'fg', 'bg', 'border', 'font', 'blur', 'rainbow', 'sparkle', 'rotate', 'ruby', 'unixtime']; export const MFM_PARAMS: Record = { tada: ['speed=', 'delay='], diff --git a/packages/frontend/src/components/MkNotificationSelectWindow.vue b/packages/frontend/src/components/MkNotificationSelectWindow.vue index bb01a008bd..7205e516d2 100644 --- a/packages/frontend/src/components/MkNotificationSelectWindow.vue +++ b/packages/frontend/src/components/MkNotificationSelectWindow.vue @@ -31,7 +31,7 @@ SPDX-License-Identifier: AGPL-3.0-only + + diff --git a/packages/frontend/src/pages/gallery/edit.vue b/packages/frontend/src/pages/gallery/edit.vue index 09bc6375ac..12d1a37390 100644 --- a/packages/frontend/src/pages/gallery/edit.vue +++ b/packages/frontend/src/pages/gallery/edit.vue @@ -4,161 +4,35 @@ SPDX-License-Identifier: AGPL-3.0-only --> - - From 2ccf4f94cb85f7732bc884792cdbc631c468a873 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon, 1 Sep 2025 16:51:58 +0900 Subject: [PATCH 15/15] refactor --- .../src/pages/page-editor/els/page-editor.el.section.vue | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/frontend/src/pages/page-editor/els/page-editor.el.section.vue b/packages/frontend/src/pages/page-editor/els/page-editor.el.section.vue index 11f83b6ec6..cf5712a8e5 100644 --- a/packages/frontend/src/pages/page-editor/els/page-editor.el.section.vue +++ b/packages/frontend/src/pages/page-editor/els/page-editor.el.section.vue @@ -24,8 +24,8 @@ SPDX-License-Identifier: AGPL-3.0-only import { defineAsyncComponent, inject, onMounted, watch, ref } from 'vue'; import * as Misskey from 'misskey-js'; -import { genId } from '@/utility/id.js'; import XContainer from '../page-editor.container.vue'; +import { genId } from '@/utility/id.js'; import * as os from '@/os.js'; import { i18n } from '@/i18n.js'; import { deepClone } from '@/utility/clone.js'; @@ -35,11 +35,11 @@ import { getPageBlockList } from '@/pages/page-editor/common.js'; const XBlocks = defineAsyncComponent(() => import('../page-editor.blocks.vue')); const props = defineProps<{ - modelValue: Misskey.entities.PageBlock & { type: 'section'; }, + modelValue: Extract, }>(); const emit = defineEmits<{ - (ev: 'update:modelValue', value: Misskey.entities.PageBlock & { type: 'section' }): void; + (ev: 'update:modelValue', value: Extract): void; (ev: 'remove'): void; }>(); @@ -59,7 +59,7 @@ async function rename() { title: i18n.ts._pages.enterSectionTitle, default: props.modelValue.title, }); - if (canceled) return; + if (canceled || title == null) return; emit('update:modelValue', { ...props.modelValue, title,