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
*/
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 = {
type: 'object',
properties: {
@ -398,6 +410,7 @@ export const packedUserDetailedNotMeOnlySchema = {
notify: {
type: 'string',
nullable: false, optional: true,
enum: ['normal', 'none'],
},
withReplies: {
type: 'boolean',
@ -553,6 +566,19 @@ export const packedMeDetailedOnlySchema = {
notificationRecieveConfig: {
type: 'object',
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: {
type: 'array',
@ -697,6 +723,23 @@ export const packedMeDetailedOnlySchema = {
items: {
type: 'object',
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

View file

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

View file

@ -1,6 +1,6 @@
/*
* 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';

View file

@ -1,6 +1,6 @@
/*
* 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';

View file

@ -3,7 +3,7 @@
/*
* 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;
isMuted?: boolean;
isRenoteMuted?: boolean;
notify?: string;
/** @enum {string} */
notify?: 'normal' | 'none';
withReplies?: boolean;
};
MeDetailedOnly: {
@ -3253,7 +3254,52 @@ export type components = {
mutedWords: string[][];
hardMutedWords: string[][];
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[];
achievements: {
name: string;
@ -3287,7 +3333,16 @@ export type components = {
};
email?: string | 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'];
MeDetailed: components['schemas']['UserLite'] & components['schemas']['UserDetailedNotMeOnly'] & components['schemas']['MeDetailedOnly'];