diff --git a/packages/backend/eslint.config.js b/packages/backend/eslint.config.js index 7c649a373c..ef5a0ccec1 100644 --- a/packages/backend/eslint.config.js +++ b/packages/backend/eslint.config.js @@ -42,13 +42,6 @@ export default [ name: '__filename', message: 'Not in ESModule. Use `import.meta.url` instead.', }], - // https://typescript-eslint.io/rules/prefer-nullish-coalescing/ - '@typescript-eslint/prefer-nullish-coalescing': ['warn', { - ignorePrimitives: { - // Without this, the rule breaks for nullable booleans - boolean: true, - }, - }], }, }, { diff --git a/packages/backend/src/server/api/endpoints/notes/create.test.ts b/packages/backend/src/server/api/endpoints/notes/create.test.ts index 18d80e867b..545889a7ee 100644 --- a/packages/backend/src/server/api/endpoints/notes/create.test.ts +++ b/packages/backend/src/server/api/endpoints/notes/create.test.ts @@ -65,7 +65,7 @@ describe('api:notes/create', () => { test('0 characters cw', () => { expect(v({ text: 'Body', cw: '' })) - .toBe(INVALID); + .toBe(VALID); }); test('reject only cw', () => { diff --git a/packages/backend/src/server/api/endpoints/notes/create.ts b/packages/backend/src/server/api/endpoints/notes/create.ts index b0f32bfda8..3dd90c3dca 100644 --- a/packages/backend/src/server/api/endpoints/notes/create.ts +++ b/packages/backend/src/server/api/endpoints/notes/create.ts @@ -159,7 +159,7 @@ export const paramDef = { visibleUserIds: { type: 'array', uniqueItems: true, items: { type: 'string', format: 'misskey:id', } }, - cw: { type: 'string', nullable: true, minLength: 1 }, + cw: { type: 'string', nullable: true }, localOnly: { type: 'boolean', default: false }, reactionAcceptance: { type: 'string', nullable: true, enum: [null, 'likeOnly', 'likeOnlyForRemote', 'nonSensitiveOnly', 'nonSensitiveOnlyForLocalLikeOnlyForRemote'], default: null }, noExtractMentions: { type: 'boolean', default: false }, @@ -400,7 +400,7 @@ export default class extends Endpoint { // eslint- text: ps.text ?? undefined, reply, renote, - cw: ps.cw, + cw: ps.cw || null, localOnly: ps.localOnly, reactionAcceptance: ps.reactionAcceptance, visibility: ps.visibility, diff --git a/packages/backend/src/server/api/endpoints/notes/edit.ts b/packages/backend/src/server/api/endpoints/notes/edit.ts index cc2293c5d6..7b13d3a4f4 100644 --- a/packages/backend/src/server/api/endpoints/notes/edit.ts +++ b/packages/backend/src/server/api/endpoints/notes/edit.ts @@ -209,7 +209,7 @@ export const paramDef = { format: 'misskey:id', }, }, - cw: { type: 'string', nullable: true, minLength: 1 }, + cw: { type: 'string', nullable: true }, localOnly: { type: 'boolean', default: false }, reactionAcceptance: { type: 'string', nullable: true, enum: [null, 'likeOnly', 'likeOnlyForRemote', 'nonSensitiveOnly', 'nonSensitiveOnlyForLocalLikeOnlyForRemote'], default: null }, noExtractMentions: { type: 'boolean', default: false }, @@ -454,7 +454,7 @@ export default class extends Endpoint { // eslint- text: ps.text ?? undefined, reply, renote, - cw: ps.cw, + cw: ps.cw || null, localOnly: ps.localOnly, reactionAcceptance: ps.reactionAcceptance, visibility: ps.visibility, diff --git a/packages/backend/src/server/api/mastodon/timelineArgs.ts b/packages/backend/src/server/api/mastodon/timelineArgs.ts index 3fba8ec57a..167d493ab6 100644 --- a/packages/backend/src/server/api/mastodon/timelineArgs.ts +++ b/packages/backend/src/server/api/mastodon/timelineArgs.ts @@ -22,12 +22,12 @@ export interface TimelineArgs { // Values taken from https://docs.joinmastodon.org/client/intro/#boolean export function toBoolean(value: string | undefined): boolean | undefined { - if (value === undefined) return undefined; + if (!value) return undefined; return !['0', 'f', 'F', 'false', 'FALSE', 'off', 'OFF'].includes(value); } export function toInt(value: string | undefined): number | undefined { - if (value === undefined) return undefined; + if (!value) return undefined; return parseInt(value); } diff --git a/packages/megalodon/src/misskey.ts b/packages/megalodon/src/misskey.ts index 7e493d8fb7..01d5652650 100644 --- a/packages/megalodon/src/misskey.ts +++ b/packages/megalodon/src/misskey.ts @@ -1119,7 +1119,7 @@ export default class Misskey implements MegalodonInterface { } if (options.sensitive) { params = Object.assign(params, { - cw: '' + cw: ' ' }) } if (options.spoiler_text) { @@ -1198,7 +1198,7 @@ export default class Misskey implements MegalodonInterface { } if (_options.sensitive) { params = Object.assign(params, { - cw: '' + cw: ' ' }) } if (_options.spoiler_text) { diff --git a/packages/shared/eslint.config.js b/packages/shared/eslint.config.js index 860eb4a8e8..be7a031b63 100644 --- a/packages/shared/eslint.config.js +++ b/packages/shared/eslint.config.js @@ -37,6 +37,10 @@ export default [ 'no-restricted-imports': ['error', { paths: [{ name: 'punycode' }], }], + // https://typescript-eslint.io/rules/prefer-nullish-coalescing/ + '@typescript-eslint/prefer-nullish-coalescing': ['warn', { + ignorePrimitives: true, + }], }, }, ];