summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2019-04-12 13:07:56 +0900
committersyuilo <syuilotan@yahoo.co.jp>2019-04-12 13:07:56 +0900
commit654daff7cefd5c84b8b336fc61b88ec2cea66944 (patch)
tree0480b7ce04f154f2bcd9bbfdd6afeb5ca54a4c38 /src
parent11.0.0-beta.4 (diff)
downloadsharkey-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.ts8
-rw-r--r--src/services/note/create.ts8
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);