simpkey/src/render.ts

43 lines
1020 B
TypeScript

import views from 'koa-views';
import { parse, toHtml } from 'mfmf';
import { parsePlain } from 'mfmf/dist/script/mfm/parse';
import constant from './const';
import { User } from './models/User';
import { Note } from './models/Note';
export const render = views(__dirname + '/views', {
extension: 'pug', options: {
...constant,
mfmToHtml: (text: string, plain = false) => {
return toHtml(plain ? parsePlain(text) : parse(text), [], {
url: '',
});
},
getAcct: (user: User) => user.host ? `@${user.username}@${user.host}` : `@${user.username}`,
getUserName: (user: User) => user.name || user.username,
getVisibility: (note: Note) => {
let icon: string;
switch (note.visibility) {
case 'public':
icon = '🌐';
break;
case 'home':
icon = '🏠';
break;
case 'followers':
icon = '🔒';
break;
case 'specified':
icon = '✉️';
break;
default:
icon = '❓';
break;
}
if (note.localOnly) icon += '☣';
return icon;
}
}
});