2019-02-18 06:49:32 -08:00
|
|
|
import DialogModal from '../dialog_modal/dialog_modal.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: {
|
2019-07-11 05:33:10 -07:00
|
|
|
DialogModal
|
2019-02-18 06:49:32 -08:00
|
|
|
},
|
|
|
|
computed: {
|
|
|
|
tagsSet () {
|
|
|
|
return new Set(this.user.tags)
|
|
|
|
},
|
|
|
|
hasTagPolicy () {
|
|
|
|
return this.$store.state.instance.tagPolicyAvailable
|
|
|
|
}
|
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
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 }
|
2019-07-05 00:02:14 -07:00
|
|
|
store.commit('untagUser', { user: this.user, tag })
|
2019-02-18 06:49:32 -08:00
|
|
|
})
|
|
|
|
} else {
|
|
|
|
store.state.api.backendInteractor.tagUser(this.user, tag).then(response => {
|
|
|
|
if (!response.ok) { return }
|
2019-07-05 00:02:14 -07:00
|
|
|
store.commit('tagUser', { user: this.user, tag })
|
2019-02-18 06:49:32 -08:00
|
|
|
})
|
|
|
|
}
|
|
|
|
},
|
|
|
|
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 }
|
2019-07-05 00:02:14 -07:00
|
|
|
store.commit('updateRight', { user: this.user, right: right, value: false })
|
2019-02-18 06:49:32 -08:00
|
|
|
})
|
|
|
|
} else {
|
|
|
|
store.state.api.backendInteractor.addRight(this.user, right).then(response => {
|
|
|
|
if (!response.ok) { return }
|
2019-07-05 00:02:14 -07:00
|
|
|
store.commit('updateRight', { user: this.user, right: right, value: true })
|
2019-02-18 06:49:32 -08:00
|
|
|
})
|
|
|
|
}
|
|
|
|
},
|
|
|
|
toggleActivationStatus () {
|
|
|
|
const store = this.$store
|
|
|
|
const status = !!this.user.deactivated
|
|
|
|
store.state.api.backendInteractor.setActivationStatus(this.user, status).then(response => {
|
|
|
|
if (!response.ok) { return }
|
2019-07-05 00:02:14 -07:00
|
|
|
store.commit('updateActivationStatus', { user: this.user, status: status })
|
2019-02-18 06:49:32 -08:00
|
|
|
})
|
|
|
|
},
|
|
|
|
deleteUserDialog (show) {
|
|
|
|
this.showDeleteUserDialog = show
|
|
|
|
},
|
|
|
|
deleteUser () {
|
|
|
|
const store = this.$store
|
|
|
|
const user = this.user
|
2019-07-05 00:02:14 -07:00
|
|
|
const { id, name } = user
|
2019-02-18 06:49:32 -08:00
|
|
|
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
|