diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2019-04-12 13:07:56 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2019-04-12 13:07:56 +0900 |
| commit | 654daff7cefd5c84b8b336fc61b88ec2cea66944 (patch) | |
| tree | 0480b7ce04f154f2bcd9bbfdd6afeb5ca54a4c38 /src | |
| parent | 11.0.0-beta.4 (diff) | |
| download | sharkey-654daff7cefd5c84b8b336fc61b88ec2cea66944.tar.gz sharkey-654daff7cefd5c84b8b336fc61b88ec2cea66944.tar.bz2 sharkey-654daff7cefd5c84b8b336fc61b88ec2cea66944.zip | |
Better error handling
Diffstat (limited to 'src')
| -rw-r--r-- | src/remote/activitypub/models/note.ts | 8 | ||||
| -rw-r--r-- | src/services/note/create.ts | 8 |
2 files changed, 10 insertions, 6 deletions
diff --git a/src/remote/activitypub/models/note.ts b/src/remote/activitypub/models/note.ts index 07991d4eb2..eb4175875d 100644 --- a/src/remote/activitypub/models/note.ts +++ b/src/remote/activitypub/models/note.ts @@ -242,7 +242,13 @@ export async function resolveNote(value: string | IObject, resolver?: Resolver): // リモートサーバーからフェッチしてきて登録 // ここでuriの代わりに添付されてきたNote Objectが指定されていると、サーバーフェッチを経ずにノートが生成されるが // 添付されてきた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) { diff --git a/src/services/note/create.ts b/src/services/note/create.ts index b66f61ae8e..6906bc71ce 100644 --- a/src/services/note/create.ts +++ b/src/services/note/create.ts @@ -193,10 +193,6 @@ export default async (user: User, data: Option, silent = false) => new Promise<N res(note); - if (note == null) { - return; - } - // 統計を更新 notesChart.update(note, true); perUserNotesChart.update(user, note, true); @@ -424,7 +420,9 @@ async function insertNote(user: User, data: Option, tags: string[], emojis: stri } catch (e) { // duplicate key error if (isDuplicateKeyValueError(e)) { - return null; + const err = new Error('Duplicated note'); + err.name = 'duplicated'; + throw err; } console.error(e); |