diff options
| author | Hazelnoot <acomputerdog@gmail.com> | 2024-10-07 23:20:14 +0000 |
|---|---|---|
| committer | Hazelnoot <acomputerdog@gmail.com> | 2024-10-07 23:20:14 +0000 |
| commit | a90b4d487a7dd7bbd689701cbd07ff77868a5c14 (patch) | |
| tree | 26a352f069257516b9c0421cd309071871e68488 /packages/backend/src | |
| parent | merge: Prevent deletion or suspension of system accounts (resolves #625) (!666) (diff) | |
| parent | remove numeric separators (diff) | |
| download | sharkey-a90b4d487a7dd7bbd689701cbd07ff77868a5c14.tar.gz sharkey-a90b4d487a7dd7bbd689701cbd07ff77868a5c14.tar.bz2 sharkey-a90b4d487a7dd7bbd689701cbd07ff77868a5c14.zip | |
merge: Increase character hard limits (resolves #686 and #696) (!647)
View MR for information: https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/647
Closes #686 and #696
Approved-by: Marie <github@yuugi.dev>
Approved-by: dakkar <dakkar@thenautilus.net>
Diffstat (limited to 'packages/backend/src')
| -rw-r--r-- | packages/backend/src/const.ts | 5 | ||||
| -rw-r--r-- | packages/backend/src/core/NoteCreateService.ts | 12 | ||||
| -rw-r--r-- | packages/backend/src/core/NoteEditService.ts | 12 | ||||
| -rw-r--r-- | packages/backend/src/models/DriveFile.ts | 3 | ||||
| -rw-r--r-- | packages/backend/src/models/Note.ts | 4 | ||||
| -rw-r--r-- | packages/backend/src/server/api/endpoints/notes/create.ts | 3 | ||||
| -rw-r--r-- | packages/backend/src/server/api/endpoints/notes/edit.ts | 4 |
7 files changed, 36 insertions, 7 deletions
diff --git a/packages/backend/src/const.ts b/packages/backend/src/const.ts index 02c27779ca..b8ad86497c 100644 --- a/packages/backend/src/const.ts +++ b/packages/backend/src/const.ts @@ -13,15 +13,16 @@ export const USER_ACTIVE_THRESHOLD = 1000 * 60 * 60 * 24 * 3; // 3days /** * Maximum note text length that can be stored in DB. + * Content Warnings are included in this limit. * Surrogate pairs count as one */ -export const DB_MAX_NOTE_TEXT_LENGTH = 8192; +export const DB_MAX_NOTE_TEXT_LENGTH = 100000; /** * Maximum image description length that can be stored in DB. * Surrogate pairs count as one */ -export const DB_MAX_IMAGE_COMMENT_LENGTH = 8192; +export const DB_MAX_IMAGE_COMMENT_LENGTH = 100000; //#endregion // ブラウザで直接表示することを許可するファイルの種類のリスト diff --git a/packages/backend/src/core/NoteCreateService.ts b/packages/backend/src/core/NoteCreateService.ts index daf0894cfd..ef0047ca90 100644 --- a/packages/backend/src/core/NoteCreateService.ts +++ b/packages/backend/src/core/NoteCreateService.ts @@ -351,6 +351,18 @@ export class NoteCreateService implements OnApplicationShutdown { data.text = null; } + if (data.cw) { + if (data.cw.length > DB_MAX_NOTE_TEXT_LENGTH) { + data.cw = data.cw.slice(0, DB_MAX_NOTE_TEXT_LENGTH); + } + data.cw = data.cw.trim(); + if (data.cw === '') { + data.cw = null; + } + } else { + data.cw = null; + } + let tags = data.apHashtags; let emojis = data.apEmojis; let mentionedUsers = data.apMentions; diff --git a/packages/backend/src/core/NoteEditService.ts b/packages/backend/src/core/NoteEditService.ts index f42d14b466..aecd37aeb9 100644 --- a/packages/backend/src/core/NoteEditService.ts +++ b/packages/backend/src/core/NoteEditService.ts @@ -371,6 +371,18 @@ export class NoteEditService implements OnApplicationShutdown { data.text = null; } + if (data.cw) { + if (data.cw.length > DB_MAX_NOTE_TEXT_LENGTH) { + data.cw = data.cw.slice(0, DB_MAX_NOTE_TEXT_LENGTH); + } + data.cw = data.cw.trim(); + if (data.cw === '') { + data.cw = null; + } + } else { + data.cw = null; + } + let tags = data.apHashtags; let emojis = data.apEmojis; let mentionedUsers = data.apMentions; diff --git a/packages/backend/src/models/DriveFile.ts b/packages/backend/src/models/DriveFile.ts index dd810681c5..7de4be4f96 100644 --- a/packages/backend/src/models/DriveFile.ts +++ b/packages/backend/src/models/DriveFile.ts @@ -4,6 +4,7 @@ */ import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm'; +import { DB_MAX_IMAGE_COMMENT_LENGTH } from '@/const.js'; import { id } from './util/id.js'; import { MiUser } from './User.js'; import { MiDriveFolder } from './DriveFolder.js'; @@ -61,7 +62,7 @@ export class MiDriveFile { public size: number; @Column('varchar', { - length: 8192, + length: DB_MAX_IMAGE_COMMENT_LENGTH, nullable: true, comment: 'The comment of the DriveFile.', }) diff --git a/packages/backend/src/models/Note.ts b/packages/backend/src/models/Note.ts index b11e2ec62b..408e023ff7 100644 --- a/packages/backend/src/models/Note.ts +++ b/packages/backend/src/models/Note.ts @@ -66,8 +66,8 @@ export class MiNote { }) public name: string | null; - @Column('varchar', { - length: 512, nullable: true, + @Column('text', { + nullable: true, }) public cw: string | null; diff --git a/packages/backend/src/server/api/endpoints/notes/create.ts b/packages/backend/src/server/api/endpoints/notes/create.ts index 626f03b758..a4c2e28129 100644 --- a/packages/backend/src/server/api/endpoints/notes/create.ts +++ b/packages/backend/src/server/api/endpoints/notes/create.ts @@ -252,7 +252,8 @@ 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)) { + const contentLength = (ps.text?.length ?? 0) + (ps.cw?.length ?? 0); + if (contentLength > this.config.maxNoteLength) { throw new ApiError(meta.errors.maxLength); } diff --git a/packages/backend/src/server/api/endpoints/notes/edit.ts b/packages/backend/src/server/api/endpoints/notes/edit.ts index 835cbc14fa..b9be145caf 100644 --- a/packages/backend/src/server/api/endpoints/notes/edit.ts +++ b/packages/backend/src/server/api/endpoints/notes/edit.ts @@ -297,9 +297,11 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint- private noteEditService: NoteEditService, ) { super(meta, paramDef, async (ps, me) => { - if (ps.text && (ps.text.length > this.config.maxNoteLength)) { + const contentLength = (ps.text?.length ?? 0) + (ps.cw?.length ?? 0); + if (contentLength > this.config.maxNoteLength) { throw new ApiError(meta.errors.maxLength); } + let visibleUsers: MiUser[] = []; if (ps.visibleUserIds) { visibleUsers = await this.usersRepository.findBy({ |