summaryrefslogtreecommitdiff
path: root/src/server/api
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-11-05 11:09:05 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-11-05 11:09:05 +0900
commitd7a3b710281f19746aaccaf23c07feb700503f39 (patch)
tree102229af5c4906d5071603f5e3311e04c2559e9c /src/server/api
parentRemove Travis (diff)
downloadsharkey-d7a3b710281f19746aaccaf23c07feb700503f39.tar.gz
sharkey-d7a3b710281f19746aaccaf23c07feb700503f39.tar.bz2
sharkey-d7a3b710281f19746aaccaf23c07feb700503f39.zip
投稿の最大文字数情報を設定ファイルではなくDBに保存するように
Diffstat (limited to 'src/server/api')
-rw-r--r--src/server/api/endpoints/admin/update-meta.ts11
-rw-r--r--src/server/api/endpoints/meta.ts2
-rw-r--r--src/server/api/endpoints/notes/create.ts16
3 files changed, 26 insertions, 3 deletions
diff --git a/src/server/api/endpoints/admin/update-meta.ts b/src/server/api/endpoints/admin/update-meta.ts
index 26ade439ab..a0f2b329aa 100644
--- a/src/server/api/endpoints/admin/update-meta.ts
+++ b/src/server/api/endpoints/admin/update-meta.ts
@@ -59,6 +59,13 @@ export const meta = {
'ja-JP': 'インスタンスの紹介文'
}
},
+
+ maxNoteTextLength: {
+ validator: $.num.optional.min(1),
+ desc: {
+ 'ja-JP': '投稿の最大文字数'
+ }
+ }
}
};
@@ -93,6 +100,10 @@ export default define(meta, (ps) => new Promise(async (res, rej) => {
set.description = ps.description;
}
+ if (ps.maxNoteTextLength) {
+ set.maxNoteTextLength = ps.maxNoteTextLength;
+ }
+
await Meta.update({}, {
$set: set
}, { upsert: true });
diff --git a/src/server/api/endpoints/meta.ts b/src/server/api/endpoints/meta.ts
index 34a62d6452..90a5952e9f 100644
--- a/src/server/api/endpoints/meta.ts
+++ b/src/server/api/endpoints/meta.ts
@@ -62,7 +62,7 @@ export default define(meta, (ps, me) => new Promise(async (res, rej) => {
swPublickey: config.sw ? config.sw.public_key : null,
hidedTags: (me && me.isAdmin) ? met.hidedTags : undefined,
bannerUrl: met.bannerUrl,
- maxNoteTextLength: config.maxNoteTextLength,
+ maxNoteTextLength: met.maxNoteTextLength || 1000,
emojis: emojis,
diff --git a/src/server/api/endpoints/notes/create.ts b/src/server/api/endpoints/notes/create.ts
index 8a8813daba..f4d7e96265 100644
--- a/src/server/api/endpoints/notes/create.ts
+++ b/src/server/api/endpoints/notes/create.ts
@@ -1,10 +1,20 @@
import $ from 'cafy'; import ID, { transform, transformMany } from '../../../../misc/cafy-id';
const ms = require('ms');
-import Note, { INote, isValidText, isValidCw, pack } from '../../../../models/note';
+import { length } from 'stringz';
+import Note, { INote, isValidCw, pack } from '../../../../models/note';
import User, { IUser } from '../../../../models/user';
import DriveFile, { IDriveFile } from '../../../../models/drive-file';
import create from '../../../../services/note/create';
import define from '../../define';
+import Meta from '../../../../models/meta';
+
+let maxNoteTextLength = 1000;
+
+setInterval(() => {
+ Meta.findOne({}).then(m => {
+ if (m.maxNoteTextLength) maxNoteTextLength = m.maxNoteTextLength;
+ });
+}, 3000);
export const meta = {
stability: 'stable',
@@ -40,7 +50,9 @@ export const meta = {
},
text: {
- validator: $.str.optional.nullable.pipe(isValidText),
+ validator: $.str.optional.nullable.pipe(text =>
+ length(text.trim()) <= maxNoteTextLength && text.trim() != ''
+ ),
default: null as any,
desc: {
'ja-JP': '投稿内容'