diff options
| author | Mar0xy <marie@kaifa.ch> | 2023-11-03 15:35:12 +0100 |
|---|---|---|
| committer | Mar0xy <marie@kaifa.ch> | 2023-11-03 15:35:12 +0100 |
| commit | 7c480424a60b9ebed52f5f928fb915af659110f0 (patch) | |
| tree | f88524c83bde2611ae5bc95bf66769ca83a000ee /packages/backend/src/server/api/endpoints/notes/edit.ts | |
| parent | Merge branch 'develop' of https://github.com/transfem-org/Sharkey into develop (diff) | |
| parent | Update CHANGELOG.md (diff) | |
| download | sharkey-7c480424a60b9ebed52f5f928fb915af659110f0.tar.gz sharkey-7c480424a60b9ebed52f5f928fb915af659110f0.tar.bz2 sharkey-7c480424a60b9ebed52f5f928fb915af659110f0.zip | |
merge: upstream
Diffstat (limited to 'packages/backend/src/server/api/endpoints/notes/edit.ts')
| -rw-r--r-- | packages/backend/src/server/api/endpoints/notes/edit.ts | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/packages/backend/src/server/api/endpoints/notes/edit.ts b/packages/backend/src/server/api/endpoints/notes/edit.ts index 07f04bba5a..6140c80a5d 100644 --- a/packages/backend/src/server/api/endpoints/notes/edit.ts +++ b/packages/backend/src/server/api/endpoints/notes/edit.ts @@ -117,6 +117,12 @@ export const meta = { code: "NOT_LOCAL_USER", id: "b907f407-2aa0-4283-800b-a2c56290b822", }, + + cannotRenoteOutsideOfChannel: { + message: 'Cannot renote outside of channel.', + code: 'CANNOT_RENOTE_OUTSIDE_OF_CHANNEL', + id: '33510210-8452-094c-6227-4a6c05d99f00', + }, }, } as const; @@ -134,7 +140,7 @@ export const paramDef = { }, }, text: { type: "string", maxLength: MAX_NOTE_TEXT_LENGTH, nullable: true }, - cw: { type: "string", nullable: true, maxLength: 250 }, + cw: { type: "string", nullable: true, minLength: 1, maxLength: 250 }, localOnly: { type: "boolean", default: false }, noExtractMentions: { type: "boolean", default: false }, noExtractHashtags: { type: "boolean", default: false }, @@ -281,6 +287,19 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint- throw new ApiError(meta.errors.youHaveBeenBlocked); } } + + if (renote.channelId && renote.channelId !== ps.channelId) { + // チャンネルのノートに対しリノート要求がきたとき、チャンネル外へのリノート可否をチェック + // リノートのユースケースのうち、チャンネル内→チャンネル外は少数だと考えられるため、JOINはせず必要な時に都度取得する + const renoteChannel = await this.channelsRepository.findOneById(renote.channelId); + if (renoteChannel == null) { + // リノートしたいノートが書き込まれているチャンネルが無い + throw new ApiError(meta.errors.noSuchChannel); + } else if (!renoteChannel.allowRenoteToExternal) { + // リノート作成のリクエストだが、対象チャンネルがリノート禁止だった場合 + throw new ApiError(meta.errors.cannotRenoteOutsideOfChannel); + } + } } let reply: MiNote | null = null; |