mirror of
https://github.com/Ocelot-Social-Community/Ocelot-Social.git
synced 2025-12-13 07:46:06 +00:00
Implement confirm modal for leaving a group
This commit is contained in:
parent
13727729a5
commit
ff8f3fed7a
@ -15,12 +15,13 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import { mapMutations } from 'vuex'
|
||||||
import { joinGroupMutation, leaveGroupMutation } from '~/graphql/groups'
|
import { joinGroupMutation, leaveGroupMutation } from '~/graphql/groups'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'JoinLeaveButton',
|
name: 'JoinLeaveButton',
|
||||||
props: {
|
props: {
|
||||||
groupId: { type: String, required: true },
|
group: { type: Object, required: true },
|
||||||
userId: { type: String, required: true },
|
userId: { type: String, required: true },
|
||||||
isMember: { type: Boolean, required: true },
|
isMember: { type: Boolean, required: true },
|
||||||
disabled: { type: Boolean, default: false },
|
disabled: { type: Boolean, default: false },
|
||||||
@ -58,12 +59,54 @@ export default {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
...mapMutations({
|
||||||
|
commitModalData: 'modal/SET_OPEN',
|
||||||
|
}),
|
||||||
onHover() {
|
onHover() {
|
||||||
if (!this.disabled && !this.localLoading) {
|
if (!this.disabled && !this.localLoading) {
|
||||||
this.hovered = true
|
this.hovered = true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async toggle() {
|
toggle() {
|
||||||
|
if (this.isMember) {
|
||||||
|
this.openLeaveModal()
|
||||||
|
} else {
|
||||||
|
this.joinLeave()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
openLeaveModal() {
|
||||||
|
this.commitModalData(this.leaveModalData())
|
||||||
|
},
|
||||||
|
leaveModalData() {
|
||||||
|
return {
|
||||||
|
name: 'confirm',
|
||||||
|
data: {
|
||||||
|
type: '',
|
||||||
|
resource: { id: '' },
|
||||||
|
modalData: {
|
||||||
|
titleIdent: 'group.leaveModal.title',
|
||||||
|
messageIdent: 'group.leaveModal.message',
|
||||||
|
messageParams: {
|
||||||
|
name: this.group.name,
|
||||||
|
},
|
||||||
|
buttons: {
|
||||||
|
confirm: {
|
||||||
|
danger: true,
|
||||||
|
icon: 'sign-out',
|
||||||
|
textIdent: 'group.leaveModal.confirmButton',
|
||||||
|
callback: this.joinLeave,
|
||||||
|
},
|
||||||
|
cancel: {
|
||||||
|
icon: 'close',
|
||||||
|
textIdent: 'actions.cancel',
|
||||||
|
callback: () => {},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async joinLeave() {
|
||||||
const join = !this.isMember
|
const join = !this.isMember
|
||||||
const mutation = join ? joinGroupMutation : leaveGroupMutation
|
const mutation = join ? joinGroupMutation : leaveGroupMutation
|
||||||
|
|
||||||
@ -73,7 +116,7 @@ export default {
|
|||||||
try {
|
try {
|
||||||
const { data } = await this.$apollo.mutate({
|
const { data } = await this.$apollo.mutate({
|
||||||
mutation,
|
mutation,
|
||||||
variables: { groupId: this.groupId, userId: this.userId },
|
variables: { groupId: this.group.id, userId: this.userId },
|
||||||
})
|
})
|
||||||
const joinedLeftGroupResult = join ? data.JoinGroup : data.LeaveGroup
|
const joinedLeftGroupResult = join ? data.JoinGroup : data.LeaveGroup
|
||||||
this.$emit('update', joinedLeftGroupResult)
|
this.$emit('update', joinedLeftGroupResult)
|
||||||
|
|||||||
@ -385,6 +385,11 @@
|
|||||||
"iAmMember": "Bin Mitglied",
|
"iAmMember": "Bin Mitglied",
|
||||||
"join": "Beitreten"
|
"join": "Beitreten"
|
||||||
},
|
},
|
||||||
|
"leaveModal": {
|
||||||
|
"confirmButton": "Verlassen",
|
||||||
|
"message": "Eine Gruppe zu verlassen ist möglicherweise nicht rückgängig zu machen!<br>Gruppe <b>„{name}“</b> verlassen!",
|
||||||
|
"title": "Möchtest du wirklich die Gruppe verlassen?"
|
||||||
|
},
|
||||||
"membersCount": "Mitglieder",
|
"membersCount": "Mitglieder",
|
||||||
"membersListTitle": "Gruppenmitglieder",
|
"membersListTitle": "Gruppenmitglieder",
|
||||||
"role": "Deine Rolle in der Gruppe",
|
"role": "Deine Rolle in der Gruppe",
|
||||||
|
|||||||
@ -385,6 +385,11 @@
|
|||||||
"iAmMember": "I'm a member",
|
"iAmMember": "I'm a member",
|
||||||
"join": "Join"
|
"join": "Join"
|
||||||
},
|
},
|
||||||
|
"leaveModal": {
|
||||||
|
"confirmButton": "Leave",
|
||||||
|
"message": "Leaving a group may be irreversible!<br>Leave group <b>“{name}”</b>!",
|
||||||
|
"title": "Do you really want to leave the group?"
|
||||||
|
},
|
||||||
"membersCount": "Members",
|
"membersCount": "Members",
|
||||||
"membersListTitle": "Group Members",
|
"membersListTitle": "Group Members",
|
||||||
"role": "Your role in the group",
|
"role": "Your role in the group",
|
||||||
|
|||||||
@ -91,7 +91,7 @@
|
|||||||
@update="updateFollow"
|
@update="updateFollow"
|
||||||
/> -->
|
/> -->
|
||||||
<join-leave-button
|
<join-leave-button
|
||||||
:groupId="group && group.id ? group.id : ''"
|
:group="group || {}"
|
||||||
:userId="currentUser.id"
|
:userId="currentUser.id"
|
||||||
:isMember="isGroupMember"
|
:isMember="isGroupMember"
|
||||||
:disabled="isGroupOwner"
|
:disabled="isGroupOwner"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user