From 15a41e31b0514623f1db6cc99cc61c49dbde2de9 Mon Sep 17 00:00:00 2001 From: syuilo <Syuilotan@yahoo.co.jp> Date: Thu, 6 Feb 2020 23:12:27 +0900 Subject: [PATCH] Fix #5856 --- locales/ja-JP.yml | 1 + src/client/pages/share.vue | 76 ++++++++++++++++++++++++++++++++++++++ src/client/router.ts | 1 + 3 files changed, 78 insertions(+) create mode 100644 src/client/pages/share.vue diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index b388a3c6c8..cb5e5d7572 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -351,6 +351,7 @@ posted: "投稿しました" autoReloadWhenDisconnected: "サーバー切断時に自動リロード" autoNoteWatch: "ノートの自動ウォッチ" reduceUiAnimation: "UIのアニメーションを減らす" +share: "共有" _2fa: registerDevice: "デバイスを登録" diff --git a/src/client/pages/share.vue b/src/client/pages/share.vue new file mode 100644 index 0000000000..07bb70737f --- /dev/null +++ b/src/client/pages/share.vue @@ -0,0 +1,76 @@ +<template> +<div class=""> + <portal to="icon"><fa :icon="faShareAlt"/></portal> + <portal to="title">{{ $t('share') }}</portal> + + <section class="_card"> + <div class="_title" v-if="title">{{ title }}</div> + <div class="_content"> + <div>{{ text }}</div> + <mk-button @click="post()">{{ $t('post') }}</mk-button> + </div> + <div class="_footer" v-if="url">{{ url }}</div> + </section> +</div> +</template> + +<script lang="ts"> +import Vue from 'vue'; +import { faShareAlt } from '@fortawesome/free-solid-svg-icons'; +import i18n from '../i18n'; +import PostFormDialog from '../components/post-form-dialog.vue'; +import MkButton from '../components/ui/button.vue'; + +export default Vue.extend({ + i18n, + + metaInfo() { + return { + title: this.$t('share') as string + }; + }, + + components: { + MkButton + }, + + data() { + return { + title: null, + text: null, + url: null, + faShareAlt + } + }, + + created() { + const urlParams = new URLSearchParams(window.location.search); + this.title = urlParams.get('title'); + this.text = urlParams.get('text'); + this.url = urlParams.get('url'); + }, + + mounted() { + this.post(); + }, + + methods: { + post() { + let text = ''; + if (this.title) text += `【${this.title}】\n`; + if (this.text) text += `${this.text}\n`; + if (this.url) text += `${this.url}`; + this.$root.new(PostFormDialog, { + instant: true, + initialText: text.trim() + }).$once('posted', () => { + alert('a'); + window.close(); + }); + } + } +}); +</script> + +<style lang="scss" scoped> +</style> diff --git a/src/client/router.ts b/src/client/router.ts index 16ab96dea4..70bc48c49e 100644 --- a/src/client/router.ts +++ b/src/client/router.ts @@ -52,6 +52,7 @@ export const router = new VueRouter({ { path: '/tags/:tag', component: page('tag') }, { path: '/auth/:token', component: page('auth') }, { path: '/authorize-follow', component: page('follow') }, + { path: '/share', component: page('share') }, /*{ path: '*', component: MkNotFound }*/ ], // なんかHacky