summaryrefslogtreecommitdiff
path: root/src/server/api/endpoints/notes/create.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/api/endpoints/notes/create.ts')
-rw-r--r--src/server/api/endpoints/notes/create.ts36
1 files changed, 34 insertions, 2 deletions
diff --git a/src/server/api/endpoints/notes/create.ts b/src/server/api/endpoints/notes/create.ts
index 4f8d6a4f4f..ec84d64975 100644
--- a/src/server/api/endpoints/notes/create.ts
+++ b/src/server/api/endpoints/notes/create.ts
@@ -42,7 +42,7 @@ export const meta = {
},
visibleUserIds: {
- validator: $.arr($.type(ID)).optional.unique().min(1),
+ validator: $.arr($.type(ID)).optional.unique().min(0),
transform: transformMany,
desc: {
'ja-JP': '(投稿の公開範囲が specified の場合)投稿を閲覧できるユーザー'
@@ -82,6 +82,30 @@ export const meta = {
}
},
+ noExtractMentions: {
+ validator: $.bool.optional,
+ default: false,
+ desc: {
+ 'ja-JP': '本文からメンションを展開しないか否か。'
+ }
+ },
+
+ noExtractHashtags: {
+ validator: $.bool.optional,
+ default: false,
+ desc: {
+ 'ja-JP': '本文からハッシュタグを展開しないか否か。'
+ }
+ },
+
+ noExtractEmojis: {
+ validator: $.bool.optional,
+ default: false,
+ desc: {
+ 'ja-JP': '本文からカスタム絵文字を展開しないか否か。'
+ }
+ },
+
geo: {
validator: $.obj({
coordinates: $.arr().length(2)
@@ -219,10 +243,15 @@ export default define(meta, (ps, user, app) => new Promise(async (res, rej) => {
}
// テキストが無いかつ添付ファイルが無いかつRenoteも無いかつ投票も無かったらエラー
- if ((ps.text == null) && files === null && renote === null && ps.poll == null) {
+ if (!(ps.text || files.length || renote || ps.poll)) {
return rej('text, fileIds, renoteId or poll is required');
}
+ // 後方互換性のため
+ if (ps.visibility == 'private') {
+ ps.visibility = 'specified';
+ }
+
// 投稿を作成
create(user, {
createdAt: new Date(),
@@ -237,6 +266,9 @@ export default define(meta, (ps, user, app) => new Promise(async (res, rej) => {
localOnly: ps.localOnly,
visibility: ps.visibility,
visibleUsers,
+ apMentions: ps.noExtractMentions ? [] : undefined,
+ apHashtags: ps.noExtractHashtags ? [] : undefined,
+ apEmojis: ps.noExtractEmojis ? [] : undefined,
geo: ps.geo
})
.then(note => pack(note, user))