summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/api/endpoints/notes/create.ts
diff options
context:
space:
mode:
authorMarie <marie@kaifa.ch>2023-12-31 18:22:02 +0100
committerMarie <marie@kaifa.ch>2023-12-31 18:22:02 +0100
commitb1c26201ca91140c7b28a768e829e185dc23f2d7 (patch)
tree901385faf2549de7b5baeb4cfa2a4b48e2f8c6c6 /packages/backend/src/server/api/endpoints/notes/create.ts
parentfix: /oauth/oauth to /oauth (diff)
downloadsharkey-b1c26201ca91140c7b28a768e829e185dc23f2d7.tar.gz
sharkey-b1c26201ca91140c7b28a768e829e185dc23f2d7.tar.bz2
sharkey-b1c26201ca91140c7b28a768e829e185dc23f2d7.zip
upd: Note Length customization
note length is now configurable through the config file Closes #281 falls back to 3000 (misskey default) if not used/included in config
Diffstat (limited to 'packages/backend/src/server/api/endpoints/notes/create.ts')
-rw-r--r--packages/backend/src/server/api/endpoints/notes/create.ts16
1 files changed, 14 insertions, 2 deletions
diff --git a/packages/backend/src/server/api/endpoints/notes/create.ts b/packages/backend/src/server/api/endpoints/notes/create.ts
index 27743dfffa..ac0a7f3b51 100644
--- a/packages/backend/src/server/api/endpoints/notes/create.ts
+++ b/packages/backend/src/server/api/endpoints/notes/create.ts
@@ -11,7 +11,7 @@ import type { UsersRepository, NotesRepository, BlockingsRepository, DriveFilesR
import type { MiDriveFile } from '@/models/DriveFile.js';
import type { MiNote } from '@/models/Note.js';
import type { MiChannel } from '@/models/Channel.js';
-import { MAX_NOTE_TEXT_LENGTH } from '@/const.js';
+import type { Config } from '@/config.js';
import { Endpoint } from '@/server/api/endpoint-base.js';
import { NoteEntityService } from '@/core/entities/NoteEntityService.js';
import { NoteCreateService } from '@/core/NoteCreateService.js';
@@ -82,6 +82,12 @@ export const meta = {
id: '3ac74a84-8fd5-4bb0-870f-01804f82ce15',
},
+ maxLength: {
+ message: 'You tried posting a note which is too long.',
+ code: 'MAX_LENGTH',
+ id: '3ac74a84-8fd5-4bb0-870f-01804f82ce16',
+ },
+
cannotCreateAlreadyExpiredPoll: {
message: 'Poll is already expired.',
code: 'CANNOT_CREATE_ALREADY_EXPIRED_POLL',
@@ -136,7 +142,6 @@ export const paramDef = {
text: {
type: 'string',
minLength: 1,
- maxLength: MAX_NOTE_TEXT_LENGTH,
nullable: true,
},
fileIds: {
@@ -184,6 +189,9 @@ export const paramDef = {
@Injectable()
export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-disable-line import/no-default-export
constructor(
+ @Inject(DI.config)
+ private config: Config,
+
@Inject(DI.usersRepository)
private usersRepository: UsersRepository,
@@ -203,6 +211,10 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
private noteCreateService: NoteCreateService,
) {
super(meta, paramDef, async (ps, me) => {
+ if (ps.text && (ps.text.length > this.config.maxNoteLength)) {
+ throw new ApiError(meta.errors.maxLength);
+ }
+
let visibleUsers: MiUser[] = [];
if (ps.visibleUserIds) {
visibleUsers = await this.usersRepository.findBy({