summaryrefslogtreecommitdiff
path: root/src/text/html.ts
diff options
context:
space:
mode:
authorrinsuki <428rinsuki+git@gmail.com>2018-06-17 15:58:23 +0900
committerrinsuki <428rinsuki+git@gmail.com>2018-06-17 15:58:23 +0900
commitf0fec654ff4c533f16a4f2e9e30d19d102f94a63 (patch)
treea63210a9784da7928662f4fb5e2cc467f1941951 /src/text/html.ts
parentMerge pull request #1722 from rinsuki/fix/1700 (diff)
downloadsharkey-f0fec654ff4c533f16a4f2e9e30d19d102f94a63.tar.gz
sharkey-f0fec654ff4c533f16a4f2e9e30d19d102f94a63.tar.bz2
sharkey-f0fec654ff4c533f16a4f2e9e30d19d102f94a63.zip
fix #1726
Diffstat (limited to 'src/text/html.ts')
-rw-r--r--src/text/html.ts12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/text/html.ts b/src/text/html.ts
index 70b341689a..a51406ca85 100644
--- a/src/text/html.ts
+++ b/src/text/html.ts
@@ -1,8 +1,9 @@
import { lib as emojilib } from 'emojilib';
import { JSDOM } from 'jsdom';
import config from '../config';
+import { INote } from '../models/note';
-const handlers = {
+const handlers: {[key: string]: (window: any, token: any, mentionedRemoteUsers: INote["mentionedRemoteUsers"]) => void} = {
bold({ document }, { bold }) {
const b = document.createElement('b');
b.textContent = bold;
@@ -44,9 +45,10 @@ const handlers = {
document.body.appendChild(a);
},
- mention({ document }, { content }) {
+ mention({ document }, { content, username, host }, mentionedRemoteUsers) {
const a = document.createElement('a');
- a.href = `${config.url}/${content}`;
+ const remoteUserInfo = mentionedRemoteUsers.find(remoteUser => remoteUser.username === username && remoteUser.host === host);
+ a.href = remoteUserInfo ? remoteUserInfo.uri : `${config.url}/${content}`;
a.textContent = content;
document.body.appendChild(a);
},
@@ -88,11 +90,11 @@ const handlers = {
}
};
-export default tokens => {
+export default (tokens, mentionedRemoteUsers: INote["mentionedRemoteUsers"] = []) => {
const { window } = new JSDOM('');
for (const token of tokens) {
- handlers[token.type](window, token);
+ handlers[token.type](window, token, mentionedRemoteUsers);
}
return `<p>${window.document.body.innerHTML}</p>`;