Better error handling
This commit is contained in:
parent
64e10e9619
commit
654daff7ce
|
@ -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) {
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue