summaryrefslogtreecommitdiff
path: root/src/services/note/create.ts
diff options
context:
space:
mode:
authorrinsuki <428rinsuki+git@gmail.com>2019-11-01 05:43:54 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2019-11-01 05:43:54 +0900
commit0c1d3e186b7b1b3d19ed6580decbbbab7e30ecd9 (patch)
tree12125bcff1ad387f57973baf110f377ae624b23c /src/services/note/create.ts
parentUpdate webpack.config.ts (#5567) (diff)
downloadsharkey-0c1d3e186b7b1b3d19ed6580decbbbab7e30ecd9.tar.gz
sharkey-0c1d3e186b7b1b3d19ed6580decbbbab7e30ecd9.tar.bz2
sharkey-0c1d3e186b7b1b3d19ed6580decbbbab7e30ecd9.zip
新規投稿のMFMをHTMLに変換する際、リモートユーザーへのメンションのリンク先を(できれば)urlに (#5562)
* 新規投稿のMFMをHTMLに変換する際、リモートユーザーへのメンションのリンク先を(できれば)urlに Fix #2467 Related #5560 * remove unnecessary import * Update src/services/note/create.ts Co-Authored-By: Acid Chicken (硫酸鶏) <root@acid-chicken.com> * Apply suggestions from code review Co-Authored-By: Acid Chicken (硫酸鶏) <root@acid-chicken.com>
Diffstat (limited to 'src/services/note/create.ts')
-rw-r--r--src/services/note/create.ts20
1 files changed, 13 insertions, 7 deletions
diff --git a/src/services/note/create.ts b/src/services/note/create.ts
index 9d5c0a58d5..5d9492e6ab 100644
--- a/src/services/note/create.ts
+++ b/src/services/note/create.ts
@@ -16,11 +16,11 @@ import { registerOrFetchInstanceDoc } from '../register-or-fetch-instance-doc';
import extractMentions from '../../misc/extract-mentions';
import extractEmojis from '../../misc/extract-emojis';
import extractHashtags from '../../misc/extract-hashtags';
-import { Note } from '../../models/entities/note';
+import { Note, IMentionedRemoteUsers } from '../../models/entities/note';
import { Mutings, Users, NoteWatchings, Followings, Notes, Instances, UserProfiles } from '../../models';
import { DriveFile } from '../../models/entities/drive-file';
import { App } from '../../models/entities/app';
-import { Not, getConnection } from 'typeorm';
+import { Not, getConnection, In } from 'typeorm';
import { User, ILocalUser, IRemoteUser } from '../../models/entities/user';
import { genId } from '../../misc/gen-id';
import { notesChart, perUserNotesChart, activeUsersChart, instanceChart } from '../chart';
@@ -383,11 +383,17 @@ async function insertNote(user: User, data: Option, tags: string[], emojis: stri
// Append mentions data
if (mentionedUsers.length > 0) {
insert.mentions = mentionedUsers.map(u => u.id);
- insert.mentionedRemoteUsers = JSON.stringify(mentionedUsers.filter(u => Users.isRemoteUser(u)).map(u => ({
- uri: (u as IRemoteUser).uri,
- username: u.username,
- host: u.host
- })));
+ const profiles = await UserProfiles.find({ userId: In(insert.mentions) });
+ insert.mentionedRemoteUsers = JSON.stringify(mentionedUsers.filter(u => Users.isRemoteUser(u)).map(u => {
+ const profile = profiles.find(p => p.userId == u.id);
+ const url = profile != null ? profile.url : null;
+ return {
+ uri: u.uri,
+ url: url == null ? undefined : url,
+ username: u.username,
+ host: u.host
+ } as IMentionedRemoteUsers[0];
+ }));
}
// 投稿を作成