summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMeiMei <30769358+mei23@users.noreply.github.com>2019-08-18 12:47:45 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2019-08-18 12:47:45 +0900
commit7ecfc007a99d1df6d65b5f227a49d295e3df5913 (patch)
tree9bc7619a0a84e59d68797c4330a61ed449e6a5c3 /src
parentFix: Hashtagがupdateできない (#5285) (diff)
downloadsharkey-7ecfc007a99d1df6d65b5f227a49d295e3df5913.tar.gz
sharkey-7ecfc007a99d1df6d65b5f227a49d295e3df5913.tar.bz2
sharkey-7ecfc007a99d1df6d65b5f227a49d295e3df5913.zip
updateHashtagを並列で行わないように (#5284)
Diffstat (limited to 'src')
-rw-r--r--src/remote/activitypub/models/person.ts8
-rw-r--r--src/server/api/endpoints/i/update.ts5
-rw-r--r--src/services/note/create.ts4
-rw-r--r--src/services/update-hashtag.ts16
4 files changed, 23 insertions, 10 deletions
diff --git a/src/remote/activitypub/models/person.ts b/src/remote/activitypub/models/person.ts
index bfcad100fe..b09446d698 100644
--- a/src/remote/activitypub/models/person.ts
+++ b/src/remote/activitypub/models/person.ts
@@ -12,7 +12,7 @@ import { ITag, extractHashtags } from './tag';
import { IIdentifier } from './identifier';
import { apLogger } from '../logger';
import { Note } from '../../../models/entities/note';
-import { updateHashtag } from '../../../services/update-hashtag';
+import { updateUsertags } from '../../../services/update-hashtag';
import { Users, UserNotePinings, Instances, DriveFiles, Followings, UserProfiles, UserPublickeys } from '../../../models';
import { User, IRemoteUser } from '../../../models/entities/user';
import { Emoji } from '../../../models/entities/emoji';
@@ -194,8 +194,7 @@ export async function createPerson(uri: string, resolver?: Resolver): Promise<Us
usersChart.update(user!, true);
// ハッシュタグ更新
- for (const tag of tags) updateHashtag(user!, tag, true, true);
- for (const tag of (user!.tags || []).filter(x => !tags.includes(x))) updateHashtag(user!, tag, true, false);
+ updateUsertags(user!, tags);
//#region アイコンとヘッダー画像をフェッチ
const [avatar, banner] = (await Promise.all<DriveFile | null>([
@@ -355,8 +354,7 @@ export async function updatePerson(uri: string, resolver?: Resolver | null, hint
});
// ハッシュタグ更新
- for (const tag of tags) updateHashtag(exist, tag, true, true);
- for (const tag of (exist.tags || []).filter(x => !tags.includes(x))) updateHashtag(exist, tag, true, false);
+ updateUsertags(exist, tags);
// 該当ユーザーが既にフォロワーになっていた場合はFollowingもアップデートする
await Followings.update({
diff --git a/src/server/api/endpoints/i/update.ts b/src/server/api/endpoints/i/update.ts
index 149081e50b..1ea2c2da35 100644
--- a/src/server/api/endpoints/i/update.ts
+++ b/src/server/api/endpoints/i/update.ts
@@ -8,7 +8,7 @@ import { parse, parsePlain } from '../../../../mfm/parse';
import extractEmojis from '../../../../misc/extract-emojis';
import extractHashtags from '../../../../misc/extract-hashtags';
import * as langmap from 'langmap';
-import { updateHashtag } from '../../../../services/update-hashtag';
+import { updateUsertags } from '../../../../services/update-hashtag';
import { ApiError } from '../../error';
import { Users, DriveFiles, UserProfiles, Pages } from '../../../../models';
import { User } from '../../../../models/entities/user';
@@ -264,8 +264,7 @@ export default define(meta, async (ps, user, app) => {
updates.tags = tags;
// ハッシュタグ更新
- for (const tag of tags) updateHashtag(user, tag, true, true);
- for (const tag of user.tags.filter(x => !tags.includes(x))) updateHashtag(user, tag, true, false);
+ updateUsertags(user, tags);
//#endregion
if (Object.keys(updates).length > 0) await Users.update(user.id, updates);
diff --git a/src/services/note/create.ts b/src/services/note/create.ts
index 48d8670228..0dd0e1962f 100644
--- a/src/services/note/create.ts
+++ b/src/services/note/create.ts
@@ -9,7 +9,7 @@ import watch from './watch';
import { parse } from '../../mfm/parse';
import { resolveUser } from '../../remote/resolve-user';
import config from '../../config';
-import { updateHashtag } from '../update-hashtag';
+import { updateHashtags } from '../update-hashtag';
import { concat } from '../../prelude/array';
import insertNoteUnread from './unread';
import { registerOrFetchInstanceDoc } from '../register-or-fetch-instance-doc';
@@ -202,7 +202,7 @@ export default async (user: User, data: Option, silent = false) => new Promise<N
}
// ハッシュタグ更新
- for (const tag of tags) updateHashtag(user, tag);
+ updateHashtags(user, tags);
// Increment notes count (user)
incNotesCountOfUser(user);
diff --git a/src/services/update-hashtag.ts b/src/services/update-hashtag.ts
index d58ec6d1e7..1c67ef881e 100644
--- a/src/services/update-hashtag.ts
+++ b/src/services/update-hashtag.ts
@@ -4,6 +4,22 @@ import { hashtagChart } from './chart';
import { genId } from '../misc/gen-id';
import { Hashtag } from '../models/entities/hashtag';
+export async function updateHashtags(user: User, tags: string[]) {
+ for (const tag of tags) {
+ await updateHashtag(user, tag);
+ }
+}
+
+export async function updateUsertags(user: User, tags: string[]) {
+ for (const tag of tags) {
+ await updateHashtag(user, tag, true, true);
+ }
+
+ for (const tag of (user.tags || []).filter(x => !tags.includes(x))) {
+ await updateHashtag(user, tag, true, false);
+ }
+}
+
export async function updateHashtag(user: User, tag: string, isUserAttached = false, inc = true) {
tag = tag.toLowerCase();