From 5b4115e21a6822a434a9bfbbd53f22b3ca961239 Mon Sep 17 00:00:00 2001
From: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com>
Date: Sat, 13 Sep 2025 08:33:14 +0900
Subject: refactor(frontend): フロントエンドの型エラー解消(途中まで) (#16539)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* fix(frontend): FormLinkをボタンとして使用した際にエラーが出る問題を修正
* refactor(frontend): フロントエンドの型エラー解消
* remove unused ts-expect-error
* migrate
* remove unrelated changes
* fix lint
* more type fixes
---
packages/frontend/src/pages/settings/2fa.vue | 2 +
packages/frontend/src/pages/settings/privacy.vue | 64 +++++++++++++++-------
.../frontend/src/pages/settings/sounds.sound.vue | 14 ++---
packages/frontend/src/pages/settings/sounds.vue | 2 +-
4 files changed, 52 insertions(+), 30 deletions(-)
(limited to 'packages/frontend/src/pages/settings')
diff --git a/packages/frontend/src/pages/settings/2fa.vue b/packages/frontend/src/pages/settings/2fa.vue
index ca404b43c4..2cc13744b1 100644
--- a/packages/frontend/src/pages/settings/2fa.vue
+++ b/packages/frontend/src/pages/settings/2fa.vue
@@ -196,6 +196,7 @@ async function addSecurityKey() {
if (auth.canceled) return;
const registrationOptions = parseCreationOptionsFromJSON({
+ // @ts-expect-error misskey-js側に型がない
publicKey: await os.apiWithDialog('i/2fa/register-key', {
password: auth.result.password,
token: auth.result.token,
@@ -226,6 +227,7 @@ async function addSecurityKey() {
password: auth.result.password,
token: auth.result.token,
name: name.result,
+ // @ts-expect-error misskey-js側に型がない
credential: credential.toJSON(),
});
}
diff --git a/packages/frontend/src/pages/settings/privacy.vue b/packages/frontend/src/pages/settings/privacy.vue
index 54a6c0af82..8ae8c79ebd 100644
--- a/packages/frontend/src/pages/settings/privacy.vue
+++ b/packages/frontend/src/pages/settings/privacy.vue
@@ -119,7 +119,7 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ i18n.ts._accountSettings.makeNotesFollowersOnlyBefore }}
-
+
@@ -140,7 +140,7 @@ SPDX-License-Identifier: AGPL-3.0-only
@@ -189,7 +190,7 @@ SPDX-License-Identifier: AGPL-3.0-only
{
- if (makeNotesFollowersOnlyBefore.value == null) {
- return null;
- } else if (makeNotesFollowersOnlyBefore.value >= 0) {
- return 'absolute';
- } else {
- return 'relative';
- }
+const makeNotesFollowersOnlyBefore_type = computed({
+ get: () => {
+ if (makeNotesFollowersOnlyBefore.value == null) {
+ return null;
+ } else if (makeNotesFollowersOnlyBefore.value >= 0) {
+ return 'absolute';
+ } else {
+ return 'relative';
+ }
+ },
+ set(value) {
+ if (value === 'relative') {
+ makeNotesFollowersOnlyBefore.value = -604800;
+ } else if (value === 'absolute') {
+ makeNotesFollowersOnlyBefore.value = Math.floor(Date.now() / 1000);
+ } else {
+ makeNotesFollowersOnlyBefore.value = null;
+ }
+ },
});
const makeNotesFollowersOnlyBefore_presets = [
@@ -288,14 +299,25 @@ const makeNotesFollowersOnlyBefore_customMonths = computed({
},
});
-const makeNotesHiddenBefore_type = computed(() => {
- if (makeNotesHiddenBefore.value == null) {
- return null;
- } else if (makeNotesHiddenBefore.value >= 0) {
- return 'absolute';
- } else {
- return 'relative';
- }
+const makeNotesHiddenBefore_type = computed({
+ get: () => {
+ if (makeNotesHiddenBefore.value == null) {
+ return null;
+ } else if (makeNotesHiddenBefore.value >= 0) {
+ return 'absolute';
+ } else {
+ return 'relative';
+ }
+ },
+ set(value) {
+ if (value === 'relative') {
+ makeNotesHiddenBefore.value = -604800;
+ } else if (value === 'absolute') {
+ makeNotesHiddenBefore.value = Math.floor(Date.now() / 1000);
+ } else {
+ makeNotesHiddenBefore.value = null;
+ }
+ },
});
const makeNotesHiddenBefore_presets = [
diff --git a/packages/frontend/src/pages/settings/sounds.sound.vue b/packages/frontend/src/pages/settings/sounds.sound.vue
index 7aad43b1d0..9e9671487e 100644
--- a/packages/frontend/src/pages/settings/sounds.sound.vue
+++ b/packages/frontend/src/pages/settings/sounds.sound.vue
@@ -41,25 +41,23 @@ import * as os from '@/os.js';
import { misskeyApi } from '@/utility/misskey-api.js';
import { playMisskeySfxFile, soundsTypes, getSoundDuration } from '@/utility/sound.js';
import { selectFile } from '@/utility/drive.js';
+import type { SoundStore } from '@/preferences/def.js';
const props = defineProps<{
- type: SoundType;
- fileId?: string;
- fileUrl?: string;
- volume: number;
+ def: SoundStore;
}>();
const emit = defineEmits<{
(ev: 'update', result: { type: SoundType; fileId?: string; fileUrl?: string; volume: number; }): void;
}>();
-const type = ref(props.type);
-const fileId = ref(props.fileId);
-const fileUrl = ref(props.fileUrl);
+const type = ref(props.def.type);
+const fileId = ref('fileId' in props.def ? props.def.fileId : undefined);
+const fileUrl = ref('fileUrl' in props.def ? props.def.fileUrl : undefined);
const fileName = ref('');
const driveFileError = ref(false);
const hasChanged = ref(false);
-const volume = ref(props.volume);
+const volume = ref(props.def.volume);
if (type.value === '_driveFile_' && fileId.value) {
await misskeyApi('drive/files/show', {
diff --git a/packages/frontend/src/pages/settings/sounds.vue b/packages/frontend/src/pages/settings/sounds.vue
index ea5b347525..1b851825d6 100644
--- a/packages/frontend/src/pages/settings/sounds.vue
+++ b/packages/frontend/src/pages/settings/sounds.vue
@@ -42,7 +42,7 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ getSoundTypeName(sounds[type].type) }}
- updated(type, res)"/>
+ updated(type, res)"/>
--
cgit v1.2.3-freya