From 0a79a6564a50ea8d12a2ce9081a8e2225bb8005c Mon Sep 17 00:00:00 2001 From: syuilo <syuilotan@yahoo.co.jp> Date: Sun, 17 Feb 2019 01:04:21 +0900 Subject: [PATCH] Add support for disabled timeline to deck Close #4286 Resolve #4275 --- locales/ja-JP.yml | 3 ++ src/client/app/desktop/views/deck/deck.tl.vue | 36 +++++++++++++++++-- 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 1de9654f61..88d76a382e 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -1823,6 +1823,9 @@ deck: rename: "名前を変更" stack-left: "左に重ねる" pop-right: "右に出す" + disabled-timeline: + title: "無効化されたタイムライン" + description: "サーバーの運営者により、このタイムラインは使用できない状態に設定されています。" deck/deck.tl-column.vue: is-media-only: "メディア投稿のみ" diff --git a/src/client/app/desktop/views/deck/deck.tl.vue b/src/client/app/desktop/views/deck/deck.tl.vue index 4f5e3af197..16f268f2c1 100644 --- a/src/client/app/desktop/views/deck/deck.tl.vue +++ b/src/client/app/desktop/views/deck/deck.tl.vue @@ -1,14 +1,25 @@ <template> -<x-notes ref="timeline" :more="existMore ? more : null" :media-view="mediaView"/> +<div class="iwaalbte" v-if="disabled"> + <p> + <fa :icon="faMinusCircle"/> + {{ $t('disabled-timeline.title') }} + </p> + <p class="desc">{{ $t('disabled-timeline.description') }}</p> +</div> +<x-notes v-else ref="timeline" :more="existMore ? more : null" :media-view="mediaView"/> </template> <script lang="ts"> import Vue from 'vue'; import XNotes from './deck.notes.vue'; +import { faMinusCircle } from '@fortawesome/free-solid-svg-icons'; +import i18n from '../../../i18n'; const fetchLimit = 10; export default Vue.extend({ + i18n: i18n('deck'), + components: { XNotes }, @@ -36,7 +47,9 @@ export default Vue.extend({ fetching: true, moreFetching: false, existMore: false, - connection: null + connection: null, + disabled: false, + faMinusCircle }; }, @@ -75,6 +88,12 @@ export default Vue.extend({ this.connection.on('unfollow', this.onChangeFollowing); } + this.$root.getMeta().then(meta => { + this.disabled = !this.$store.state.i.isModerator && !this.$store.state.i.isAdmin && ( + meta.disableLocalTimeline && ['local', 'hybrid'].includes(this.src) || + meta.disableGlobalTimeline && ['global'].includes(this.src)); + }); + this.fetch(); }, @@ -149,3 +168,16 @@ export default Vue.extend({ } }); </script> + +<style lang="stylus" scoped> +.iwaalbte + color var(--text) + text-align center + + > p + margin 16px + + &.desc + font-size 14px + +</style>