feat(ui): implement new invitations menu, view, dialogs and management system #5585
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR introduces a complete invitations management system for team collaboration, separating invitation logic from the members module and providing a comprehensive UI for both managing and responding to namespace invitations.
🎯 Overview
✨ New Features
1. Invitations Store & API Layer
store/modules/invitations.ts- Centralized state management for invitationsstore/api/invitations.ts- Separated invitation-related API callsinterfaces/IInvitation.ts- Type definitions for invitation entitiesfetchUserPendingInvitationList- Get user's pending invitationsfetchNamespaceInvitationList- Get namespace's sent invitationsacceptInvitation/declineInvitation- Respond to invitationseditInvitation/cancelInvitation- Manage sent invitationssendInvitationEmail/generateInvitationLink- Create invitations2. User-Facing Invitations Menu
Component:
InvitationsMenu.vue- Dropdown menu in AppBar for pending invitationsFeatures:
Sub-Components:
InvitationsMenuItem.vue- Individual invitation item with expandable detailsInvitationAccept.vue- Accept invitation dialog with confirmationInvitationDecline.vue- Decline invitation dialog with warning3. Admin Invitations Management View
View:
TeamInvitations.vue- Full invitations management pageFeatures:
Component:
InvitationList.vue- DataTable for displaying invitationsAction Components:
InvitationEdit.vue- Edit invitation role (pending only)InvitationCancel.vue- Cancel invitation (pending only)InvitationResend.vue- Resend invitation (expired pending or cancelled)4. Utilities
utils/invitations.ts- Helper functions:isInvitationExpired- Check if invitation has expiredgetInvitationStatusFilter- Generate filter for API callsorderInvitationsByCreatedAt- Sort invitations by creation date🔄 Refactoring
Member Module
statusfield fromINamespaceMemberinterfaceMemberList.vuetableMemberInvite.vueto useinvitationsStoreinstead ofnamespacesStoreNamespaces Module
namespacesStore(sendEmailInvitation,generateInvitationLink,acceptInvite)INamespaceAddMember,INamespaceAcceptInvite)NamespaceInviteCard
invitationsStorefor accept/decline actions🧪 Testing
Comprehensive test suite following existing patterns:
InvitationsMenu.spec.ts- Menu drawer toggle, badge display, fetchingInvitationsMenuItem.spec.ts- Individual item display and eventsInvitationList.spec.ts- List rendering, loading, actions visibilityInvitationEdit.spec.ts- Edit functionality, success/error scenariosInvitationCancel.spec.ts- Cancel with proper API mockingInvitationResend.spec.ts- Resend for expired/cancelled invitations🎨 UX Improvements