From 162a74029534b83bd5d5a65b17dd17e42d72e543 Mon Sep 17 00:00:00 2001 From: syuilo <syuilotan@yahoo.co.jp> Date: Sun, 26 May 2019 00:38:26 +0900 Subject: [PATCH] Fix #4981 --- src/client/app/common/views/components/mfm.ts | 5 +---- src/client/app/common/views/components/url.vue | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/client/app/common/views/components/mfm.ts b/src/client/app/common/views/components/mfm.ts index 7de29b2aad..fa798504c7 100644 --- a/src/client/app/common/views/components/mfm.ts +++ b/src/client/app/common/views/components/mfm.ts @@ -8,7 +8,7 @@ import { concat, sum } from '../../../../../prelude/array'; import MkFormula from './formula.vue'; import MkCode from './code.vue'; import MkGoogle from './google.vue'; -import { host, url } from '../../../config'; +import { host } from '../../../config'; import { preorderF, countNodesF } from '../../../../../prelude/tree'; function sumTextsLength(ts: MfmForest): number { @@ -175,9 +175,6 @@ export default Vue.component('misskey-flavored-markdown', { props: { url: token.node.props.url, rel: 'nofollow noopener', - ...(token.node.props.url.startsWith(url) ? {} : { - target: '_blank' - }) }, attrs: { style: 'color:var(--mfmUrl);' diff --git a/src/client/app/common/views/components/url.vue b/src/client/app/common/views/components/url.vue index 2829812f99..078c816523 100644 --- a/src/client/app/common/views/components/url.vue +++ b/src/client/app/common/views/components/url.vue @@ -1,5 +1,5 @@ <template> -<component :is="self ? 'router-link' : 'a'" class="mk-url" :[attr]="self ? url.substr(local.length) : url" :rel="rel" :target="target"> +<component :is="hasRoute ? 'router-link' : 'a'" class="mk-url" :[attr]="hasRoute ? url.substr(local.length) : url" :rel="rel" :target="target"> <template v-if="!self"> <span class="schema">{{ schema }}//</span> <span class="hostname">{{ hostname }}</span> @@ -8,7 +8,7 @@ <span class="pathname" v-if="pathname != ''">{{ self ? pathname.substr(1) : pathname }}</span> <span class="query">{{ query }}</span> <span class="hash">{{ hash }}</span> - <fa icon="external-link-square-alt" v-if="!self"/> + <fa icon="external-link-square-alt" v-if="target === '_blank'"/> </component> </template> @@ -18,8 +18,13 @@ import { toUnicode as decodePunycode } from 'punycode'; import { url as local } from '../../../config'; export default Vue.extend({ - props: ['url', 'rel', 'target'], + props: ['url', 'rel'], data() { + const isSelf = this.url.startsWith(local); + const hasRoute = + this.url.substr(local.length).startsWith('/@') || + this.url.substr(local.length).startsWith('/notes/') || + this.url.substr(local.length).startsWith('/pages/'); return { local, schema: null, @@ -28,8 +33,10 @@ export default Vue.extend({ pathname: null, query: null, hash: null, - self: this.url.startsWith(local), - attr: this.url.startsWith(local) ? 'to' : 'href' + self: isSelf, + hasRoute: hasRoute, + attr: hasRoute ? 'to' : 'href', + target: hasRoute ? null : '_blank' }; }, created() {