summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/api
diff options
context:
space:
mode:
authormisskey-release-bot[bot] <157398866+misskey-release-bot[bot]@users.noreply.github.com>2025-11-28 10:04:09 +0000
committerGitHub <noreply@github.com>2025-11-28 10:04:09 +0000
commit994fc062cf3c60559d5730e9897f6c47b296f254 (patch)
treece75fcbd2f55ffbd9a83e81af6117fd94eb24321 /packages/backend/src/server/api
parentMerge pull request #16759 from misskey-dev/develop (diff)
parentRelease: 2025.11.1 (diff)
downloadmisskey-994fc062cf3c60559d5730e9897f6c47b296f254.tar.gz
misskey-994fc062cf3c60559d5730e9897f6c47b296f254.tar.bz2
misskey-994fc062cf3c60559d5730e9897f6c47b296f254.zip
Merge pull request #16840 from misskey-dev/develop
Release: 2025.11.1
Diffstat (limited to 'packages/backend/src/server/api')
-rw-r--r--packages/backend/src/server/api/endpoints/i/update.ts16
-rw-r--r--packages/backend/src/server/api/endpoints/notes/drafts/create.ts16
-rw-r--r--packages/backend/src/server/api/endpoints/notes/drafts/update.ts16
-rw-r--r--packages/backend/src/server/api/endpoints/notes/translate.ts2
-rw-r--r--packages/backend/src/server/api/stream/channels/channel.ts4
5 files changed, 51 insertions, 3 deletions
diff --git a/packages/backend/src/server/api/endpoints/i/update.ts b/packages/backend/src/server/api/endpoints/i/update.ts
index 5c7958fc1c..113a09cb14 100644
--- a/packages/backend/src/server/api/endpoints/i/update.ts
+++ b/packages/backend/src/server/api/endpoints/i/update.ts
@@ -295,8 +295,20 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
if (ps.chatScope !== undefined) updates.chatScope = ps.chatScope;
function checkMuteWordCount(mutedWords: (string[] | string)[], limit: number) {
- // TODO: ちゃんと数える
- const length = JSON.stringify(mutedWords).length;
+ const count = (arr: (string[] | string)[]) => {
+ let length = 0;
+ for (const item of arr) {
+ if (typeof item === 'string') {
+ length += item.length;
+ } else if (Array.isArray(item)) {
+ for (const subItem of item) {
+ length += subItem.length;
+ }
+ }
+ }
+ return length;
+ };
+ const length = count(mutedWords);
if (length > limit) {
throw new ApiError(meta.errors.tooManyMutedWords);
}
diff --git a/packages/backend/src/server/api/endpoints/notes/drafts/create.ts b/packages/backend/src/server/api/endpoints/notes/drafts/create.ts
index 880f4964a1..efb5ee01d1 100644
--- a/packages/backend/src/server/api/endpoints/notes/drafts/create.ts
+++ b/packages/backend/src/server/api/endpoints/notes/drafts/create.ts
@@ -135,6 +135,18 @@ export const meta = {
code: 'CANNOT_RENOTE_TO_EXTERNAL',
id: 'ed1952ac-2d26-4957-8b30-2deda76bedf7',
},
+
+ scheduledAtRequired: {
+ message: 'scheduledAt is required when isActuallyScheduled is true.',
+ code: 'SCHEDULED_AT_REQUIRED',
+ id: '15e28a55-e74c-4d65-89b7-8880cdaaa87d',
+ },
+
+ scheduledAtMustBeInFuture: {
+ message: 'scheduledAt must be in the future.',
+ code: 'SCHEDULED_AT_MUST_BE_IN_FUTURE',
+ id: 'e4bed6c9-017e-4934-aed0-01c22cc60ec1',
+ },
},
limit: {
@@ -252,6 +264,10 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
throw new ApiError(meta.errors.cannotReplyToSpecifiedVisibilityNoteWithExtendedVisibility);
case 'c3275f19-4558-4c59-83e1-4f684b5fab66':
throw new ApiError(meta.errors.tooManyScheduledNotes);
+ case '94a89a43-3591-400a-9c17-dd166e71fdfa':
+ throw new ApiError(meta.errors.scheduledAtRequired);
+ case 'b34d0c1b-996f-4e34-a428-c636d98df457':
+ throw new ApiError(meta.errors.scheduledAtMustBeInFuture);
default:
throw err;
}
diff --git a/packages/backend/src/server/api/endpoints/notes/drafts/update.ts b/packages/backend/src/server/api/endpoints/notes/drafts/update.ts
index 9a2e2ca415..2900e0cb0d 100644
--- a/packages/backend/src/server/api/endpoints/notes/drafts/update.ts
+++ b/packages/backend/src/server/api/endpoints/notes/drafts/update.ts
@@ -165,6 +165,18 @@ export const meta = {
code: 'TOO_MANY_SCHEDULED_NOTES',
id: '02f5df79-08ae-4a33-8524-f1503c8f6212',
},
+
+ scheduledAtRequired: {
+ message: 'scheduledAt is required when isActuallyScheduled is true.',
+ code: 'SCHEDULED_AT_REQUIRED',
+ id: 'fe9737d5-cc41-498c-af9d-149207307530',
+ },
+
+ scheduledAtMustBeInFuture: {
+ message: 'scheduledAt must be in the future.',
+ code: 'SCHEDULED_AT_MUST_BE_IN_FUTURE',
+ id: 'ed1a6673-d0d1-4364-aaae-9bf3f139cbc5',
+ },
},
limit: {
@@ -295,6 +307,10 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
throw new ApiError(meta.errors.containsTooManyMentions);
case 'bacdf856-5c51-4159-b88a-804fa5103be5':
throw new ApiError(meta.errors.tooManyScheduledNotes);
+ case '94a89a43-3591-400a-9c17-dd166e71fdfa':
+ throw new ApiError(meta.errors.scheduledAtRequired);
+ case 'b34d0c1b-996f-4e34-a428-c636d98df457':
+ throw new ApiError(meta.errors.scheduledAtMustBeInFuture);
default:
throw err;
}
diff --git a/packages/backend/src/server/api/endpoints/notes/translate.ts b/packages/backend/src/server/api/endpoints/notes/translate.ts
index e9a6a36b02..cd7d46007c 100644
--- a/packages/backend/src/server/api/endpoints/notes/translate.ts
+++ b/packages/backend/src/server/api/endpoints/notes/translate.ts
@@ -95,7 +95,6 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
if (targetLang.includes('-')) targetLang = targetLang.split('-')[0];
const params = new URLSearchParams();
- params.append('auth_key', this.serverSettings.deeplAuthKey);
params.append('text', note.text);
params.append('target_lang', targetLang);
@@ -104,6 +103,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
const res = await this.httpRequestService.send(endpoint, {
method: 'POST',
headers: {
+ 'Authorization': `DeepL-Auth-Key ${this.serverSettings.deeplAuthKey}`,
'Content-Type': 'application/x-www-form-urlencoded',
Accept: 'application/json, */*',
},
diff --git a/packages/backend/src/server/api/stream/channels/channel.ts b/packages/backend/src/server/api/stream/channels/channel.ts
index 9a0da5b66b..c07eaac98d 100644
--- a/packages/backend/src/server/api/stream/channels/channel.ts
+++ b/packages/backend/src/server/api/stream/channels/channel.ts
@@ -41,6 +41,10 @@ class ChannelChannel extends Channel {
private async onNote(note: Packed<'Note'>) {
if (note.channelId !== this.channelId) return;
+ if (note.user.requireSigninToViewContents && this.user == null) return;
+ if (note.renote && note.renote.user.requireSigninToViewContents && this.user == null) return;
+ if (note.reply && note.reply.user.requireSigninToViewContents && this.user == null) return;
+
if (this.isNoteMutedOrBlocked(note)) return;
if (this.user && isRenotePacked(note) && !isQuotePacked(note)) {