From 3e2441998107d37f9d0f683430c5dedd4c5cd0b5 Mon Sep 17 00:00:00 2001
From: syuilo <4439005+syuilo@users.noreply.github.com>
Date: Thu, 28 Aug 2025 11:15:17 +0900
Subject: [PATCH] refactor
---
packages/frontend/src/components/MkDrive.vue | 3 ++-
packages/frontend/src/components/MkLaunchPad.vue | 3 ++-
packages/frontend/src/components/form/suspense.vue | 2 +-
packages/frontend/src/pages/about.emojis.vue | 2 +-
packages/frontend/src/pages/channels.vue | 5 +++++
packages/frontend/src/pages/explore.users.vue | 13 ++++---------
.../frontend/src/pages/settings/notifications.vue | 6 +-----
packages/frontend/src/ui/_common_/navbar-h.vue | 6 +++++-
8 files changed, 21 insertions(+), 19 deletions(-)
diff --git a/packages/frontend/src/components/MkDrive.vue b/packages/frontend/src/components/MkDrive.vue
index 83169496ff..9f1364aec4 100644
--- a/packages/frontend/src/components/MkDrive.vue
+++ b/packages/frontend/src/components/MkDrive.vue
@@ -152,11 +152,12 @@ import { getDriveFileMenu } from '@/utility/get-drive-file-menu.js';
import { Paginator } from '@/utility/paginator.js';
const props = withDefaults(defineProps<{
- initialFolder?: Misskey.entities.DriveFolder['id'] | null;
+ initialFolder?: Misskey.entities.DriveFolder | Misskey.entities.DriveFolder['id'] | null;
type?: string;
multiple?: boolean;
select?: 'file' | 'folder' | null;
}>(), {
+ initialFolder: null,
multiple: false,
select: null,
});
diff --git a/packages/frontend/src/components/MkLaunchPad.vue b/packages/frontend/src/components/MkLaunchPad.vue
index 584afff55c..d8725ade0b 100644
--- a/packages/frontend/src/components/MkLaunchPad.vue
+++ b/packages/frontend/src/components/MkLaunchPad.vue
@@ -34,9 +34,10 @@ import { deviceKind } from '@/utility/device-kind.js';
import { prefer } from '@/preferences.js';
const props = withDefaults(defineProps<{
- anchorElement?: HTMLElement;
+ anchorElement?: HTMLElement | null;
anchor?: { x: string; y: string; };
}>(), {
+ anchorElement: null,
anchor: () => ({ x: 'right', y: 'center' }),
});
diff --git a/packages/frontend/src/components/form/suspense.vue b/packages/frontend/src/components/form/suspense.vue
index 821f07510b..3b23acf612 100644
--- a/packages/frontend/src/components/form/suspense.vue
+++ b/packages/frontend/src/components/form/suspense.vue
@@ -8,7 +8,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-
+
diff --git a/packages/frontend/src/pages/about.emojis.vue b/packages/frontend/src/pages/about.emojis.vue
index 43133bb573..7e514c5a73 100644
--- a/packages/frontend/src/pages/about.emojis.vue
+++ b/packages/frontend/src/pages/about.emojis.vue
@@ -48,7 +48,7 @@ import { $i } from '@/i.js';
const customEmojiTags = getCustomEmojiTags();
const q = ref('');
-const searchEmojis = ref(null);
+const searchEmojis = ref(null);
const selectedTags = ref(new Set());
function search() {
diff --git a/packages/frontend/src/pages/channels.vue b/packages/frontend/src/pages/channels.vue
index 324e0c573a..1e7301d06d 100644
--- a/packages/frontend/src/pages/channels.vue
+++ b/packages/frontend/src/pages/channels.vue
@@ -110,6 +110,11 @@ async function search() {
const type = searchType.value.toString().trim();
+ if (type !== 'nameAndDescription' && type !== 'nameOnly') {
+ console.error(`Unrecognized search type: ${type}`);
+ return;
+ }
+
channelPaginator.value = markRaw(new Paginator('channels/search', {
limit: 10,
params: {
diff --git a/packages/frontend/src/pages/explore.users.vue b/packages/frontend/src/pages/explore.users.vue
index 72f2a6813c..08f9f5e582 100644
--- a/packages/frontend/src/pages/explore.users.vue
+++ b/packages/frontend/src/pages/explore.users.vue
@@ -30,7 +30,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-
+
{{ i18n.ts.popularTags }}
@@ -39,7 +39,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-
+
{{ tag }}
@@ -78,22 +78,17 @@ const props = defineProps<{
}>();
const origin = ref('local');
-const tagsEl = useTemplateRef('tagsEl');
const tagsLocal = ref([]);
const tagsRemote = ref([]);
-watch(() => props.tag, () => {
- if (tagsEl.value) tagsEl.value.toggleContent(props.tag == null);
-});
-
-const tagUsersPaginator = markRaw(new Paginator('hashtags/users', {
+const tagUsersPaginator = props.tag != null ? markRaw(new Paginator('hashtags/users', {
limit: 30,
params: {
tag: props.tag,
origin: 'combined',
sort: '+follower',
},
-}));
+})) : null;
const pinnedUsersPaginator = markRaw(new Paginator('pinned-users', {
noPaging: true,
diff --git a/packages/frontend/src/pages/settings/notifications.vue b/packages/frontend/src/pages/settings/notifications.vue
index 2f2b57bdaf..84ecc23e84 100644
--- a/packages/frontend/src/pages/settings/notifications.vue
+++ b/packages/frontend/src/pages/settings/notifications.vue
@@ -55,11 +55,7 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ i18n.ts.sendPushNotificationReadMessage }}
-
-
- {{ i18n.ts._notification.emptyPushNotificationMessage }}
-
-
+ {{ i18n.ts.sendPushNotificationReadMessageCaption }}
diff --git a/packages/frontend/src/ui/_common_/navbar-h.vue b/packages/frontend/src/ui/_common_/navbar-h.vue
index 4f91078893..a78bdd52d1 100644
--- a/packages/frontend/src/ui/_common_/navbar-h.vue
+++ b/packages/frontend/src/ui/_common_/navbar-h.vue
@@ -57,6 +57,7 @@ import { i18n } from '@/i18n.js';
import { prefer } from '@/preferences.js';
import { openAccountMenu as openAccountMenu_ } from '@/accounts.js';
import { $i } from '@/i.js';
+import { getHTMLElementOrNull } from '@/utility/get-dom-node-or-null.js';
const WINDOW_THRESHOLD = 1400;
@@ -72,8 +73,11 @@ const otherNavItemIndicated = computed
(() => {
});
async function more(ev: MouseEvent) {
+ const target = getHTMLElementOrNull(ev.currentTarget ?? ev.target);
+ if (!target) return;
+
const { dispose } = await os.popupAsyncWithDialog(import('@/components/MkLaunchPad.vue').then(x => x.default), {
- anchorElement: ev.currentTarget ?? ev.target,
+ anchorElement: target,
anchor: { x: 'center', y: 'bottom' },
}, {
closed: () => dispose(),