diff --git a/website/client/components/challenges/challengeDetail.vue b/website/client/components/challenges/challengeDetail.vue index 7464cb16bc..62a429f64c 100644 --- a/website/client/components/challenges/challengeDetail.vue +++ b/website/client/components/challenges/challengeDetail.vue @@ -344,14 +344,14 @@ export default { this.tasksByType[task.type].splice(index, 1); }, showMemberModal () { - // @TODO: Change these to options and add a custom event to members modal - this.$store.state.memberModalOptions.challengeId = this.challenge._id; - this.$store.state.memberModalOptions.groupId = 'challenge'; // @TODO: change these terrible settings - this.$store.state.memberModalOptions.group = this.group; - this.$store.state.memberModalOptions.memberCount = this.challenge.memberCount; - this.$store.state.memberModalOptions.viewingMembers = this.members; - this.$store.state.memberModalOptions.fetchMoreMembers = this.loadMembers; - this.$root.$emit('bv::show::modal', 'members-modal'); + this.$root.$emit('habitica:show-member-modal', { + challengeId: this.challenge._id, + groupId: 'challenge', // @TODO: change these terrible settings + group: this.group, + memberCount: this.challenge.memberCount, + viewingMembers: this.members, + fetchMoreMembers: this.loadMembers, + }); }, async joinChallenge () { this.user.challenges.push(this.searchId); diff --git a/website/client/components/groups/group.vue b/website/client/components/groups/group.vue index 018b93e064..9fa954da0f 100644 --- a/website/client/components/groups/group.vue +++ b/website/client/components/groups/group.vue @@ -126,7 +126,7 @@ .sidebar { background-color: $gray-600; padding-bottom: 2em; - + } .buttons-wrapper { @@ -426,12 +426,13 @@ export default { return this.$store.dispatch('members:getGroupMembers', payload); }, showMemberModal () { - this.$store.state.memberModalOptions.groupId = this.group._id; - this.$store.state.memberModalOptions.group = this.group; - this.$store.state.memberModalOptions.memberCount = this.group.memberCount; - this.$store.state.memberModalOptions.viewingMembers = this.members; - this.$store.state.memberModalOptions.fetchMoreMembers = this.loadMembers; - this.$root.$emit('bv::show::modal', 'members-modal'); + this.$root.$emit('habitica:show-member-modal', { + groupId: this.group._id, + group: this.group, + memberCount: this.group.memberCount, + viewingMembers: this.members, + fetchMoreMembers: this.loadMembers, + }); }, fetchRecentMessages () { this.fetchGuild(); diff --git a/website/client/components/groups/membersModal.vue b/website/client/components/groups/membersModal.vue index 1ce8bc98af..011a9ec95b 100644 --- a/website/client/components/groups/membersModal.vue +++ b/website/client/components/groups/membersModal.vue @@ -278,7 +278,20 @@ export default { }; }, mounted () { - this.getMembers(); + this.$root.$on('habitica:show-member-modal', (data) => { + // @TODO: Remove store + this.$store.state.memberModalOptions.challengeId = data.challengeId; + this.$store.state.memberModalOptions.groupId = data.groupId; + this.$store.state.memberModalOptions.group = data.group; + this.$store.state.memberModalOptions.memberCount = data.memberCount; + this.$store.state.memberModalOptions.viewingMembers = data.viewingMembers; + this.$store.state.memberModalOptions.fetchMoreMembers = data.fetchMoreMembers; + this.$root.$emit('bv::show::modal', 'members-modal'); + this.getMembers(); + }); + }, + destroyed () { + this.$root.$off('habitica:show-member-modal'); }, computed: { ...mapState({user: 'user.data'}), @@ -363,6 +376,7 @@ export default { }); this.invites = invites; } + if (this.$store.state.memberModalOptions.viewingMembers.length > 0) { this.members = this.$store.state.memberModalOptions.viewingMembers; } diff --git a/website/client/components/header/index.vue b/website/client/components/header/index.vue index 4fa0e750cf..fb7e2965c0 100644 --- a/website/client/components/header/index.vue +++ b/website/client/components/header/index.vue @@ -176,11 +176,11 @@ export default { } }, showPartyMembers () { - // Set the party details for the members-modal component - this.$store.state.memberModalOptions.groupId = this.user.party._id; - this.$store.state.memberModalOptions.viewingMembers = this.partyMembers; - this.$store.state.memberModalOptions.group = this.user.party; - this.$root.$emit('bv::show::modal', 'members-modal'); + this.$root.$emit('habitica:show-member-modal', { + groupId: this.user.party._id, + viewingMembers: this.partyMembers, + group: this.user.party, + }); }, setPartyMembersWidth ($event) { if (this.currentWidth !== $event.width) {