import DialogModal from '../dialog_modal/dialog_modal.vue' import Popper from 'vue-popperjs/src/component/popper.js.vue' const FORCE_NSFW = 'mrf_tag:media-force-nsfw' const STRIP_MEDIA = 'mrf_tag:media-strip' const FORCE_UNLISTED = 'mrf_tag:force-unlisted' const DISABLE_REMOTE_SUBSCRIPTION = 'mrf_tag:disable-remote-subscription' const DISABLE_ANY_SUBSCRIPTION = 'mrf_tag:disable-any-subscription' const SANDBOX = 'mrf_tag:sandbox' const QUARANTINE = 'mrf_tag:quarantine' const ModerationTools = { props: [ 'user' ], data () { return { showDropDown: false, tags: { FORCE_NSFW, STRIP_MEDIA, FORCE_UNLISTED, DISABLE_REMOTE_SUBSCRIPTION, DISABLE_ANY_SUBSCRIPTION, SANDBOX, QUARANTINE }, showDeleteUserDialog: false } }, components: { DialogModal, Popper }, computed: { tagsSet () { return new Set(this.user.tags) }, hasTagPolicy () { return this.$store.state.instance.tagPolicyAvailable } }, methods: { toggleMenu () { this.showDropDown = !this.showDropDown }, hasTag (tagName) { return this.tagsSet.has(tagName) }, toggleTag (tag) { const store = this.$store if (this.tagsSet.has(tag)) { store.state.api.backendInteractor.untagUser(this.user, tag).then(response => { if (!response.ok) { return } store.commit('untagUser', { user: this.user, tag }) }) } else { store.state.api.backendInteractor.tagUser(this.user, tag).then(response => { if (!response.ok) { return } store.commit('tagUser', { user: this.user, tag }) }) } }, toggleRight (right) { const store = this.$store if (this.user.rights[right]) { store.state.api.backendInteractor.deleteRight(this.user, right).then(response => { if (!response.ok) { return } store.commit('updateRight', { user: this.user, right: right, value: false }) }) } else { store.state.api.backendInteractor.addRight(this.user, right).then(response => { if (!response.ok) { return } store.commit('updateRight', { user: this.user, right: right, value: true }) }) } }, toggleActivationStatus () { const store = this.$store const status = !!this.user.deactivated store.state.api.backendInteractor.setActivationStatus(this.user, status).then(response => { if (!response.ok) { return } store.commit('updateActivationStatus', { user: this.user, status: status }) }) }, deleteUserDialog (show) { this.showDeleteUserDialog = show }, deleteUser () { const store = this.$store const user = this.user const { id, name } = user store.state.api.backendInteractor.deleteUser(user) .then(e => { this.$store.dispatch('markStatusesAsDeleted', status => user.id === status.user.id) const isProfile = this.$route.name === 'external-user-profile' || this.$route.name === 'user-profile' const isTargetUser = this.$route.params.name === name || this.$route.params.id === id if (isProfile && isTargetUser) { window.history.back() } }) } } } export default ModerationTools