Skip to content

Commit

Permalink
refactor: api/*/update系の必須キーを最低限に (#13824)
Browse files Browse the repository at this point in the history
* refactor: clips/updateの必須キーをclipIdのみに

* refactor: admin/roles/update の必須キーをroleIdのみに

* feat: pages/update の必須キーをpageIdのみに

* refactor: gallery/posts/update の必須キーをpostidのみに

* feat: misskey-jsの型を更新

* feat: i/webhooks/updateの必須キーをwebhookIdのみに

* feat: admin/ad/updateの必須キーをidのみに

* feat: misskey-jsの型を更新

* chore: update CHANGELOG.md

* docs: update CHANGELOG.md

* fix: secretが更新できなくなる場合がある

Co-authored-by: zyoshoka <[email protected]>

* Update packages/backend/src/server/api/endpoints/gallery/posts/update.ts

---------

Co-authored-by: zyoshoka <[email protected]>
Co-authored-by: syuilo <[email protected]>
  • Loading branch information
3 people authored Jun 22, 2024
1 parent ac12ab8 commit b50eb51
Show file tree
Hide file tree
Showing 8 changed files with 71 additions and 85 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,12 @@
- Feat: レートリミット制限に引っかかったときに`Retry-After`ヘッダーを返すように (#13949)
- Fix: ユーザーのフィードページのMFMをHTMLに展開するように (#14006)
- Fix: アンテナ・クリップ・リスト・ウェブフックがロールポリシーの上限より一つ多く作れてしまうのを修正 (#14036)
- Enhance: エンドポイント`clips/update`の必須項目を`clipId`のみに
- Enhance: エンドポイント`admin/roles/update`の必須項目を`roleId`のみに
- Enhance: エンドポイント`pages/update`の必須項目を`pageId`のみに
- Enhance: エンドポイント`gallery/posts/update`の必須項目を`postId`のみに
- Enhance: エンドポイント`i/webhook/update`の必須項目を`webhookId`のみに
- Enhance: エンドポイント`admin/ad/update`の必須項目を`id`のみに
- Fix: notRespondingSinceが実装される前に不通になったインスタンスが自動的に配信停止にならない (#14059)
- Fix: FTT有効時、タイムライン用エンドポイントで`sinceId`にキャッシュ内最古のものより古いものを指定した場合に正しく結果が返ってこない問題を修正

Expand Down
6 changes: 3 additions & 3 deletions packages/backend/src/server/api/endpoints/admin/ad/update.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ export const paramDef = {
startsAt: { type: 'integer' },
dayOfWeek: { type: 'integer' },
},
required: ['id', 'memo', 'url', 'imageUrl', 'place', 'priority', 'ratio', 'expiresAt', 'startsAt', 'dayOfWeek'],
required: ['id'],
} as const;

@Injectable()
Expand All @@ -63,8 +63,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
ratio: ps.ratio,
memo: ps.memo,
imageUrl: ps.imageUrl,
expiresAt: new Date(ps.expiresAt),
startsAt: new Date(ps.startsAt),
expiresAt: ps.expiresAt ? new Date(ps.expiresAt) : undefined,
startsAt: ps.startsAt ? new Date(ps.startsAt) : undefined,
dayOfWeek: ps.dayOfWeek,
});

Expand Down
14 changes: 0 additions & 14 deletions packages/backend/src/server/api/endpoints/admin/roles/update.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import { Inject, Injectable } from '@nestjs/common';
import { Endpoint } from '@/server/api/endpoint-base.js';
import type { RolesRepository } from '@/models/_.js';
import { GlobalEventService } from '@/core/GlobalEventService.js';
import { DI } from '@/di-symbols.js';
import { ApiError } from '@/server/api/error.js';
import { RoleService } from '@/core/RoleService.js';
Expand Down Expand Up @@ -50,19 +49,6 @@ export const paramDef = {
},
required: [
'roleId',
'name',
'description',
'color',
'iconUrl',
'target',
'condFormula',
'isPublic',
'isModerator',
'isAdministrator',
'asBadge',
'canEditMembersByModerator',
'displayOrder',
'policies',
],
} as const;

Expand Down
4 changes: 2 additions & 2 deletions packages/backend/src/server/api/endpoints/clips/update.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* SPDX-License-Identifier: AGPL-3.0-only
*/

import { Inject, Injectable } from '@nestjs/common';
import { Injectable } from '@nestjs/common';
import { Endpoint } from '@/server/api/endpoint-base.js';
import { ClipEntityService } from '@/core/entities/ClipEntityService.js';
import { ClipService } from '@/core/ClipService.js';
Expand Down Expand Up @@ -41,7 +41,7 @@ export const paramDef = {
isPublic: { type: 'boolean' },
description: { type: 'string', nullable: true, minLength: 1, maxLength: 2048 },
},
required: ['clipId', 'name'],
required: ['clipId'],
} as const;

@Injectable()
Expand Down
26 changes: 15 additions & 11 deletions packages/backend/src/server/api/endpoints/gallery/posts/update.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ export const paramDef = {
} },
isSensitive: { type: 'boolean', default: false },
},
required: ['postId', 'title', 'fileIds'],
required: ['postId'],
} as const;

@Injectable()
Expand All @@ -62,15 +62,19 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
private galleryPostEntityService: GalleryPostEntityService,
) {
super(meta, paramDef, async (ps, me) => {
const files = (await Promise.all(ps.fileIds.map(fileId =>
this.driveFilesRepository.findOneBy({
id: fileId,
userId: me.id,
}),
))).filter(x => x != null);

if (files.length === 0) {
throw new Error();
let files: Array<MiDriveFile> | undefined;

if (ps.fileIds) {
files = (await Promise.all(ps.fileIds.map(fileId =>
this.driveFilesRepository.findOneBy({
id: fileId,
userId: me.id,
}),
))).filter(x => x != null);

if (files.length === 0) {
throw new Error();
}
}

await this.galleryPostsRepository.update({
Expand All @@ -81,7 +85,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
title: ps.title,
description: ps.description,
isSensitive: ps.isSensitive,
fileIds: files.map(file => file.id),
fileIds: files ? files.map(file => file.id) : undefined,
});

const post = await this.galleryPostsRepository.findOneByOrFail({ id: ps.postId });
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,13 @@ export const paramDef = {
webhookId: { type: 'string', format: 'misskey:id' },
name: { type: 'string', minLength: 1, maxLength: 100 },
url: { type: 'string', minLength: 1, maxLength: 1024 },
secret: { type: 'string', maxLength: 1024, default: '' },
secret: { type: 'string', nullable: true, maxLength: 1024 },
on: { type: 'array', items: {
type: 'string', enum: webhookEventTypes,
} },
active: { type: 'boolean' },
},
required: ['webhookId', 'name', 'url', 'on', 'active'],
required: ['webhookId'],
} as const;

// TODO: ロジックをサービスに切り出す
Expand All @@ -66,7 +66,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
await this.webhooksRepository.update(webhook.id, {
name: ps.name,
url: ps.url,
secret: ps.secret,
secret: ps.secret === null ? '' : ps.secret,
on: ps.on,
active: ps.active,
});
Expand Down
23 changes: 7 additions & 16 deletions packages/backend/src/server/api/endpoints/pages/update.ts
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ export const paramDef = {
alignCenter: { type: 'boolean' },
hideTitleWhenPinned: { type: 'boolean' },
},
required: ['pageId', 'title', 'name', 'content', 'variables', 'script'],
required: ['pageId'],
} as const;

@Injectable()
Expand All @@ -91,9 +91,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
throw new ApiError(meta.errors.accessDenied);
}

let eyeCatchingImage = null;
if (ps.eyeCatchingImageId != null) {
eyeCatchingImage = await this.driveFilesRepository.findOneBy({
const eyeCatchingImage = await this.driveFilesRepository.findOneBy({
id: ps.eyeCatchingImageId,
userId: me.id,
});
Expand All @@ -116,23 +115,15 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
await this.pagesRepository.update(page.id, {
updatedAt: new Date(),
title: ps.title,
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
name: ps.name === undefined ? page.name : ps.name,
name: ps.name,
summary: ps.summary === undefined ? page.summary : ps.summary,
content: ps.content,
variables: ps.variables,
script: ps.script,
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
alignCenter: ps.alignCenter === undefined ? page.alignCenter : ps.alignCenter,
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
hideTitleWhenPinned: ps.hideTitleWhenPinned === undefined ? page.hideTitleWhenPinned : ps.hideTitleWhenPinned,
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
font: ps.font === undefined ? page.font : ps.font,
eyeCatchingImageId: ps.eyeCatchingImageId === null
? null
: ps.eyeCatchingImageId === undefined
? page.eyeCatchingImageId
: eyeCatchingImage!.id,
alignCenter: ps.alignCenter,
hideTitleWhenPinned: ps.hideTitleWhenPinned,
font: ps.font,
eyeCatchingImageId: ps.eyeCatchingImageId,
});
});
}
Expand Down
71 changes: 35 additions & 36 deletions packages/misskey-js/src/autogen/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5881,15 +5881,15 @@ export type operations = {
'application/json': {
/** Format: misskey:id */
id: string;
memo: string;
url: string;
imageUrl: string;
place: string;
priority: string;
ratio: number;
expiresAt: number;
startsAt: number;
dayOfWeek: number;
memo?: string;
url?: string;
imageUrl?: string;
place?: string;
priority?: string;
ratio?: number;
expiresAt?: number;
startsAt?: number;
dayOfWeek?: number;
};
};
};
Expand Down Expand Up @@ -9744,21 +9744,21 @@ export type operations = {
'application/json': {
/** Format: misskey:id */
roleId: string;
name: string;
description: string;
color: string | null;
iconUrl: string | null;
name?: string;
description?: string;
color?: string | null;
iconUrl?: string | null;
/** @enum {string} */
target: 'manual' | 'conditional';
condFormula: Record<string, never>;
isPublic: boolean;
isModerator: boolean;
isAdministrator: boolean;
target?: 'manual' | 'conditional';
condFormula?: Record<string, never>;
isPublic?: boolean;
isModerator?: boolean;
isAdministrator?: boolean;
isExplorable?: boolean;
asBadge: boolean;
canEditMembersByModerator: boolean;
displayOrder: number;
policies: Record<string, never>;
asBadge?: boolean;
canEditMembersByModerator?: boolean;
displayOrder?: number;
policies?: Record<string, never>;
};
};
};
Expand Down Expand Up @@ -13400,7 +13400,7 @@ export type operations = {
'application/json': {
/** Format: misskey:id */
clipId: string;
name: string;
name?: string;
isPublic?: boolean;
description?: string | null;
};
Expand Down Expand Up @@ -16247,9 +16247,9 @@ export type operations = {
'application/json': {
/** Format: misskey:id */
postId: string;
title: string;
title?: string;
description?: string | null;
fileIds: string[];
fileIds?: string[];
/** @default false */
isSensitive?: boolean;
};
Expand Down Expand Up @@ -20030,12 +20030,11 @@ export type operations = {
'application/json': {
/** Format: misskey:id */
webhookId: string;
name: string;
url: string;
/** @default */
secret?: string;
on: ('mention' | 'unfollow' | 'follow' | 'followed' | 'note' | 'reply' | 'renote' | 'reaction')[];
active: boolean;
name?: string;
url?: string;
secret?: string | null;
on?: ('mention' | 'unfollow' | 'follow' | 'followed' | 'note' | 'reply' | 'renote' | 'reaction')[];
active?: boolean;
};
};
};
Expand Down Expand Up @@ -23404,16 +23403,16 @@ export type operations = {
'application/json': {
/** Format: misskey:id */
pageId: string;
title: string;
name: string;
title?: string;
name?: string;
summary?: string | null;
content: {
content?: {
[key: string]: unknown;
}[];
variables: {
variables?: {
[key: string]: unknown;
}[];
script: string;
script?: string;
/** Format: misskey:id */
eyeCatchingImageId?: string | null;
/** @enum {string} */
Expand Down

0 comments on commit b50eb51

Please sign in to comment.