Compare commits
32 Commits
Author | SHA1 | Date | |
---|---|---|---|
839c93961c | |||
30b1be97dd | |||
55be57ad21 | |||
58064ec633 | |||
d63044a15e | |||
5422697397 | |||
36c2f8fe5d | |||
2defddc153 | |||
fb9a219349 | |||
3b5e4276c8 | |||
fab2e08a0d | |||
19e9099a78 | |||
91c2b07cd8 | |||
fd00c7bd81 | |||
8919082179 | |||
2f7c191547 | |||
80519dc366 | |||
4d53c813e4 | |||
750f479d58 | |||
e9a7e99108 | |||
ebf10b3452 | |||
5d621f5318 | |||
35dedfc7e4 | |||
39094adfcf | |||
74a25bfaa0 | |||
04ef2f0c8d | |||
fb99906a8c | |||
da0d3e4129 | |||
3ffe90146c | |||
81cea41154 | |||
3ff4f53bbd | |||
a77f67fc32 |
@ -14,7 +14,7 @@ ultimately sophisticated professional microblogging software.
|
||||
|
||||
<a href="https://www.patreon.com/syuilo"><img src="https://c5.patreon.com/external/logo/become_a_patron_button@2x.png" alt="Become a Patron!" width="160" /></a>
|
||||
|
||||

|
||||

|
||||
|
||||
:sparkles: Features
|
||||
----------------------------------------------------------------
|
||||
|
@ -400,7 +400,7 @@ desktop/views/components/post-form.vue:
|
||||
attach-media-from-local: "Medien von deinem PC hinzufügen"
|
||||
attach-media-from-drive: "Medien von deinem Speicher hinzufügen"
|
||||
attach-cancel: "Hinzufügen abbrechen"
|
||||
insert-a-kao: "v(‘ω’)v"
|
||||
insert-a-kao: "v('ω')v"
|
||||
create-poll: "Eine Abstimmung erstellen"
|
||||
text-remain: "{} Zeichen verbleibend"
|
||||
desktop/views/components/post-form-window.vue:
|
||||
|
@ -400,7 +400,7 @@ desktop/views/components/post-form.vue:
|
||||
attach-media-from-local: "Attach media from your PC"
|
||||
attach-media-from-drive: "Attach media from your Drive"
|
||||
attach-cancel: "Cancel attachment"
|
||||
insert-a-kao: "v(‘ω’)v"
|
||||
insert-a-kao: "v('ω')v"
|
||||
create-poll: "Create a poll"
|
||||
text-remain: "{} characters remaining"
|
||||
desktop/views/components/post-form-window.vue:
|
||||
|
@ -400,7 +400,7 @@ desktop/views/components/post-form.vue:
|
||||
attach-media-from-local: "PCからメディアを添付"
|
||||
attach-media-from-drive: "Adjunta multimedia desde tu Disco"
|
||||
attach-cancel: "Quitar el archivo adjunto"
|
||||
insert-a-kao: "v(‘ω’)v"
|
||||
insert-a-kao: "v('ω')v"
|
||||
create-poll: "Crea una encuesta"
|
||||
text-remain: "quedan {} caracteres"
|
||||
desktop/views/components/post-form-window.vue:
|
||||
|
@ -400,7 +400,7 @@ desktop/views/components/post-form.vue:
|
||||
attach-media-from-local: "Joindre un media depuis votre PC"
|
||||
attach-media-from-drive: "Joindre un media depuis votre Drive"
|
||||
attach-cancel: "Annuler la jointure de fichier"
|
||||
insert-a-kao: "v(‘ω’)v"
|
||||
insert-a-kao: "v('ω')v"
|
||||
create-poll: "Créer un sondage"
|
||||
text-remain: "{} charactères restants"
|
||||
desktop/views/components/post-form-window.vue:
|
||||
|
@ -400,7 +400,7 @@ desktop/views/components/post-form.vue:
|
||||
attach-media-from-local: "PCからメディアを添付"
|
||||
attach-media-from-drive: "ドライブからメディアを添付"
|
||||
attach-cancel: "添付取り消し"
|
||||
insert-a-kao: "v(‘ω’)v"
|
||||
insert-a-kao: "v('ω')v"
|
||||
create-poll: "アンケートを作成"
|
||||
text-remain: "残り{}文字"
|
||||
desktop/views/components/post-form-window.vue:
|
||||
|
@ -461,7 +461,7 @@ desktop/views/components/post-form.vue:
|
||||
attach-media-from-local: "PCからメディアを添付"
|
||||
attach-media-from-drive: "ドライブからメディアを添付"
|
||||
attach-cancel: "添付取り消し"
|
||||
insert-a-kao: "v(‘ω’)v"
|
||||
insert-a-kao: "v('ω')v"
|
||||
create-poll: "アンケートを作成"
|
||||
text-remain: "残り{}文字"
|
||||
|
||||
|
@ -400,7 +400,7 @@ desktop/views/components/post-form.vue:
|
||||
attach-media-from-local: "PCからメディアを添付"
|
||||
attach-media-from-drive: "ドライブからメディアを添付"
|
||||
attach-cancel: "添付取り消し"
|
||||
insert-a-kao: "v(‘ω’)v"
|
||||
insert-a-kao: "v('ω')v"
|
||||
create-poll: "アンケートを作成"
|
||||
text-remain: "残り{}文字"
|
||||
desktop/views/components/post-form-window.vue:
|
||||
|
@ -400,7 +400,7 @@ desktop/views/components/post-form.vue:
|
||||
attach-media-from-local: "Załącz zawartość multimedialną z komputera"
|
||||
attach-media-from-drive: "Załącz zawartość multimedialną z dysku"
|
||||
attach-cancel: "Usuń załącznik"
|
||||
insert-a-kao: "v(‘ω’)v"
|
||||
insert-a-kao: "v('ω')v"
|
||||
create-poll: "Utwórz ankietę"
|
||||
text-remain: "pozostałe znaki: {}"
|
||||
desktop/views/components/post-form-window.vue:
|
||||
|
@ -400,7 +400,7 @@ desktop/views/components/post-form.vue:
|
||||
attach-media-from-local: "PCからメディアを添付"
|
||||
attach-media-from-drive: "ドライブからメディアを添付"
|
||||
attach-cancel: "添付取り消し"
|
||||
insert-a-kao: "v(‘ω’)v"
|
||||
insert-a-kao: "v('ω')v"
|
||||
create-poll: "アンケートを作成"
|
||||
text-remain: "残り{}文字"
|
||||
desktop/views/components/post-form-window.vue:
|
||||
|
@ -400,7 +400,7 @@ desktop/views/components/post-form.vue:
|
||||
attach-media-from-local: "PCからメディアを添付"
|
||||
attach-media-from-drive: "ドライブからメディアを添付"
|
||||
attach-cancel: "添付取り消し"
|
||||
insert-a-kao: "v(‘ω’)v"
|
||||
insert-a-kao: "v('ω')v"
|
||||
create-poll: "アンケートを作成"
|
||||
text-remain: "残り{}文字"
|
||||
desktop/views/components/post-form-window.vue:
|
||||
|
@ -400,7 +400,7 @@ desktop/views/components/post-form.vue:
|
||||
attach-media-from-local: "PCからメディアを添付"
|
||||
attach-media-from-drive: "ドライブからメディアを添付"
|
||||
attach-cancel: "添付取り消し"
|
||||
insert-a-kao: "v(‘ω’)v"
|
||||
insert-a-kao: "v('ω')v"
|
||||
create-poll: "アンケートを作成"
|
||||
text-remain: "残り{}文字"
|
||||
desktop/views/components/post-form-window.vue:
|
||||
|
14
package.json
14
package.json
@ -1,8 +1,8 @@
|
||||
{
|
||||
"name": "misskey",
|
||||
"author": "syuilo <i@syuilo.com>",
|
||||
"version": "4.13.0",
|
||||
"clientVersion": "1.0.6783",
|
||||
"version": "4.14.0",
|
||||
"clientVersion": "1.0.6815",
|
||||
"codename": "nighthike",
|
||||
"main": "./built/index.js",
|
||||
"private": true,
|
||||
@ -65,7 +65,7 @@
|
||||
"@types/mocha": "5.2.3",
|
||||
"@types/mongodb": "3.0.21",
|
||||
"@types/ms": "0.7.30",
|
||||
"@types/node": "10.3.5",
|
||||
"@types/node": "10.3.6",
|
||||
"@types/nopt": "3.0.29",
|
||||
"@types/parse5": "5.0.0",
|
||||
"@types/pug": "2.0.4",
|
||||
@ -80,7 +80,7 @@
|
||||
"@types/speakeasy": "2.0.2",
|
||||
"@types/tmp": "0.0.33",
|
||||
"@types/uuid": "3.4.3",
|
||||
"@types/webpack": "4.4.2",
|
||||
"@types/webpack": "4.4.3",
|
||||
"@types/webpack-stream": "3.2.10",
|
||||
"@types/websocket": "0.0.39",
|
||||
"@types/ws": "5.1.2",
|
||||
@ -102,7 +102,7 @@
|
||||
"element-ui": "2.4.1",
|
||||
"emojilib": "2.2.12",
|
||||
"escape-regexp": "0.0.1",
|
||||
"eslint": "5.0.0",
|
||||
"eslint": "5.0.1",
|
||||
"eslint-plugin-vue": "4.5.0",
|
||||
"eventemitter3": "3.1.0",
|
||||
"exif-js": "2.3.0",
|
||||
@ -126,7 +126,7 @@
|
||||
"gulp-util": "3.0.8",
|
||||
"hard-source-webpack-plugin": "0.9.0",
|
||||
"highlight.js": "9.12.0",
|
||||
"html-minifier": "3.5.16",
|
||||
"html-minifier": "3.5.17",
|
||||
"http-signature": "1.2.0",
|
||||
"inquirer": "6.0.0",
|
||||
"is-root": "2.0.0",
|
||||
@ -213,7 +213,7 @@
|
||||
"vuex-persistedstate": "^2.5.4",
|
||||
"web-push": "3.3.2",
|
||||
"webfinger.js": "2.6.6",
|
||||
"webpack": "4.12.0",
|
||||
"webpack": "4.12.1",
|
||||
"webpack-cli": "3.0.8",
|
||||
"websocket": "1.0.26",
|
||||
"ws": "5.2.1",
|
||||
|
@ -1,5 +1,5 @@
|
||||
export default () => [
|
||||
'(=^・・^=)',
|
||||
'v(‘ω’)v',
|
||||
'v('ω')v',
|
||||
'🐡( \'-\' 🐡 )フグパンチ!!!!'
|
||||
][Math.floor(Math.random() * 3)];
|
||||
|
@ -40,17 +40,6 @@ export default Vue.component('misskey-flavored-markdown', {
|
||||
ast = this.ast;
|
||||
}
|
||||
|
||||
if (ast.filter(x => x.type != 'hashtag').length == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
while (ast[ast.length - 1] && (
|
||||
ast[ast.length - 1].type == 'hashtag' ||
|
||||
(ast[ast.length - 1].type == 'text' && ast[ast.length - 1].content == ' ') ||
|
||||
(ast[ast.length - 1].type == 'text' && ast[ast.length - 1].content == '\n'))) {
|
||||
ast.pop();
|
||||
}
|
||||
|
||||
// Parse ast to DOM
|
||||
const els = flatten(ast.map(token => {
|
||||
switch (token.type) {
|
||||
|
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="mk-reaction-picker">
|
||||
<div class="backdrop" ref="backdrop" @click="close"></div>
|
||||
<div class="popover" :class="{ compact }" ref="popover">
|
||||
<div class="popover" :class="{ compact, big }" ref="popover">
|
||||
<p v-if="!compact">{{ title }}</p>
|
||||
<div>
|
||||
<button @click="react('like')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="1" title="%i18n:common.reactions.like%"><mk-reaction-icon reaction='like'/></button>
|
||||
@ -25,7 +25,28 @@ import * as anime from 'animejs';
|
||||
const placeholder = '%i18n:@choose-reaction%';
|
||||
|
||||
export default Vue.extend({
|
||||
props: ['note', 'source', 'compact', 'cb'],
|
||||
props: {
|
||||
note: {
|
||||
type: Object,
|
||||
required: true
|
||||
},
|
||||
source: {
|
||||
required: true
|
||||
},
|
||||
compact: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false
|
||||
},
|
||||
cb: {
|
||||
required: false
|
||||
},
|
||||
big: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
title: placeholder
|
||||
@ -162,6 +183,16 @@ root(isDark)
|
||||
border-right solid $balloon-size transparent
|
||||
border-bottom solid $balloon-size $bgcolor
|
||||
|
||||
&.compact
|
||||
> div
|
||||
width 280px
|
||||
|
||||
> button
|
||||
width 50px
|
||||
height 50px
|
||||
font-size 28px
|
||||
border-radius 4px
|
||||
|
||||
> p
|
||||
display block
|
||||
margin 0
|
||||
|
@ -265,8 +265,8 @@ export default Vue.extend({
|
||||
border-bottom dashed 1px #c4cdd4
|
||||
|
||||
> .board
|
||||
width 350px
|
||||
height 350px
|
||||
width calc(100% - 16px)
|
||||
max-width 500px
|
||||
margin 0 auto
|
||||
|
||||
$label-size = 16px
|
||||
|
@ -47,9 +47,6 @@
|
||||
</div>
|
||||
<mk-poll v-if="p.poll" :note="p"/>
|
||||
<mk-url-preview v-for="url in urls" :url="url" :key="url"/>
|
||||
<div class="tags" v-if="p.tags && p.tags.length > 0">
|
||||
<router-link v-for="tag in p.tags" :key="tag" :to="`/tags/${tag}`">{{ tag }}</router-link>
|
||||
</div>
|
||||
<a class="location" v-if="p.geo" :href="`http://maps.google.com/maps?q=${p.geo.coordinates[1]},${p.geo.coordinates[0]}`" target="_blank">%fa:map-marker-alt% %i18n:@location%</a>
|
||||
<div class="map" v-if="p.geo" ref="map"></div>
|
||||
<div class="renote" v-if="p.renote">
|
||||
@ -363,35 +360,6 @@ root(isDark)
|
||||
> .mk-url-preview
|
||||
margin-top 8px
|
||||
|
||||
> .tags
|
||||
margin 4px 0 0 0
|
||||
|
||||
> *
|
||||
display inline-block
|
||||
margin 0 8px 0 0
|
||||
padding 2px 8px 2px 16px
|
||||
font-size 90%
|
||||
color #8d969e
|
||||
background #edf0f3
|
||||
border-radius 4px
|
||||
|
||||
&:before
|
||||
content ""
|
||||
display block
|
||||
position absolute
|
||||
top 0
|
||||
bottom 0
|
||||
left 4px
|
||||
width 8px
|
||||
height 8px
|
||||
margin auto 0
|
||||
background #fff
|
||||
border-radius 100%
|
||||
|
||||
&:hover
|
||||
text-decoration none
|
||||
background #e2e7ec
|
||||
|
||||
> footer
|
||||
font-size 1.2em
|
||||
|
||||
|
@ -32,9 +32,6 @@
|
||||
<mk-media-list :media-list="p.media"/>
|
||||
</div>
|
||||
<mk-poll v-if="p.poll" :note="p" ref="pollViewer"/>
|
||||
<div class="tags" v-if="p.tags && p.tags.length > 0">
|
||||
<router-link v-for="tag in p.tags" :key="tag" :to="`/tags/${tag}`">{{ tag }}</router-link>
|
||||
</div>
|
||||
<a class="location" v-if="p.geo" :href="`http://maps.google.com/maps?q=${p.geo.coordinates[1]},${p.geo.coordinates[0]}`" target="_blank">%fa:map-marker-alt% 位置情報</a>
|
||||
<div class="map" v-if="p.geo" ref="map"></div>
|
||||
<div class="renote" v-if="p.renote">
|
||||
@ -465,35 +462,6 @@ root(isDark)
|
||||
&:empty
|
||||
display none
|
||||
|
||||
> .tags
|
||||
margin 4px 0 0 0
|
||||
|
||||
> *
|
||||
display inline-block
|
||||
margin 0 0 4px 6px
|
||||
padding 2px 8px 2px 16px
|
||||
font-size 90%
|
||||
color $theme-color
|
||||
background isDark ? #313543 : #edf0f3
|
||||
border-radius 4px
|
||||
|
||||
&:before
|
||||
content ""
|
||||
display block
|
||||
position absolute
|
||||
top 0
|
||||
bottom 0
|
||||
left 4px
|
||||
width 8px
|
||||
height 8px
|
||||
margin auto 0
|
||||
background isDark ? #282c37 : #fff
|
||||
border-radius 100%
|
||||
|
||||
&:hover
|
||||
text-decoration none
|
||||
background #e2e7ec
|
||||
|
||||
.mk-url-preview
|
||||
margin-top 8px
|
||||
|
||||
|
@ -32,9 +32,6 @@
|
||||
<mk-media-list :media-list="p.media"/>
|
||||
</div>
|
||||
<mk-poll v-if="p.poll" :note="p" ref="pollViewer"/>
|
||||
<div class="tags" v-if="p.tags && p.tags.length > 0">
|
||||
<router-link v-for="tag in p.tags" :key="tag" :to="`/tags/${tag}`">{{ tag }}</router-link>
|
||||
</div>
|
||||
<a class="location" v-if="p.geo" :href="`http://maps.google.com/maps?q=${p.geo.coordinates[1]},${p.geo.coordinates[0]}`" target="_blank">%fa:map-marker-alt% %i18n:@location%</a>
|
||||
<div class="renote" v-if="p.renote">
|
||||
<mk-note-preview :note="p.renote" :mini="true"/>
|
||||
@ -373,31 +370,6 @@ root(isDark)
|
||||
.mk-url-preview
|
||||
margin-top 8px
|
||||
|
||||
> .tags
|
||||
margin 4px 0 0 0
|
||||
|
||||
> *
|
||||
display inline-block
|
||||
margin 0 0 4px 6px
|
||||
padding 2px 8px 2px 16px
|
||||
font-size 90%
|
||||
color $theme-color
|
||||
background isDark ? #313543 : #edf0f3
|
||||
border-radius 4px
|
||||
|
||||
&:before
|
||||
content ""
|
||||
display block
|
||||
position absolute
|
||||
top 0
|
||||
bottom 0
|
||||
left 4px
|
||||
width 8px
|
||||
height 8px
|
||||
margin auto 0
|
||||
background isDark ? #282c37 : #fff
|
||||
border-radius 100%
|
||||
|
||||
> .media
|
||||
> img
|
||||
display block
|
||||
|
@ -40,9 +40,6 @@
|
||||
<span v-if="p.deletedAt" style="opacity: 0.5">(%i18n:@deleted%)</span>
|
||||
<misskey-flavored-markdown v-if="p.text" :text="p.text" :i="$store.state.i"/>
|
||||
</div>
|
||||
<div class="tags" v-if="p.tags && p.tags.length > 0">
|
||||
<router-link v-for="tag in p.tags" :key="tag" :to="`/tags/${tag}`">{{ tag }}</router-link>
|
||||
</div>
|
||||
<div class="media" v-if="p.media.length > 0">
|
||||
<mk-media-list :media-list="p.media" :raw="true"/>
|
||||
</div>
|
||||
@ -197,7 +194,8 @@ export default Vue.extend({
|
||||
(this as any).os.new(MkReactionPicker, {
|
||||
source: this.$refs.reactButton,
|
||||
note: this.p,
|
||||
compact: true
|
||||
compact: true,
|
||||
big: true
|
||||
});
|
||||
},
|
||||
menu() {
|
||||
@ -369,31 +367,6 @@ root(isDark)
|
||||
display block
|
||||
max-width 100%
|
||||
|
||||
> .tags
|
||||
margin 4px 0 0 0
|
||||
|
||||
> *
|
||||
display inline-block
|
||||
margin 0 8px 0 0
|
||||
padding 2px 8px 2px 16px
|
||||
font-size 90%
|
||||
color #8d969e
|
||||
background #edf0f3
|
||||
border-radius 4px
|
||||
|
||||
&:before
|
||||
content ""
|
||||
display block
|
||||
position absolute
|
||||
top 0
|
||||
bottom 0
|
||||
left 4px
|
||||
width 8px
|
||||
height 8px
|
||||
margin auto 0
|
||||
background #fff
|
||||
border-radius 100%
|
||||
|
||||
> .time
|
||||
font-size 16px
|
||||
color isDark ? #606984 : #c0c0c0
|
||||
|
@ -32,9 +32,6 @@
|
||||
<mk-media-list :media-list="p.media"/>
|
||||
</div>
|
||||
<mk-poll v-if="p.poll" :note="p" ref="pollViewer"/>
|
||||
<div class="tags" v-if="p.tags && p.tags.length > 0">
|
||||
<router-link v-for="tag in p.tags" :key="tag" :to="`/tags/${tag}`">{{ tag }}</router-link>
|
||||
</div>
|
||||
<mk-url-preview v-for="url in urls" :url="url" :key="url"/>
|
||||
<a class="location" v-if="p.geo" :href="`http://maps.google.com/maps?q=${p.geo.coordinates[1]},${p.geo.coordinates[0]}`" target="_blank">%fa:map-marker-alt% %i18n:@location%</a>
|
||||
<div class="map" v-if="p.geo" ref="map"></div>
|
||||
@ -213,7 +210,8 @@ export default Vue.extend({
|
||||
(this as any).os.new(MkReactionPicker, {
|
||||
source: this.$refs.reactButton,
|
||||
note: this.p,
|
||||
compact: true
|
||||
compact: true,
|
||||
big: true
|
||||
});
|
||||
},
|
||||
|
||||
@ -416,31 +414,6 @@ root(isDark)
|
||||
.mk-url-preview
|
||||
margin-top 8px
|
||||
|
||||
> .tags
|
||||
margin 4px 0 0 0
|
||||
|
||||
> *
|
||||
display inline-block
|
||||
margin 0 0 4px 6px
|
||||
padding 2px 8px 2px 16px
|
||||
font-size 90%
|
||||
color $theme-color
|
||||
background isDark ? #313543 : #edf0f3
|
||||
border-radius 4px
|
||||
|
||||
&:before
|
||||
content ""
|
||||
display block
|
||||
position absolute
|
||||
top 0
|
||||
bottom 0
|
||||
left 4px
|
||||
width 8px
|
||||
height 8px
|
||||
margin auto 0
|
||||
background isDark ? #282c37 : #fff
|
||||
border-radius 100%
|
||||
|
||||
> .media
|
||||
> img
|
||||
display block
|
||||
|
@ -9,7 +9,7 @@ export type TextElementTitle = {
|
||||
};
|
||||
|
||||
export default function(text: string) {
|
||||
const match = text.match(/^【(.+?)】\n/);
|
||||
const match = text.match(/^(【|\[)(.+?)(】|])\n/);
|
||||
if (!match) return null;
|
||||
const title = match[0];
|
||||
return {
|
||||
|
@ -2,6 +2,8 @@ import renderImage from './image';
|
||||
import renderKey from './key';
|
||||
import config from '../../../config';
|
||||
import { ILocalUser } from '../../../models/user';
|
||||
import toHtml from '../../../mfm/html';
|
||||
import parse from '../../../mfm/parse';
|
||||
|
||||
export default (user: ILocalUser) => {
|
||||
const id = `${config.url}/users/${user._id}`;
|
||||
@ -15,7 +17,7 @@ export default (user: ILocalUser) => {
|
||||
url: `${config.url}/@${user.username}`,
|
||||
preferredUsername: user.username,
|
||||
name: user.name,
|
||||
summary: user.description,
|
||||
summary: toHtml(parse(user.description)),
|
||||
icon: user.avatarId && renderImage(user.avatarId),
|
||||
image: user.bannerId && renderImage(user.bannerId),
|
||||
manuallyApprovesFollowers: user.isLocked,
|
||||
|
@ -26,9 +26,9 @@ type Type = 'reply' | 'renote' | 'quote' | 'mention';
|
||||
*/
|
||||
class NotificationManager {
|
||||
private notifier: IUser;
|
||||
private note: any;
|
||||
private note: INote;
|
||||
|
||||
constructor(notifier: IUser, note: any) {
|
||||
constructor(notifier: IUser, note: INote) {
|
||||
this.notifier = notifier;
|
||||
this.note = note;
|
||||
}
|
||||
@ -192,7 +192,7 @@ export default async (user: IUser, data: {
|
||||
// Serialize
|
||||
const noteObj = await pack(note);
|
||||
|
||||
const nm = new NotificationManager(user, noteObj);
|
||||
const nm = new NotificationManager(user, note);
|
||||
|
||||
const render = async () => {
|
||||
const content = data.renote && data.text == null
|
||||
|
12
test/mfm.ts
12
test/mfm.ts
@ -115,6 +115,18 @@ describe('Text', () => {
|
||||
{ type: 'search', content: 'a b c SEARCH', query: 'a b c'}
|
||||
], tokens4);
|
||||
});
|
||||
|
||||
it('title', () => {
|
||||
const tokens1 = analyze('【yee】\nhaw');
|
||||
assert.deepEqual(
|
||||
{ type: 'title', content: '【yee】\n', title: 'yee'}
|
||||
, tokens1[0]);
|
||||
|
||||
const tokens2 = analyze('[yee]\nhaw');
|
||||
assert.deepEqual(
|
||||
{ type: 'title', content: '[yee]\n', title: 'yee'}
|
||||
, tokens2[0]);
|
||||
});
|
||||
});
|
||||
|
||||
describe('syntax highlighting', () => {
|
||||
|
Reference in New Issue
Block a user