From 84a5c6f893906d8e40bbc49d16207e5a747a001a Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Sun, 3 Apr 2022 22:18:33 +0200 Subject: [PATCH] Directly load the group in OrganizerPickerWrapper if we have the group ID Fixes #997 Signed-off-by: Thomas Citharel --- .../Event/OrganizerPickerWrapper.vue | 31 ++++++++++--------- js/src/graphql/actor.ts | 24 ++++++++++++++ 2 files changed, 40 insertions(+), 15 deletions(-) diff --git a/js/src/components/Event/OrganizerPickerWrapper.vue b/js/src/components/Event/OrganizerPickerWrapper.vue index 1e7161571..20f59c7ff 100644 --- a/js/src/components/Event/OrganizerPickerWrapper.vue +++ b/js/src/components/Event/OrganizerPickerWrapper.vue @@ -148,7 +148,7 @@ import EmptyContent from "../Utils/EmptyContent.vue"; import { CURRENT_ACTOR_CLIENT, IDENTITIES, - LOGGED_USER_MEMBERSHIPS, + PERSON_GROUP_MEMBERSHIPS, } from "../../graphql/actor"; import { Paginate } from "../../types/paginate"; import { GROUP_MEMBERS } from "@/graphql/member"; @@ -184,15 +184,17 @@ const MEMBER_ROLES = [ }, }, currentActor: CURRENT_ACTOR_CLIENT, - userMemberships: { - query: LOGGED_USER_MEMBERSHIPS, + personMemberships: { + query: PERSON_GROUP_MEMBERSHIPS, variables() { return { + id: this.currentActor?.id, page: 1, limit: 10, + groupId: this.$route.query?.actorId, }; }, - update: (data) => data.loggedUser.memberships, + update: (data) => data.person.memberships, }, identities: IDENTITIES, }, @@ -202,6 +204,9 @@ export default class OrganizerPickerWrapper extends Vue { @Prop({ default: true, type: Boolean }) inline!: boolean; + @Prop({ type: Array, required: false, default: () => [] }) + contacts!: IActor[]; + currentActor!: IPerson; identities!: IPerson[]; @@ -212,13 +217,11 @@ export default class OrganizerPickerWrapper extends Vue { usernameWithDomain = usernameWithDomain; - @Prop({ type: Array, required: false, default: () => [] }) - contacts!: IActor[]; members: Paginate = { elements: [], total: 0 }; membersPage = 1; - userMemberships: Paginate = { elements: [], total: 0 }; + personMemberships: Paginate = { elements: [], total: 0 }; data(): Record { return { @@ -241,15 +244,13 @@ export default class OrganizerPickerWrapper extends Vue { this.contactFilter = contactFilter; } - @Watch("userMemberships") + @Watch("personMemberships") setInitialActor(): void { - if (this.$route.query?.actorId) { - const actorId = this.$route.query?.actorId as string; - const actor = this.userMemberships.elements.find( - ({ parent: { id }, role }) => - actorId === id && MEMBER_ROLES.includes(role) - )?.parent as IActor; - this.selectedActor = actor; + if ( + this.personMemberships?.elements[0]?.parent?.id === + this.$route.query?.actorId + ) { + this.selectedActor = this.personMemberships?.elements[0]?.parent; } } diff --git a/js/src/graphql/actor.ts b/js/src/graphql/actor.ts index 962611c14..004da0813 100644 --- a/js/src/graphql/actor.ts +++ b/js/src/graphql/actor.ts @@ -351,6 +351,30 @@ export const PERSON_STATUS_GROUP = gql` ${ACTOR_FRAGMENT} `; +export const PERSON_GROUP_MEMBERSHIPS = gql` + query PersonGroupMemberships($id: ID!, $groupId: ID!) { + person(id: $id) { + id + memberships(groupId: $groupId) { + total + elements { + id + role + parent { + ...ActorFragment + } + invitedBy { + ...ActorFragment + } + insertedAt + updatedAt + } + } + } + } + ${ACTOR_FRAGMENT} +`; + export const GROUP_MEMBERSHIP_SUBSCRIPTION_CHANGED = gql` subscription GroupMembershipSubscriptionChanged( $actorId: ID!