akkoma-fe/src/components/account_actions/account_actions.js

84 lines
2.1 KiB
JavaScript
Raw Permalink Normal View History

2019-10-08 07:21:48 +00:00
import ProgressButton from '../progress_button/progress_button.vue'
2020-02-28 16:39:47 +00:00
import Popover from '../popover/popover.vue'
import ConfirmModal from '../confirm_modal/confirm_modal.vue'
import { library } from '@fortawesome/fontawesome-svg-core'
import { mapState } from 'vuex'
import {
faEllipsisV
} from '@fortawesome/free-solid-svg-icons'
library.add(
faEllipsisV
)
2019-10-08 07:21:48 +00:00
const AccountActions = {
props: [
2020-04-21 20:27:51 +00:00
'user', 'relationship'
2019-10-08 07:21:48 +00:00
],
data () {
return {
showingConfirmBlock: false
}
2019-10-08 07:21:48 +00:00
},
components: {
2020-02-28 16:39:47 +00:00
ProgressButton,
Popover,
ConfirmModal
2019-10-08 07:21:48 +00:00
},
methods: {
2022-11-18 13:49:57 +00:00
refetchRelationship () {
return this.$store.dispatch('fetchUserRelationship', this.user.id)
},
showConfirmBlock () {
this.showingConfirmBlock = true
},
hideConfirmBlock () {
this.showingConfirmBlock = false
},
2019-10-08 07:21:48 +00:00
showRepeats () {
this.$store.dispatch('showReblogs', this.user.id)
},
hideRepeats () {
this.$store.dispatch('hideReblogs', this.user.id)
},
blockUser () {
if (!this.shouldConfirmBlock) {
this.doBlockUser()
} else {
this.showConfirmBlock()
}
},
doBlockUser () {
2019-10-08 07:21:48 +00:00
this.$store.dispatch('blockUser', this.user.id)
this.hideConfirmBlock()
2019-10-08 07:21:48 +00:00
},
unblockUser () {
this.$store.dispatch('unblockUser', this.user.id)
},
removeUserFromFollowers () {
this.$store.dispatch('removeUserFromFollowers', this.user.id)
},
2019-10-08 07:21:48 +00:00
reportUser () {
this.$store.dispatch('openUserReportingModal', { userId: this.user.id })
2022-11-18 13:49:57 +00:00
},
muteDomain () {
this.$store.dispatch('muteDomain', this.user.screen_name.split('@')[1])
.then(() => this.refetchRelationship())
},
unmuteDomain () {
this.$store.dispatch('unmuteDomain', this.user.screen_name.split('@')[1])
.then(() => this.refetchRelationship())
2019-10-08 07:21:48 +00:00
}
},
computed: {
shouldConfirmBlock () {
return this.$store.getters.mergedConfig.modalOnBlock
},
...mapState({
pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable
})
2019-10-08 07:21:48 +00:00
}
}
export default AccountActions