summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/api/endpoints/notes/edit.ts
diff options
context:
space:
mode:
authorMar0xy <marie@kaifa.ch>2023-11-03 15:35:12 +0100
committerMar0xy <marie@kaifa.ch>2023-11-03 15:35:12 +0100
commit7c480424a60b9ebed52f5f928fb915af659110f0 (patch)
treef88524c83bde2611ae5bc95bf66769ca83a000ee /packages/backend/src/server/api/endpoints/notes/edit.ts
parentMerge branch 'develop' of https://github.com/transfem-org/Sharkey into develop (diff)
parentUpdate CHANGELOG.md (diff)
downloadsharkey-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.ts21
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;