fix: accept invites as an existing member is ok
PR #302 Closes https://github.com/ssb-ngi-pointer/go-ssb-room/issues/299. Co-authored-by: decentral1se <cellarspoon@riseup.net>
This commit is contained in:
parent
6f5edbaa43
commit
49aaff968f
|
@ -130,8 +130,13 @@ func (i Invites) Consume(ctx context.Context, token string, newMember refs.FeedR
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = i.members.add(ctx, tx, newMember, roomdb.RoleMember)
|
_, err = i.members.add(ctx, tx, newMember, roomdb.RoleMember)
|
||||||
|
var alreadyAdded roomdb.ErrAlreadyAdded
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
if errors.As(err, &alreadyAdded) && alreadyAdded.Ref.Equal(&newMember) {
|
||||||
|
// it is fine to use an invite twice
|
||||||
|
} else {
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// invalidate the invite for consumption
|
// invalidate the invite for consumption
|
||||||
|
|
|
@ -132,4 +132,21 @@ func TestInvites(t *testing.T) {
|
||||||
r.Error(err, "failed to consume the invite")
|
r.Error(err, "failed to consume the invite")
|
||||||
})
|
})
|
||||||
|
|
||||||
|
t.Run("invite member again", func(t *testing.T) {
|
||||||
|
r := require.New(t)
|
||||||
|
|
||||||
|
tok, err := db.Invites.Create(ctx, mid)
|
||||||
|
r.NoError(err, "failed to create invite token")
|
||||||
|
|
||||||
|
lst, err := db.Invites.List(ctx)
|
||||||
|
r.NoError(err, "failed to get list of tokens")
|
||||||
|
r.Len(lst, 1, "expected 1 invite")
|
||||||
|
|
||||||
|
_, err = db.Invites.Consume(ctx, tok, newMember)
|
||||||
|
r.NoError(err, "failed to consume the invite")
|
||||||
|
|
||||||
|
lst, err = db.Invites.List(ctx)
|
||||||
|
r.NoError(err, "failed to get list of tokens post consume")
|
||||||
|
r.Len(lst, 0, "expected no active invites")
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue