feat: dedicated settings page for space
This commit is contained in:
parent
697b8879dd
commit
1b5c57704e
9 changed files with 516 additions and 0 deletions
|
|
@ -94,6 +94,19 @@ func (s *InviteService) AcceptInvite(token, userID string) (string, error) {
|
|||
return invite.SpaceID, s.inviteRepo.UpdateStatus(token, model.InvitationStatusAccepted)
|
||||
}
|
||||
|
||||
func (s *InviteService) CancelInvite(token string) error {
|
||||
invite, err := s.inviteRepo.GetByToken(token)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if invite.Status != model.InvitationStatusPending {
|
||||
return errors.New("invitation is not pending")
|
||||
}
|
||||
|
||||
return s.inviteRepo.Delete(token)
|
||||
}
|
||||
|
||||
func (s *InviteService) GetPendingInvites(spaceID string) ([]*model.SpaceInvitation, error) {
|
||||
// Filter for pending only in memory or repo?
|
||||
// Repo returns all.
|
||||
|
|
|
|||
|
|
@ -88,3 +88,25 @@ func (s *SpaceService) IsMember(userID, spaceID string) (bool, error) {
|
|||
}
|
||||
return isMember, nil
|
||||
}
|
||||
|
||||
// GetMembers returns all members of a space with their profile info.
|
||||
func (s *SpaceService) GetMembers(spaceID string) ([]*model.SpaceMemberWithProfile, error) {
|
||||
members, err := s.spaceRepo.GetMembers(spaceID)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to get members: %w", err)
|
||||
}
|
||||
return members, nil
|
||||
}
|
||||
|
||||
// RemoveMember removes a member from a space.
|
||||
func (s *SpaceService) RemoveMember(spaceID, userID string) error {
|
||||
return s.spaceRepo.RemoveMember(spaceID, userID)
|
||||
}
|
||||
|
||||
// UpdateSpaceName updates the name of a space.
|
||||
func (s *SpaceService) UpdateSpaceName(spaceID, name string) error {
|
||||
if name == "" {
|
||||
return fmt.Errorf("space name cannot be empty")
|
||||
}
|
||||
return s.spaceRepo.UpdateName(spaceID, name)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue