diff options
| author | かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> | 2025-09-13 08:33:14 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-09-13 08:33:14 +0900 |
| commit | 5b4115e21a6822a434a9bfbbd53f22b3ca961239 (patch) | |
| tree | eaac22e870a95feccc47ccc2693b794d0ccd299f /packages/frontend/src/pages/settings | |
| parent | Update CHANGELOG.md (diff) | |
| download | misskey-5b4115e21a6822a434a9bfbbd53f22b3ca961239.tar.gz misskey-5b4115e21a6822a434a9bfbbd53f22b3ca961239.tar.bz2 misskey-5b4115e21a6822a434a9bfbbd53f22b3ca961239.zip | |
refactor(frontend): フロントエンドの型エラー解消(途中まで) (#16539)
* fix(frontend): FormLinkをボタンとして使用した際にエラーが出る問題を修正
* refactor(frontend): フロントエンドの型エラー解消
* remove unused ts-expect-error
* migrate
* remove unrelated changes
* fix lint
* more type fixes
Diffstat (limited to 'packages/frontend/src/pages/settings')
| -rw-r--r-- | packages/frontend/src/pages/settings/2fa.vue | 2 | ||||
| -rw-r--r-- | packages/frontend/src/pages/settings/privacy.vue | 64 | ||||
| -rw-r--r-- | packages/frontend/src/pages/settings/sounds.sound.vue | 14 | ||||
| -rw-r--r-- | packages/frontend/src/pages/settings/sounds.vue | 2 |
4 files changed, 52 insertions, 30 deletions
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 <template #label><SearchLabel>{{ i18n.ts._accountSettings.makeNotesFollowersOnlyBefore }}</SearchLabel></template> <div class="_gaps_s"> - <MkSelect :modelValue="makeNotesFollowersOnlyBefore_type" @update:modelValue="makeNotesFollowersOnlyBefore = $event === 'relative' ? -604800 : $event === 'absolute' ? Math.floor(Date.now() / 1000) : null"> + <MkSelect v-model="makeNotesFollowersOnlyBefore_type"> <option :value="null">{{ i18n.ts.none }}</option> <option value="relative">{{ i18n.ts._accountSettings.notesHavePassedSpecifiedPeriod }}</option> <option value="absolute">{{ i18n.ts._accountSettings.notesOlderThanSpecifiedDateAndTime }}</option> @@ -140,7 +140,7 @@ SPDX-License-Identifier: AGPL-3.0-only </MkInput> <MkInput - v-if="makeNotesFollowersOnlyBefore_type === 'absolute'" + v-if="makeNotesFollowersOnlyBefore_type === 'absolute' && makeNotesFollowersOnlyBefore != null" :modelValue="formatDateTimeString(new Date(makeNotesFollowersOnlyBefore * 1000), 'yyyy-MM-dd')" type="date" :manualSave="true" @@ -161,6 +161,7 @@ SPDX-License-Identifier: AGPL-3.0-only <div class="_gaps_s"> <MkSelect + v-model="makeNotesHiddenBefore_type" :items="[{ value: null, label: i18n.ts.none @@ -170,7 +171,7 @@ SPDX-License-Identifier: AGPL-3.0-only }, { value: 'absolute', label: i18n.ts._accountSettings.notesOlderThanSpecifiedDateAndTime - }] as const" :modelValue="makeNotesHiddenBefore_type" @update:modelValue="makeNotesHiddenBefore = $event === 'relative' ? -604800 : $event === 'absolute' ? Math.floor(Date.now() / 1000) : null" + }]" > </MkSelect> @@ -189,7 +190,7 @@ SPDX-License-Identifier: AGPL-3.0-only </MkInput> <MkInput - v-if="makeNotesHiddenBefore_type === 'absolute'" + v-if="makeNotesHiddenBefore_type === 'absolute' && makeNotesHiddenBefore != null" :modelValue="formatDateTimeString(new Date(makeNotesHiddenBefore * 1000), 'yyyy-MM-dd')" type="date" :manualSave="true" @@ -217,7 +218,6 @@ import { ref, computed, watch } from 'vue'; import MkSwitch from '@/components/MkSwitch.vue'; import MkSelect from '@/components/MkSelect.vue'; import FormSection from '@/components/form/section.vue'; -import MkFolder from '@/components/MkFolder.vue'; import { misskeyApi } from '@/utility/misskey-api.js'; import { i18n } from '@/i18n.js'; import { instance } from '@/instance.js'; @@ -247,14 +247,25 @@ const followingVisibility = ref($i.followingVisibility); const followersVisibility = ref($i.followersVisibility); const chatScope = ref($i.chatScope); -const makeNotesFollowersOnlyBefore_type = computed(() => { - 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<SoundType>(props.type); -const fileId = ref(props.fileId); -const fileUrl = ref(props.fileUrl); +const type = ref<SoundType>(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<string>(''); 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 <template #suffix>{{ getSoundTypeName(sounds[type].type) }}</template> <Suspense> <template #default> - <XSound :type="sounds[type].type" :volume="sounds[type].volume" :fileId="sounds[type].fileId" :fileUrl="sounds[type].fileUrl" @update="(res) => updated(type, res)"/> + <XSound :def="sounds[type]" @update="(res) => updated(type, res)"/> </template> <template #fallback> <MkLoading/> |