import { getNote } from '@/server/api/common/getters.js'; import { ApiError } from '@/server/api/error.js'; import define from '@/server/api/define.js'; import { Resolver } from '@/remote/activitypub/resolver.js'; import { updateQuestion } from '@/remote/activitypub/models/question.js'; export const meta = { tags: ['notes'], description: 'Fetches an updated number of votes for a poll attached to a remote note.', requireCredential: true, kind: 'write:votes', errors: ['NO_SUCH_NOTE'], } as const; export const paramDef = { type: 'object', properties: { noteId: { type: 'string', format: 'misskey:id' }, }, required: ['noteId'], } as const; // eslint-disable-next-line import/no-default-export export default define(meta, paramDef, async (ps, user) => { // Get votee const note = await getNote(ps.noteId, user).catch(err => { if (err.id === '9725d0ce-ba28-4dde-95a7-2cbb2c15de24') throw new ApiError('NO_SUCH_NOTE'); throw err; }); if (!note.hasPoll) { throw new ApiError('NO_SUCH_NOTE', 'The note exists but does not have a poll attached.'); } if (note.uri == null) { throw new ApiError('NO_SUCH_NOTE', 'Can only update polls of remote notes.'); } await updateQuestion(note.uri, new Resolver()); });