Better error handling

This commit is contained in:
syuilo 2019-04-12 13:07:56 +09:00
parent 9b4ee584c2
commit dcf9421560
2 changed files with 10 additions and 6 deletions

View file

@ -242,7 +242,13 @@ export async function resolveNote(value: string | IObject, resolver?: Resolver):
// リモートサーバーからフェッチしてきて登録 // リモートサーバーからフェッチしてきて登録
// ここでuriの代わりに添付されてきたNote Objectが指定されていると、サーバーフェッチを経ずにートが生成されるが // ここでuriの代わりに添付されてきたNote Objectが指定されていると、サーバーフェッチを経ずにートが生成されるが
// 添付されてきたNote Objectは偽装されている可能性があるため、常にuriを指定してサーバーフェッチを行う。 // 添付されてきたNote Objectは偽装されている可能性があるため、常にuriを指定してサーバーフェッチを行う。
return await createNote(uri, resolver); return await createNote(uri, resolver).catch(e => {
if (e.name === 'duplicated') {
return fetchNote(uri);
} else {
throw e;
}
});
} }
export async function extractEmojis(tags: ITag[], host: string) { export async function extractEmojis(tags: ITag[], host: string) {

View file

@ -193,10 +193,6 @@ export default async (user: User, data: Option, silent = false) => new Promise<N
res(note); res(note);
if (note == null) {
return;
}
// 統計を更新 // 統計を更新
notesChart.update(note, true); notesChart.update(note, true);
perUserNotesChart.update(user, note, true); perUserNotesChart.update(user, note, true);
@ -424,7 +420,9 @@ async function insertNote(user: User, data: Option, tags: string[], emojis: stri
} catch (e) { } catch (e) {
// duplicate key error // duplicate key error
if (isDuplicateKeyValueError(e)) { if (isDuplicateKeyValueError(e)) {
return null; const err = new Error('Duplicated note');
err.name = 'duplicated';
throw err;
} }
console.error(e); console.error(e);