b619477573
* upstream/develop: (51 commits) toggle_activation api is also deprecated use vuex action refactor toggleActivationStatus replace setActivationStatus api with new one use flex for stickers i18n/update-ja_easy Use a centralized fallback for missing values and use instance.federating instead of instance.federation.enabled Add fallback in case BE does not report federating status in nodeinfo The value we are looking for is federationPolicy.enabled, not federationPolicy.federating Logic should be to hide TWKN if not federating OR if instance is not public Finally trust eslint More lint More lint Lint mfa: removed unused code increase icon width a little bit in the nav panel add icons to nav panel Revert "Merge branch 'revert-96cab6d8' into 'develop'" Support "native" captcha Revert "Merge branch 'oauth-extra-scopes' into 'develop'" ...
96 lines
2.9 KiB
JavaScript
96 lines
2.9 KiB
JavaScript
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: {
|
|
DialogModal
|
|
},
|
|
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({ user: this.user, tag }).then(response => {
|
|
if (!response.ok) { return }
|
|
store.commit('untagUser', { user: this.user, tag })
|
|
})
|
|
} else {
|
|
store.state.api.backendInteractor.tagUser({ user: 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({ user: this.user, right }).then(response => {
|
|
if (!response.ok) { return }
|
|
store.commit('updateRight', { user: this.user, right, value: false })
|
|
})
|
|
} else {
|
|
store.state.api.backendInteractor.addRight({ user: this.user, right }).then(response => {
|
|
if (!response.ok) { return }
|
|
store.commit('updateRight', { user: this.user, right, value: true })
|
|
})
|
|
}
|
|
},
|
|
toggleActivationStatus () {
|
|
this.$store.dispatch('toggleActivationStatus', { user: this.user })
|
|
},
|
|
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
|