summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorかっこかり <67428053+kakkokari-gtyih@users.noreply.github.com>2026-03-05 19:24:30 +0900
committerGitHub <noreply@github.com>2026-03-05 19:24:30 +0900
commit3980b2ca55cdf6a694ef8cad911e161672c0444f (patch)
tree859c1a97202813247a0b59b43c8152e578eef8e9
parentNew Crowdin updates (#17097) (diff)
downloadmisskey-3980b2ca55cdf6a694ef8cad911e161672c0444f.tar.gz
misskey-3980b2ca55cdf6a694ef8cad911e161672c0444f.tar.bz2
misskey-3980b2ca55cdf6a694ef8cad911e161672c0444f.zip
fix: review fixes (#17208)
* fix: OAuthのContent-Typeを正しく判定するように * fix(frontend): fix outdated comments * fix: storagePersistenceのtop-level awaitを解消 * fix * fix(frontend): add comment Co-Authored-By: anatawa12 <anatawa12@icloud.com> * fix * fix: rename `users/get-following-users-by-birthday` * fix: fix types * Update MkForm.vue * refactor utility/storage.ts --------- Co-authored-by: anatawa12 <anatawa12@icloud.com> Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>
-rw-r--r--CHANGELOG.md2
-rw-r--r--packages/backend/src/server/api/endpoint-list.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/update-meta.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/users/following.ts4
-rw-r--r--packages/backend/src/server/api/endpoints/users/get-following-users-by-birthday.ts (renamed from packages/backend/src/server/api/endpoints/users/get-following-birthday-users.ts)2
-rw-r--r--packages/backend/src/server/oauth/OAuth2ProviderService.ts4
-rw-r--r--packages/frontend/src/components/MkDraggable.vue1
-rw-r--r--packages/frontend/src/components/MkForm.vue2
-rw-r--r--packages/frontend/src/pages/admin/RolesEditorFormula.vue2
-rw-r--r--packages/frontend/src/pages/page-editor/page-editor.blocks.vue2
-rw-r--r--packages/frontend/src/pages/settings/index.vue4
-rw-r--r--packages/frontend/src/pages/settings/other.vue4
-rw-r--r--packages/frontend/src/utility/storage.ts12
-rw-r--r--packages/frontend/src/widgets/WidgetBirthdayFollowings.user.vue2
-rw-r--r--packages/frontend/src/widgets/WidgetBirthdayFollowings.vue2
-rw-r--r--packages/misskey-js/etc/misskey-js.api.md8
-rw-r--r--packages/misskey-js/src/autogen/apiClientJSDoc.ts4
-rw-r--r--packages/misskey-js/src/autogen/endpoint.ts6
-rw-r--r--packages/misskey-js/src/autogen/entities.ts4
-rw-r--r--packages/misskey-js/src/autogen/types.ts12
20 files changed, 48 insertions, 33 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 24271d7fa0..520b202f59 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,7 +1,7 @@
## 2026.2.0
### Note
-- `users/following` の `birthday` プロパティは非推奨になりました。代わりに `users/get-following-birthday-users` をご利用ください。
+- `users/following` の `birthday` プロパティは非推奨になりました。代わりに `users/get-following-users-by-birthday` をご利用ください。
### General
- Enhance: 「もうすぐ誕生日のユーザー」ウィジェットで、誕生日が至近のユーザーも表示できるように
diff --git a/packages/backend/src/server/api/endpoint-list.ts b/packages/backend/src/server/api/endpoint-list.ts
index 9311c80eaa..6679005c3c 100644
--- a/packages/backend/src/server/api/endpoint-list.ts
+++ b/packages/backend/src/server/api/endpoint-list.ts
@@ -391,7 +391,7 @@ export * as 'users/featured-notes' from './endpoints/users/featured-notes.js';
export * as 'users/flashs' from './endpoints/users/flashs.js';
export * as 'users/followers' from './endpoints/users/followers.js';
export * as 'users/following' from './endpoints/users/following.js';
-export * as 'users/get-following-birthday-users' from './endpoints/users/get-following-birthday-users.js';
+export * as 'users/get-following-users-by-birthday' from './endpoints/users/get-following-users-by-birthday.js';
export * as 'users/gallery/posts' from './endpoints/users/gallery/posts.js';
export * as 'users/get-frequently-replied-users' from './endpoints/users/get-frequently-replied-users.js';
export * as 'users/lists/create' from './endpoints/users/lists/create.js';
diff --git a/packages/backend/src/server/api/endpoints/admin/update-meta.ts b/packages/backend/src/server/api/endpoints/admin/update-meta.ts
index 7a8dfc4555..372fe3a25f 100644
--- a/packages/backend/src/server/api/endpoints/admin/update-meta.ts
+++ b/packages/backend/src/server/api/endpoints/admin/update-meta.ts
@@ -341,7 +341,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
if (ps.clientOptions !== undefined) {
set.clientOptions = {
- ...serverSettings.clientOptions,
+ ...this.serverSettings.clientOptions,
...ps.clientOptions,
};
}
diff --git a/packages/backend/src/server/api/endpoints/users/following.ts b/packages/backend/src/server/api/endpoints/users/following.ts
index 3b3352858f..4defcc9dcf 100644
--- a/packages/backend/src/server/api/endpoints/users/following.ts
+++ b/packages/backend/src/server/api/endpoints/users/following.ts
@@ -86,7 +86,7 @@ export const paramDef = {
sinceDate: { type: 'integer' },
untilDate: { type: 'integer' },
limit: { type: 'integer', minimum: 1, maximum: 100, default: 10 },
- birthday: { ...birthdaySchema, nullable: true, description: '@deprecated use get-following-birthday-users instead.' },
+ birthday: { ...birthdaySchema, nullable: true, description: '@deprecated use get-following-users-by-birthday instead.' },
},
},
],
@@ -146,7 +146,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
.andWhere('following.followerId = :userId', { userId: user.id })
.innerJoinAndSelect('following.followee', 'followee');
- // @deprecated use get-following-birthday-users instead.
+ // @deprecated use get-following-users-by-birthday instead.
if (ps.birthday) {
query.innerJoin(this.userProfilesRepository.metadata.targetName, 'followeeProfile', 'followeeProfile.userId = following.followeeId');
diff --git a/packages/backend/src/server/api/endpoints/users/get-following-birthday-users.ts b/packages/backend/src/server/api/endpoints/users/get-following-users-by-birthday.ts
index 124114244e..947c19d81e 100644
--- a/packages/backend/src/server/api/endpoints/users/get-following-birthday-users.ts
+++ b/packages/backend/src/server/api/endpoints/users/get-following-users-by-birthday.ts
@@ -20,7 +20,7 @@ export const meta = {
requireCredential: true,
kind: 'read:account',
- description: 'Find users who have a birthday on the specified range.',
+ description: 'Retrieve users who have a birthday on the specified range.',
res: {
type: 'array',
diff --git a/packages/backend/src/server/oauth/OAuth2ProviderService.ts b/packages/backend/src/server/oauth/OAuth2ProviderService.ts
index 47f4bf947d..840c34b806 100644
--- a/packages/backend/src/server/oauth/OAuth2ProviderService.ts
+++ b/packages/backend/src/server/oauth/OAuth2ProviderService.ts
@@ -142,7 +142,9 @@ async function discoverClientInformation(logger: Logger, httpRequestService: Htt
redirectUris.push(...httpLinkHeader.parse(linkHeader).get('rel', 'redirect_uri').map(r => r.uri));
}
- if (res.headers.get('content-type')?.includes('application/json')) {
+ const contentType = res.headers.get('content-type');
+ const mediaType = contentType ? contentType.split(';')[0].trim() : null;
+ if (mediaType === 'application/json') {
// Client discovery via JSON document (11 July 2024 spec)
// https://indieauth.spec.indieweb.org/#client-metadata
// "Clients SHOULD have a JSON [RFC7159] document at their client_id URL containing
diff --git a/packages/frontend/src/components/MkDraggable.vue b/packages/frontend/src/components/MkDraggable.vue
index 07fa1045b9..6e2e038f87 100644
--- a/packages/frontend/src/components/MkDraggable.vue
+++ b/packages/frontend/src/components/MkDraggable.vue
@@ -109,6 +109,7 @@ function onDragstart(ev: DragEvent, item: T) {
// Chromeのバグで、Dragstartハンドラ内ですぐにDOMを変更する(=リアクティブなプロパティを変更する)とDragが終了してしまう
// SEE: https://stackoverflow.com/questions/19639969/html5-dragend-event-firing-immediately
+ // SEE: https://issues.chromium.org/issues/41150279
window.setTimeout(() => {
dragging.value = true;
}, 10);
diff --git a/packages/frontend/src/components/MkForm.vue b/packages/frontend/src/components/MkForm.vue
index 1ece0ad4c3..f2360e8cdd 100644
--- a/packages/frontend/src/components/MkForm.vue
+++ b/packages/frontend/src/components/MkForm.vue
@@ -4,7 +4,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
-<div v-if="Object.keys(form).filter(item => !form[item].hidden).length > 0" class="_gaps_m">
+<div v-if="Object.values(form).filter(item => typeof item.hidden !== 'boolean' || item.hidden === true).length > 0" class="_gaps_m">
<template v-for="v, k in form">
<template v-if="typeof v.hidden == 'function' ? v.hidden(values) : v.hidden"></template>
<MkInput v-else-if="v.type === 'number'" v-model="values[k]" type="number" :step="v.step || 1" :manualSave="v.manualSave" @savingStateChange="(changed, invalid) => onSavingStateChange(k, changed, invalid)">
diff --git a/packages/frontend/src/pages/admin/RolesEditorFormula.vue b/packages/frontend/src/pages/admin/RolesEditorFormula.vue
index 13f66662d0..384282262d 100644
--- a/packages/frontend/src/pages/admin/RolesEditorFormula.vue
+++ b/packages/frontend/src/pages/admin/RolesEditorFormula.vue
@@ -27,7 +27,7 @@ SPDX-License-Identifier: AGPL-3.0-only
>
<template #default="{ item, dragStart }">
<div :class="$style.item">
- <!-- divが無いとエラーになる https://github.com/SortableJS/vue.draggable.next/issues/189 -->
+ <!-- divが無いとエラーになる -->
<RolesEditorFormula
:modelValue="item"
:dragStartCallback="dragStart"
diff --git a/packages/frontend/src/pages/page-editor/page-editor.blocks.vue b/packages/frontend/src/pages/page-editor/page-editor.blocks.vue
index 891d29e1df..18f6c40013 100644
--- a/packages/frontend/src/pages/page-editor/page-editor.blocks.vue
+++ b/packages/frontend/src/pages/page-editor/page-editor.blocks.vue
@@ -14,7 +14,7 @@ SPDX-License-Identifier: AGPL-3.0-only
>
<template #default="{ item }">
<div>
- <!-- divが無いとエラーになる https://github.com/SortableJS/vue.draggable.next/issues/189 -->
+ <!-- divが無いとエラーになる -->
<component :is="getComponent(item.type) as any" :modelValue="item" @update:modelValue="updateItem" @remove="() => removeItem(item)"/>
</div>
</template>
diff --git a/packages/frontend/src/pages/settings/index.vue b/packages/frontend/src/pages/settings/index.vue
index f9529fa352..abfac37275 100644
--- a/packages/frontend/src/pages/settings/index.vue
+++ b/packages/frontend/src/pages/settings/index.vue
@@ -51,10 +51,12 @@ import { enableAutoBackup, getPreferencesProfileMenu } from '@/preferences/utili
import { store } from '@/store.js';
import { signout } from '@/signout.js';
import { genSearchIndexes } from '@/utility/inapp-search.js';
-import { enableStoragePersistence, storagePersisted, storagePersistenceSupported, skipStoragePersistence } from '@/utility/storage.js';
+import { enableStoragePersistence, getStoragePersistenceStatusRef, storagePersistenceSupported, skipStoragePersistence } from '@/utility/storage.js';
const searchIndex = await import('search-index:settings').then(({ searchIndexes }) => genSearchIndexes(searchIndexes));
+const storagePersisted = await getStoragePersistenceStatusRef();
+
const indexInfo = {
title: i18n.ts.settings,
icon: 'ti ti-settings',
diff --git a/packages/frontend/src/pages/settings/other.vue b/packages/frontend/src/pages/settings/other.vue
index 660647fff7..4facc696a4 100644
--- a/packages/frontend/src/pages/settings/other.vue
+++ b/packages/frontend/src/pages/settings/other.vue
@@ -165,7 +165,7 @@ import MkKeyValue from '@/components/MkKeyValue.vue';
import MkButton from '@/components/MkButton.vue';
import FormSlot from '@/components/form/slot.vue';
import * as os from '@/os.js';
-import { enableStoragePersistence, storagePersisted, storagePersistenceSupported } from '@/utility/storage.js';
+import { enableStoragePersistence, getStoragePersistenceStatusRef, storagePersistenceSupported } from '@/utility/storage.js';
import { ensureSignin } from '@/i.js';
import { i18n } from '@/i18n.js';
import { definePage } from '@/page.js';
@@ -180,6 +180,8 @@ import { cloudBackup } from '@/preferences/utility.js';
const $i = ensureSignin();
+const storagePersisted = await getStoragePersistenceStatusRef();
+
const reportError = prefer.model('reportError');
const enableCondensedLine = prefer.model('enableCondensedLine');
const skipNoteRender = prefer.model('skipNoteRender');
diff --git a/packages/frontend/src/utility/storage.ts b/packages/frontend/src/utility/storage.ts
index 86f4b8b3c3..42743f78ea 100644
--- a/packages/frontend/src/utility/storage.ts
+++ b/packages/frontend/src/utility/storage.ts
@@ -3,13 +3,21 @@
* SPDX-License-Identifier: AGPL-3.0-only
*/
-import { ref } from 'vue';
+import { readonly, ref } from 'vue';
import * as os from '@/os.js';
import { store } from '@/store.js';
import { i18n } from '@/i18n.js';
export const storagePersistenceSupported = window.isSecureContext && 'storage' in navigator;
-export const storagePersisted = ref(storagePersistenceSupported ? await navigator.storage.persisted() : false);
+const storagePersisted = ref(false);
+
+export async function getStoragePersistenceStatusRef() {
+ if (storagePersistenceSupported) {
+ storagePersisted.value = await navigator.storage.persisted().catch(() => false);
+ }
+
+ return readonly(storagePersisted);
+}
export async function enableStoragePersistence() {
if (!storagePersistenceSupported) return;
diff --git a/packages/frontend/src/widgets/WidgetBirthdayFollowings.user.vue b/packages/frontend/src/widgets/WidgetBirthdayFollowings.user.vue
index dc8ffcc818..2b714c2f6c 100644
--- a/packages/frontend/src/widgets/WidgetBirthdayFollowings.user.vue
+++ b/packages/frontend/src/widgets/WidgetBirthdayFollowings.user.vue
@@ -30,7 +30,7 @@ import { useLowresTime } from '@/composables/use-lowres-time.js';
import { userPage, acct } from '@/filters/user.js';
const props = defineProps<{
- item: Misskey.entities.UsersGetFollowingBirthdayUsersResponse[number];
+ item: Misskey.entities.UsersGetFollowingUsersByBirthdayResponse[number];
}>();
const now = useLowresTime();
diff --git a/packages/frontend/src/widgets/WidgetBirthdayFollowings.vue b/packages/frontend/src/widgets/WidgetBirthdayFollowings.vue
index ea577f3219..cf9c5a3d35 100644
--- a/packages/frontend/src/widgets/WidgetBirthdayFollowings.vue
+++ b/packages/frontend/src/widgets/WidgetBirthdayFollowings.vue
@@ -106,7 +106,7 @@ const end = computed(() => {
}
});
-const birthdayUsersPaginator = markRaw(new Paginator('users/get-following-birthday-users', {
+const birthdayUsersPaginator = markRaw(new Paginator('users/get-following-users-by-birthday', {
limit: 18,
offsetMode: true,
computedParams: computed(() => {
diff --git a/packages/misskey-js/etc/misskey-js.api.md b/packages/misskey-js/etc/misskey-js.api.md
index b84fdc7e31..760d5c319b 100644
--- a/packages/misskey-js/etc/misskey-js.api.md
+++ b/packages/misskey-js/etc/misskey-js.api.md
@@ -2128,8 +2128,8 @@ declare namespace entities {
UsersFollowingResponse,
UsersGalleryPostsRequest,
UsersGalleryPostsResponse,
- UsersGetFollowingBirthdayUsersRequest,
- UsersGetFollowingBirthdayUsersResponse,
+ UsersGetFollowingUsersByBirthdayRequest,
+ UsersGetFollowingUsersByBirthdayResponse,
UsersGetFrequentlyRepliedUsersRequest,
UsersGetFrequentlyRepliedUsersResponse,
UsersListsCreateRequest,
@@ -3741,10 +3741,10 @@ type UsersGalleryPostsRequest = operations['users___gallery___posts']['requestBo
type UsersGalleryPostsResponse = operations['users___gallery___posts']['responses']['200']['content']['application/json'];
// @public (undocumented)
-type UsersGetFollowingBirthdayUsersRequest = operations['users___get-following-birthday-users']['requestBody']['content']['application/json'];
+type UsersGetFollowingUsersByBirthdayRequest = operations['users___get-following-users-by-birthday']['requestBody']['content']['application/json'];
// @public (undocumented)
-type UsersGetFollowingBirthdayUsersResponse = operations['users___get-following-birthday-users']['responses']['200']['content']['application/json'];
+type UsersGetFollowingUsersByBirthdayResponse = operations['users___get-following-users-by-birthday']['responses']['200']['content']['application/json'];
// @public (undocumented)
type UsersGetFrequentlyRepliedUsersRequest = operations['users___get-frequently-replied-users']['requestBody']['content']['application/json'];
diff --git a/packages/misskey-js/src/autogen/apiClientJSDoc.ts b/packages/misskey-js/src/autogen/apiClientJSDoc.ts
index 91f7bb5b07..c9cb9147f1 100644
--- a/packages/misskey-js/src/autogen/apiClientJSDoc.ts
+++ b/packages/misskey-js/src/autogen/apiClientJSDoc.ts
@@ -4533,11 +4533,11 @@ declare module '../api.js' {
): Promise<SwitchCaseResponseType<E, P>>;
/**
- * Find users who have a birthday on the specified range.
+ * Retrieve users who have a birthday on the specified range.
*
* **Credential required**: *Yes* / **Permission**: *read:account*
*/
- request<E extends 'users/get-following-birthday-users', P extends Endpoints[E]['req']>(
+ request<E extends 'users/get-following-users-by-birthday', P extends Endpoints[E]['req']>(
endpoint: E,
params: P,
credential?: string | null,
diff --git a/packages/misskey-js/src/autogen/endpoint.ts b/packages/misskey-js/src/autogen/endpoint.ts
index 8dc3b26bd7..2d4e0fe35e 100644
--- a/packages/misskey-js/src/autogen/endpoint.ts
+++ b/packages/misskey-js/src/autogen/endpoint.ts
@@ -616,8 +616,8 @@ import type {
UsersFollowingResponse,
UsersGalleryPostsRequest,
UsersGalleryPostsResponse,
- UsersGetFollowingBirthdayUsersRequest,
- UsersGetFollowingBirthdayUsersResponse,
+ UsersGetFollowingUsersByBirthdayRequest,
+ UsersGetFollowingUsersByBirthdayResponse,
UsersGetFrequentlyRepliedUsersRequest,
UsersGetFrequentlyRepliedUsersResponse,
UsersListsCreateRequest,
@@ -1069,7 +1069,7 @@ export type Endpoints = {
'users/followers': { req: UsersFollowersRequest; res: UsersFollowersResponse };
'users/following': { req: UsersFollowingRequest; res: UsersFollowingResponse };
'users/gallery/posts': { req: UsersGalleryPostsRequest; res: UsersGalleryPostsResponse };
- 'users/get-following-birthday-users': { req: UsersGetFollowingBirthdayUsersRequest; res: UsersGetFollowingBirthdayUsersResponse };
+ 'users/get-following-users-by-birthday': { req: UsersGetFollowingUsersByBirthdayRequest; res: UsersGetFollowingUsersByBirthdayResponse };
'users/get-frequently-replied-users': { req: UsersGetFrequentlyRepliedUsersRequest; res: UsersGetFrequentlyRepliedUsersResponse };
'users/lists/create': { req: UsersListsCreateRequest; res: UsersListsCreateResponse };
'users/lists/create-from-public': { req: UsersListsCreateFromPublicRequest; res: UsersListsCreateFromPublicResponse };
diff --git a/packages/misskey-js/src/autogen/entities.ts b/packages/misskey-js/src/autogen/entities.ts
index e9bb080636..a49dd729e6 100644
--- a/packages/misskey-js/src/autogen/entities.ts
+++ b/packages/misskey-js/src/autogen/entities.ts
@@ -619,8 +619,8 @@ export type UsersFollowingRequest = operations['users___following']['requestBody
export type UsersFollowingResponse = operations['users___following']['responses']['200']['content']['application/json'];
export type UsersGalleryPostsRequest = operations['users___gallery___posts']['requestBody']['content']['application/json'];
export type UsersGalleryPostsResponse = operations['users___gallery___posts']['responses']['200']['content']['application/json'];
-export type UsersGetFollowingBirthdayUsersRequest = operations['users___get-following-birthday-users']['requestBody']['content']['application/json'];
-export type UsersGetFollowingBirthdayUsersResponse = operations['users___get-following-birthday-users']['responses']['200']['content']['application/json'];
+export type UsersGetFollowingUsersByBirthdayRequest = operations['users___get-following-users-by-birthday']['requestBody']['content']['application/json'];
+export type UsersGetFollowingUsersByBirthdayResponse = operations['users___get-following-users-by-birthday']['responses']['200']['content']['application/json'];
export type UsersGetFrequentlyRepliedUsersRequest = operations['users___get-frequently-replied-users']['requestBody']['content']['application/json'];
export type UsersGetFrequentlyRepliedUsersResponse = operations['users___get-frequently-replied-users']['responses']['200']['content']['application/json'];
export type UsersListsCreateRequest = operations['users___lists___create']['requestBody']['content']['application/json'];
diff --git a/packages/misskey-js/src/autogen/types.ts b/packages/misskey-js/src/autogen/types.ts
index 5b6da957f7..46d04ac2dc 100644
--- a/packages/misskey-js/src/autogen/types.ts
+++ b/packages/misskey-js/src/autogen/types.ts
@@ -3717,14 +3717,14 @@ export type paths = {
*/
post: operations['users___gallery___posts'];
};
- '/users/get-following-birthday-users': {
+ '/users/get-following-users-by-birthday': {
/**
- * users/get-following-birthday-users
- * @description Find users who have a birthday on the specified range.
+ * users/get-following-users-by-birthday
+ * @description Retrieve users who have a birthday on the specified range.
*
* **Credential required**: *Yes* / **Permission**: *read:account*
*/
- post: operations['users___get-following-birthday-users'];
+ post: operations['users___get-following-users-by-birthday'];
};
'/users/get-frequently-replied-users': {
/**
@@ -34882,7 +34882,7 @@ export interface operations {
untilDate?: number;
/** @default 10 */
limit?: number;
- /** @description @deprecated use get-following-birthday-users instead. */
+ /** @description @deprecated use get-following-users-by-birthday instead. */
birthday?: string | null;
};
};
@@ -35018,7 +35018,7 @@ export interface operations {
};
};
};
- 'users___get-following-birthday-users': {
+ 'users___get-following-users-by-birthday': {
requestBody: {
content: {
'application/json': {