Fix: notes/create hangs when rejected (#3221)

This commit is contained in:
MeiMei 2018-11-13 19:34:09 +09:00 committed by syuilo
parent adbe0fbcd1
commit 9f0b8ba2f8
3 changed files with 16 additions and 14 deletions

View file

@ -56,7 +56,7 @@ export default (endpoint: string, user: IUser, app: IApp, data: any, file?: any)
console.warn(`SLOW API CALL DETECTED: ${ep.name} (${time}ms)`); console.warn(`SLOW API CALL DETECTED: ${ep.name} (${time}ms)`);
} }
} catch (e) { } catch (e) {
if (e.name == 'INVALID_PARAM') { if (e && e.name == 'INVALID_PARAM') {
rej({ rej({
code: e.name, code: e.name,
param: e.param, param: e.param,

View file

@ -216,7 +216,7 @@ export default define(meta, (ps, user, app) => new Promise(async (res, rej) => {
} }
// 投稿を作成 // 投稿を作成
const note = await create(user, { create(user, {
createdAt: new Date(), createdAt: new Date(),
files: files, files: files,
poll: ps.poll, poll: ps.poll,
@ -229,12 +229,14 @@ export default define(meta, (ps, user, app) => new Promise(async (res, rej) => {
visibility: ps.visibility, visibility: ps.visibility,
visibleUsers, visibleUsers,
geo: ps.geo geo: ps.geo
}); })
.then(note => pack(note, user))
const noteObj = await pack(note, user); .then(noteObj => {
// Reponse
res({ res({
createdNote: noteObj createdNote: noteObj
}); });
})
.catch(e => {
rej(e);
});
})); }));

View file

@ -116,27 +116,27 @@ export default async (user: IUser, data: Option, silent = false) => new Promise<
// リプライ対象が削除された投稿だったらreject // リプライ対象が削除された投稿だったらreject
if (data.reply && data.reply.deletedAt != null) { if (data.reply && data.reply.deletedAt != null) {
return rej(); return rej('Reply target has been deleted');
} }
// Renote対象が削除された投稿だったらreject // Renote対象が削除された投稿だったらreject
if (data.renote && data.renote.deletedAt != null) { if (data.renote && data.renote.deletedAt != null) {
return rej(); return rej('Renote target has been deleted');
} }
// Renote対象が「ホームまたは全体」以外の公開範囲ならreject // Renote対象が「ホームまたは全体」以外の公開範囲ならreject
if (data.renote && data.renote.visibility != 'public' && data.renote.visibility != 'home') { if (data.renote && data.renote.visibility != 'public' && data.renote.visibility != 'home') {
return rej(); return rej('Renote target is not public or home');
} }
// リプライ対象が自分以外の非公開の投稿なら禁止 // リプライ対象が自分以外の非公開の投稿なら禁止
if (data.reply && data.reply.visibility == 'private' && !data.reply.userId.equals(user._id)) { if (data.reply && data.reply.visibility == 'private' && !data.reply.userId.equals(user._id)) {
return rej(); return rej('Reply target is private of others');
} }
// Renote対象が自分以外の非公開の投稿なら禁止 // Renote対象が自分以外の非公開の投稿なら禁止
if (data.renote && data.renote.visibility == 'private' && !data.renote.userId.equals(user._id)) { if (data.renote && data.renote.visibility == 'private' && !data.renote.userId.equals(user._id)) {
return rej(); return rej('Renote target is private of others');
} }
if (data.text) { if (data.text) {