diff --git a/satellite/analytics/service.go b/satellite/analytics/service.go index e34d00870..3c22ef66c 100644 --- a/satellite/analytics/service.go +++ b/satellite/analytics/service.go @@ -90,6 +90,8 @@ const ( eventProjectInvitationDeclined = "Project Invitation Declined" eventGalleryViewClicked = "Gallery View Clicked" eventResendInviteClicked = "Resend Invite Clicked" + eventCopyInviteLinkClicked = "Copy Invite Link Clicked" + eventRemoveProjectMemberCLicked = "Remove Member Clicked" ) var ( @@ -159,8 +161,7 @@ func NewService(log *zap.Logger, config Config, satelliteName string) *Service { eventApplyNewCouponClicked, eventCreditCardRemoved, eventCouponCodeApplied, eventInvoiceDownloaded, eventCreditCardAddedFromBilling, eventStorjTokenAddedFromBilling, eventAddFundsClicked, eventProjectMembersInviteSent, eventError, eventProjectNameUpdated, eventProjectDescriptionUpdated, eventProjectStorageLimitUpdated, eventProjectBandwidthLimitUpdated, eventProjectInvitationAccepted, eventProjectInvitationDeclined, - eventGalleryViewClicked, eventResendInviteClicked, - } { + eventGalleryViewClicked, eventResendInviteClicked, eventRemoveProjectMemberCLicked, eventCopyInviteLinkClicked} { service.clientEvents[name] = true } diff --git a/web/satellite/src/api/projectMembers.ts b/web/satellite/src/api/projectMembers.ts index 491dfa692..fe511a8eb 100644 --- a/web/satellite/src/api/projectMembers.ts +++ b/web/satellite/src/api/projectMembers.ts @@ -107,6 +107,22 @@ export class ProjectMembersApiGql extends BaseGql implements ProjectMembersApi { throw new Error(result.error || 'Failed to send project invitations'); } + /** + * Get invite link for the specified project and email. + * + * @throws Error + */ + public async getInviteLink(projectID: string, email: string): Promise { + const path = `${this.ROOT_PATH}/${projectID}/invite-link?email=${email}`; + const httpResponse = await this.http.get(path); + + if (httpResponse.ok) { + return await httpResponse.json(); + } + + throw new Error('Can not get invite link'); + } + /** * Method for mapping project members page from json to ProjectMembersPage type. * diff --git a/web/satellite/src/components/team/ProjectMemberListItem.vue b/web/satellite/src/components/team/ProjectMemberListItem.vue index ca39d944b..4152748b4 100644 --- a/web/satellite/src/components/team/ProjectMemberListItem.vue +++ b/web/satellite/src/components/team/ProjectMemberListItem.vue @@ -8,33 +8,96 @@ :selectable="true" :select-disabled="isProjectOwner" :selected="model.isSelected()" - :on-click="(_) => $emit('memberClick', model)" - @selectClicked="($event) => $emit('selectClicked', $event)" - /> + :on-click="(_) => emit('memberClick', model)" + class="project-member-item" + @selectClicked="(_) => emit('selectClick', model)" + > + +