This commit is contained in:
rinsuki 2018-06-17 15:58:23 +09:00
parent 4e04e5e0c0
commit f0fec654ff
2 changed files with 8 additions and 6 deletions

View file

@ -6,7 +6,7 @@ import config from '../../../config';
export default function(note: INote) {
if (note.text == null) return null;
let html = toHtml(parse(note.text));
let html = toHtml(parse(note.text), note.mentionedRemoteUsers);
if (note.poll != null) {
const url = `${config.url}/notes/${note._id}`;

View file

@ -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>`;