This commit is contained in:
syuilo 2022-04-17 20:51:59 +09:00
parent 02bb36cdc4
commit ff8313b48b

View File

@ -1,15 +1,15 @@
import ms from 'ms'; import ms from 'ms';
import { In } from 'typeorm';
import create from '@/services/note/create.js'; import create from '@/services/note/create.js';
import define from '../../define.js';
import { ApiError } from '../../error.js';
import { User } from '@/models/entities/user.js'; import { User } from '@/models/entities/user.js';
import { Users, DriveFiles, Notes, Channels, Blockings } from '@/models/index.js'; import { Users, DriveFiles, Notes, Channels, Blockings } from '@/models/index.js';
import { DriveFile } from '@/models/entities/drive-file.js'; import { DriveFile } from '@/models/entities/drive-file.js';
import { Note } from '@/models/entities/note.js'; import { Note } from '@/models/entities/note.js';
import { noteVisibilities } from '../../../../types.js';
import { Channel } from '@/models/entities/channel.js'; import { Channel } from '@/models/entities/channel.js';
import { MAX_NOTE_TEXT_LENGTH } from '@/const.js'; import { MAX_NOTE_TEXT_LENGTH } from '@/const.js';
import { In } from 'typeorm'; import { noteVisibilities } from '../../../../types.js';
import { ApiError } from '../../error.js';
import define from '../../define.js';
export const meta = { export const meta = {
tags: ['notes'], tags: ['notes'],
@ -83,7 +83,7 @@ export const meta = {
export const paramDef = { export const paramDef = {
type: 'object', type: 'object',
properties: { properties: {
visibility: { type: 'string', enum: ['public', 'home', 'followers', 'specified'], default: "public" }, visibility: { type: 'string', enum: ['public', 'home', 'followers', 'specified'], default: 'public' },
visibleUserIds: { type: 'array', uniqueItems: true, items: { visibleUserIds: { type: 'array', uniqueItems: true, items: {
type: 'string', format: 'misskey:id', type: 'string', format: 'misskey:id',
} }, } },
@ -149,7 +149,7 @@ export const paramDef = {
{ {
// (re)note with poll, text and files are optional // (re)note with poll, text and files are optional
properties: { properties: {
poll: { type: 'object', nullable: false, }, poll: { type: 'object', nullable: false },
}, },
required: ['poll'], required: ['poll'],
}, },
@ -178,14 +178,14 @@ export default define(meta, paramDef, async (ps, user) => {
}); });
} }
let renote: Note | null; let renote: Note | null = null;
if (ps.renoteId != null) { if (ps.renoteId != null) {
// Fetch renote to note // Fetch renote to note
renote = await Notes.findOneBy({ id: ps.renoteId }); renote = await Notes.findOneBy({ id: ps.renoteId });
if (renote == null) { if (renote == null) {
throw new ApiError(meta.errors.noSuchRenoteTarget); throw new ApiError(meta.errors.noSuchRenoteTarget);
} else if (renote.renoteId && !renote.text && !renote.fileIds && !renote.poll) { } else if (renote.renoteId && !renote.text && !renote.fileIds && !renote.hasPoll) {
throw new ApiError(meta.errors.cannotReRenote); throw new ApiError(meta.errors.cannotReRenote);
} }
@ -201,14 +201,14 @@ export default define(meta, paramDef, async (ps, user) => {
} }
} }
let reply: Note | null; let reply: Note | null = null;
if (ps.replyId != null) { if (ps.replyId != null) {
// Fetch reply // Fetch reply
reply = await Notes.findOneBy({ id: ps.replyId }); reply = await Notes.findOneBy({ id: ps.replyId });
if (reply == null) { if (reply == null) {
throw new ApiError(meta.errors.noSuchReplyTarget); throw new ApiError(meta.errors.noSuchReplyTarget);
} else if (reply.renoteId && !reply.text && !reply.fileIds && !renote.poll) { } else if (reply.renoteId && !reply.text && !reply.fileIds && !reply.hasPoll) {
throw new ApiError(meta.errors.cannotReplyToPureRenote); throw new ApiError(meta.errors.cannotReplyToPureRenote);
} }
@ -234,7 +234,7 @@ export default define(meta, paramDef, async (ps, user) => {
} }
} }
let channel: Channel | undefined; let channel: Channel | null = null;
if (ps.channelId != null) { if (ps.channelId != null) {
channel = await Channels.findOneBy({ id: ps.channelId }); channel = await Channels.findOneBy({ id: ps.channelId });