diff --git a/src/components/settings_modal/tabs/general_tab.js b/src/components/settings_modal/tabs/general_tab.js index df28a23e3..7074a6d81 100644 --- a/src/components/settings_modal/tabs/general_tab.js +++ b/src/components/settings_modal/tabs/general_tab.js @@ -5,9 +5,12 @@ import IntegerSetting from '../helpers/integer_setting.vue' import FloatSetting from '../helpers/float_setting.vue' import UnitSetting from '../helpers/unit_setting.vue' import InterfaceLanguageSwitcher from 'src/components/interface_language_switcher/interface_language_switcher.vue' +import Select from 'src/components/select/select.vue' import SharedComputedObject from '../helpers/shared_computed_object.js' import ProfileSettingIndicator from '../helpers/profile_setting_indicator.vue' + +import { mapState } from 'vuex' import { clearCache, cacheKey, emojiCacheKey } from 'src/services/sw/sw.js' import { library } from '@fortawesome/fontawesome-svg-core' import { @@ -56,6 +59,11 @@ const GeneralTab = { value: mode, label: this.$t(`settings.unsaved_post_action_${mode}`) })), + muteBlockLv1Options: ['ask', 'forever', 'temporarily'].map(mode => ({ + key: mode, + value: mode, + label: this.$t(`user_card.mute_block_${mode}`) + })), loopSilentAvailable: // Firefox Object.getOwnPropertyDescriptor(HTMLVideoElement.prototype, 'mozHasAudio') || @@ -73,12 +81,47 @@ const GeneralTab = { UnitSetting, InterfaceLanguageSwitcher, ScopeSelector, - ProfileSettingIndicator + ProfileSettingIndicator, + Select }, computed: { postFormats () { return this.$store.state.instance.postFormats || [] }, + onMuteDefaultActionLv1: { + get () { + const value = this.$store.state.config.onMuteDefaultAction + if (value === 'ask' || value === 'forever') { + return value + } else { + return 'temporarily' + } + }, + set (value) { + let realValue = value + if (value !== 'ask' && value !== 'forever') { + realValue = '14d' + } + this.$store.dispatch('setOption', { name: 'onMuteDefaultAction', value: realValue }) + } + }, + onBlockDefaultActionLv1: { + get () { + const value = this.$store.state.config.onBlockDefaultAction + if (value === 'ask' || value === 'forever') { + return value + } else { + return 'temporarily' + } + }, + set (value) { + let realValue = value + if (value !== 'ask' && value !== 'forever') { + realValue = '14d' + } + this.$store.dispatch('setOption', { name: 'onBlockDefaultAction', value: realValue }) + } + }, postContentOptions () { return this.postFormats.map(format => ({ key: format, @@ -94,7 +137,10 @@ const GeneralTab = { }, instanceShoutboxPresent () { return this.$store.state.instance.shoutAvailable }, instanceSpecificPanelPresent () { return this.$store.state.instance.showInstanceSpecificPanel }, - ...SharedComputedObject() + ...SharedComputedObject(), + ...mapState({ + blockExpirationSupported: state => state.instance.blockExpiration + }) }, methods: { changeDefaultScope (value) { diff --git a/src/components/settings_modal/tabs/general_tab.vue b/src/components/settings_modal/tabs/general_tab.vue index b8da782fb..648d7ac84 100644 --- a/src/components/settings_modal/tabs/general_tab.vue +++ b/src/components/settings_modal/tabs/general_tab.vue @@ -69,6 +69,66 @@ {{ $t('settings.user_popover_avatar_overlay') }} +