feat: ユーザースキーマの改善 (#12568)

* chore: notifyにenumを設定

* feat: securityKeysListの型を明確に

* feat: notificationRecieveConfigにpropertiesを定義

* chore: misskey.jsのmodelを更新

* fix: as constをつけ忘れている
This commit is contained in:
yupix 2023-12-04 16:53:31 +09:00 committed by GitHub
parent 18109fcef7
commit 33034b0e02
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 105 additions and 7 deletions

View file

@ -3,6 +3,18 @@
* SPDX-License-Identifier: AGPL-3.0-only * SPDX-License-Identifier: AGPL-3.0-only
*/ */
const notificationRecieveConfig = {
type: 'object',
nullable: false, optional: true,
properties: {
type: {
type: 'string',
nullable: false, optional: false,
enum: ['all', 'following', 'follower', 'mutualFollow', 'list', 'never'],
},
},
} as const;
export const packedUserLiteSchema = { export const packedUserLiteSchema = {
type: 'object', type: 'object',
properties: { properties: {
@ -398,6 +410,7 @@ export const packedUserDetailedNotMeOnlySchema = {
notify: { notify: {
type: 'string', type: 'string',
nullable: false, optional: true, nullable: false, optional: true,
enum: ['normal', 'none'],
}, },
withReplies: { withReplies: {
type: 'boolean', type: 'boolean',
@ -553,6 +566,19 @@ export const packedMeDetailedOnlySchema = {
notificationRecieveConfig: { notificationRecieveConfig: {
type: 'object', type: 'object',
nullable: false, optional: false, nullable: false, optional: false,
properties: {
app: notificationRecieveConfig,
quote: notificationRecieveConfig,
reply: notificationRecieveConfig,
follow: notificationRecieveConfig,
renote: notificationRecieveConfig,
mention: notificationRecieveConfig,
reaction: notificationRecieveConfig,
pollEnded: notificationRecieveConfig,
achievementEarned: notificationRecieveConfig,
receiveFollowRequest: notificationRecieveConfig,
followRequestAccepted: notificationRecieveConfig,
},
}, },
emailNotificationTypes: { emailNotificationTypes: {
type: 'array', type: 'array',
@ -697,6 +723,23 @@ export const packedMeDetailedOnlySchema = {
items: { items: {
type: 'object', type: 'object',
nullable: false, optional: false, nullable: false, optional: false,
properties: {
id: {
type: 'string',
nullable: false, optional: false,
format: 'id',
example: 'xxxxxxxxxx',
},
name: {
type: 'string',
nullable: false, optional: false,
},
lastUsed: {
type: 'string',
nullable: false, optional: false,
format: 'date-time',
},
},
}, },
}, },
//#endregion //#endregion

View file

@ -1,6 +1,6 @@
/* /*
* version: 2023.12.0-beta.1 * version: 2023.12.0-beta.1
* generatedAt: 2023-12-03T02:04:45.058Z * generatedAt: 2023-12-04T07:13:58.541Z
*/ */
import type { import type {

View file

@ -1,6 +1,6 @@
/* /*
* version: 2023.12.0-beta.1 * version: 2023.12.0-beta.1
* generatedAt: 2023-12-03T02:04:45.053Z * generatedAt: 2023-12-04T07:13:58.538Z
*/ */
import { operations } from './types.js'; import { operations } from './types.js';

View file

@ -1,6 +1,6 @@
/* /*
* version: 2023.12.0-beta.1 * version: 2023.12.0-beta.1
* generatedAt: 2023-12-03T02:04:45.051Z * generatedAt: 2023-12-04T07:13:58.535Z
*/ */
import { components } from './types.js'; import { components } from './types.js';

View file

@ -3,7 +3,7 @@
/* /*
* version: 2023.12.0-beta.1 * version: 2023.12.0-beta.1
* generatedAt: 2023-12-03T02:04:44.864Z * generatedAt: 2023-12-04T07:13:58.362Z
*/ */
/** /**
@ -3218,7 +3218,8 @@ export type components = {
isBlocked?: boolean; isBlocked?: boolean;
isMuted?: boolean; isMuted?: boolean;
isRenoteMuted?: boolean; isRenoteMuted?: boolean;
notify?: string; /** @enum {string} */
notify?: 'normal' | 'none';
withReplies?: boolean; withReplies?: boolean;
}; };
MeDetailedOnly: { MeDetailedOnly: {
@ -3253,7 +3254,52 @@ export type components = {
mutedWords: string[][]; mutedWords: string[][];
hardMutedWords: string[][]; hardMutedWords: string[][];
mutedInstances: string[] | null; mutedInstances: string[] | null;
notificationRecieveConfig: Record<string, never>; notificationRecieveConfig: {
app?: {
/** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'list' | 'never';
};
quote?: {
/** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'list' | 'never';
};
reply?: {
/** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'list' | 'never';
};
follow?: {
/** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'list' | 'never';
};
renote?: {
/** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'list' | 'never';
};
mention?: {
/** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'list' | 'never';
};
reaction?: {
/** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'list' | 'never';
};
pollEnded?: {
/** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'list' | 'never';
};
achievementEarned?: {
/** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'list' | 'never';
};
receiveFollowRequest?: {
/** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'list' | 'never';
};
followRequestAccepted?: {
/** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'list' | 'never';
};
};
emailNotificationTypes: string[]; emailNotificationTypes: string[];
achievements: { achievements: {
name: string; name: string;
@ -3287,7 +3333,16 @@ export type components = {
}; };
email?: string | null; email?: string | null;
emailVerified?: boolean | null; emailVerified?: boolean | null;
securityKeysList?: Record<string, never>[]; securityKeysList?: {
/**
* Format: id
* @example xxxxxxxxxx
*/
id: string;
name: string;
/** Format: date-time */
lastUsed: string;
}[];
}; };
UserDetailedNotMe: components['schemas']['UserLite'] & components['schemas']['UserDetailedNotMeOnly']; UserDetailedNotMe: components['schemas']['UserLite'] & components['schemas']['UserDetailedNotMeOnly'];
MeDetailed: components['schemas']['UserLite'] & components['schemas']['UserDetailedNotMeOnly'] & components['schemas']['MeDetailedOnly']; MeDetailed: components['schemas']['UserLite'] & components['schemas']['UserDetailedNotMeOnly'] & components['schemas']['MeDetailedOnly'];