|
@@ -8,6 +8,7 @@ import Report from '../report/report.vue'
|
|
|
import UserLink from '../user_link/user_link.vue'
|
|
|
import RichContent from 'src/components/rich_content/rich_content.jsx'
|
|
|
import UserPopover from '../user_popover/user_popover.vue'
|
|
|
+import ConfirmModal from '../confirm_modal/confirm_modal.vue'
|
|
|
import { isStatusNotification } from '../../services/notification_utils/notification_utils.js'
|
|
|
import { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js'
|
|
|
import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'
|
|
@@ -43,7 +44,9 @@ const Notification = {
|
|
|
return {
|
|
|
statusExpanded: false,
|
|
|
betterShadow: this.$store.state.interface.browserSupport.cssFilter,
|
|
|
- unmuted: false
|
|
|
+ unmuted: false,
|
|
|
+ showingApproveConfirmDialog: false,
|
|
|
+ showingDenyConfirmDialog: false
|
|
|
}
|
|
|
},
|
|
|
props: ['notification'],
|
|
@@ -56,7 +59,8 @@ const Notification = {
|
|
|
Report,
|
|
|
RichContent,
|
|
|
UserPopover,
|
|
|
- UserLink
|
|
|
+ UserLink,
|
|
|
+ ConfirmModal
|
|
|
},
|
|
|
methods: {
|
|
|
toggleStatusExpanded () {
|
|
@@ -71,7 +75,26 @@ const Notification = {
|
|
|
toggleMute () {
|
|
|
this.unmuted = !this.unmuted
|
|
|
},
|
|
|
+ showApproveConfirmDialog () {
|
|
|
+ this.showingApproveConfirmDialog = true
|
|
|
+ },
|
|
|
+ hideApproveConfirmDialog () {
|
|
|
+ this.showingApproveConfirmDialog = false
|
|
|
+ },
|
|
|
+ showDenyConfirmDialog () {
|
|
|
+ this.showingDenyConfirmDialog = true
|
|
|
+ },
|
|
|
+ hideDenyConfirmDialog () {
|
|
|
+ this.showingDenyConfirmDialog = false
|
|
|
+ },
|
|
|
approveUser () {
|
|
|
+ if (this.shouldConfirmApprove) {
|
|
|
+ this.showApproveConfirmDialog()
|
|
|
+ } else {
|
|
|
+ this.doApprove()
|
|
|
+ }
|
|
|
+ },
|
|
|
+ doApprove () {
|
|
|
this.$store.state.api.backendInteractor.approveUser({ id: this.user.id })
|
|
|
this.$store.dispatch('removeFollowRequest', this.user)
|
|
|
this.$store.dispatch('markSingleNotificationAsSeen', { id: this.notification.id })
|
|
@@ -83,6 +106,13 @@ const Notification = {
|
|
|
})
|
|
|
},
|
|
|
denyUser () {
|
|
|
+ if (this.shouldConfirmDeny) {
|
|
|
+ this.showDenyConfirmDialog()
|
|
|
+ } else {
|
|
|
+ this.doDeny()
|
|
|
+ }
|
|
|
+ },
|
|
|
+ doDeny () {
|
|
|
this.$store.state.api.backendInteractor.denyUser({ id: this.user.id })
|
|
|
.then(() => {
|
|
|
this.$store.dispatch('dismissNotificationLocal', { id: this.notification.id })
|
|
@@ -117,6 +147,15 @@ const Notification = {
|
|
|
isStatusNotification () {
|
|
|
return isStatusNotification(this.notification.type)
|
|
|
},
|
|
|
+ mergedConfig () {
|
|
|
+ return this.$store.getters.mergedConfig
|
|
|
+ },
|
|
|
+ shouldConfirmApprove () {
|
|
|
+ return this.mergedConfig.modalOnApproveFollow
|
|
|
+ },
|
|
|
+ shouldConfirmDeny () {
|
|
|
+ return this.mergedConfig.modalOnDenyFollow
|
|
|
+ },
|
|
|
...mapState({
|
|
|
currentUser: state => state.users.currentUser
|
|
|
})
|