fix: prevents re-creating locations and labels when someone joins group (#262)

* closes #258

* remove debug statement
This commit is contained in:
Hayden 2023-02-05 12:25:30 -09:00 committed by GitHub
parent bd06fdafaf
commit 504569bed0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 19 deletions

View file

@ -51,15 +51,17 @@ func (svc *UserService) RegisterUser(ctx context.Context, data UserRegistration)
Msg("Registering new user") Msg("Registering new user")
var ( var (
err error err error
group repo.Group group repo.Group
token repo.GroupInvitation token repo.GroupInvitation
isOwner = false
// creatingGroup is true if the user is creating a new group.
creatingGroup = false
) )
switch data.GroupToken { switch data.GroupToken {
case "": case "":
isOwner = true creatingGroup = true
group, err = svc.repos.Groups.GroupCreate(ctx, "Home") group, err = svc.repos.Groups.GroupCreate(ctx, "Home")
if err != nil { if err != nil {
log.Err(err).Msg("Failed to create group") log.Err(err).Msg("Failed to create group")
@ -81,7 +83,7 @@ func (svc *UserService) RegisterUser(ctx context.Context, data UserRegistration)
Password: hashed, Password: hashed,
IsSuperuser: false, IsSuperuser: false,
GroupID: group.ID, GroupID: group.ID,
IsOwner: isOwner, IsOwner: creatingGroup,
} }
usr, err := svc.repos.Users.Create(ctx, usrCreate) usr, err := svc.repos.Users.Create(ctx, usrCreate)
@ -89,21 +91,24 @@ func (svc *UserService) RegisterUser(ctx context.Context, data UserRegistration)
return repo.UserOut{}, err return repo.UserOut{}, err
} }
for _, label := range defaultLabels() { // Create the default labels and locations for the group.
_, err := svc.repos.Labels.Create(ctx, group.ID, label) if creatingGroup {
if err != nil { for _, label := range defaultLabels() {
return repo.UserOut{}, err _, err := svc.repos.Labels.Create(ctx, group.ID, label)
if err != nil {
return repo.UserOut{}, err
}
}
for _, location := range defaultLocations() {
_, err := svc.repos.Locations.Create(ctx, group.ID, location)
if err != nil {
return repo.UserOut{}, err
}
} }
} }
for _, location := range defaultLocations() { // Decrement the invitation token if it was used.
_, err := svc.repos.Locations.Create(ctx, group.ID, location)
if err != nil {
return repo.UserOut{}, err
}
}
// Decrement the invitation token if it was used
if token.ID != uuid.Nil { if token.ID != uuid.Nil {
err = svc.repos.Groups.InvitationUpdate(ctx, token.ID, token.Uses-1) err = svc.repos.Groups.InvitationUpdate(ctx, token.ID, token.Uses-1)
if err != nil { if err != nil {

View file

@ -653,7 +653,7 @@ func (e *ItemsRepository) GetAllCustomFieldNames(ctx context.Context, GID uuid.U
var fields []st var fields []st
err := e.db.Debug().Item.Query(). err := e.db.Item.Query().
Where( Where(
item.HasGroupWith(group.ID(GID)), item.HasGroupWith(group.ID(GID)),
). ).