summaryrefslogtreecommitdiff
path: root/src/client/app
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2019-05-24 18:11:33 +0900
committersyuilo <syuilotan@yahoo.co.jp>2019-05-24 18:11:33 +0900
commit358bb0fc0641e43d3a7452614f5ef43c19c4d2e6 (patch)
treeb1026bdfc2e82e4da5770d8a9634224c1272c6e6 /src/client/app
parentUpdate page-editor.vue (diff)
downloadsharkey-358bb0fc0641e43d3a7452614f5ef43c19c4d2e6.tar.gz
sharkey-358bb0fc0641e43d3a7452614f5ef43c19c4d2e6.tar.bz2
sharkey-358bb0fc0641e43d3a7452614f5ef43c19c4d2e6.zip
Misskey Pages でURLプレビューを表示するように
Diffstat (limited to 'src/client/app')
-rw-r--r--src/client/app/common/views/pages/page/page.text.vue21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/client/app/common/views/pages/page/page.text.vue b/src/client/app/common/views/pages/page/page.text.vue
index ca2565c8d4..326fd39050 100644
--- a/src/client/app/common/views/pages/page/page.text.vue
+++ b/src/client/app/common/views/pages/page/page.text.vue
@@ -1,11 +1,15 @@
<template>
<div class="mrdgzndn">
<mfm :text="text" :is-note="false" :i="$store.state.i" :key="text"/>
+
+ <mk-url-preview v-for="url in urls" :url="url" :key="url" class="url"/>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
+import { parse } from '../../../../../../mfm/parse';
+import { unique } from '../../../../../../prelude/array';
export default Vue.extend({
props: {
@@ -23,6 +27,20 @@ export default Vue.extend({
};
},
+ computed: {
+ urls(): string[] {
+ if (this.text) {
+ const ast = parse(this.text);
+ // TODO: 再帰的にURL要素がないか調べる
+ return unique(ast
+ .filter(t => ((t.node.type == 'url' || t.node.type == 'link') && t.node.props.url && !t.node.props.silent))
+ .map(t => t.node.props.url));
+ } else {
+ return [];
+ }
+ }
+ },
+
created() {
this.$watch('script.vars', () => {
this.text = this.script.interpolate(this.value.text);
@@ -38,4 +56,7 @@ export default Vue.extend({
&:not(:last-child)
margin-bottom 0.5em
+
+ > .url
+ margin 0.5em 0
</style>