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)
|
||||
var alreadyAdded roomdb.ErrAlreadyAdded
|
||||
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
|
||||
|
|
|
@ -132,4 +132,21 @@ func TestInvites(t *testing.T) {
|
|||
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