Skip to content

Commit 1b697d1

Browse files
authored
use pointers for querying sender ID (#405)
For more details see matrix-org/dendrite#3164 Signed-off-by: `Sam Wedgwood <[email protected]>`
1 parent b5b0448 commit 1b697d1

File tree

3 files changed

+17
-5
lines changed

3 files changed

+17
-5
lines changed

performinvite.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,8 @@ func PerformInvite(ctx context.Context, input PerformInviteInput, fedClient Fede
9696
return nil, err
9797
}
9898

99-
if invitedSenderID != "" {
100-
err = abortIfAlreadyJoined(ctx, input.RoomID, invitedSenderID, input.MembershipQuerier)
99+
if invitedSenderID != nil {
100+
err = abortIfAlreadyJoined(ctx, input.RoomID, *invitedSenderID, input.MembershipQuerier)
101101
if err != nil {
102102
return nil, err
103103
}

performinvite_test.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,9 @@ import (
1313
"golang.org/x/crypto/ed25519"
1414
)
1515

16-
func SenderIDForUserTest(roomID spec.RoomID, userID spec.UserID) (spec.SenderID, error) {
17-
return spec.SenderID(userID.String()), nil
16+
func SenderIDForUserTest(roomID spec.RoomID, userID spec.UserID) (*spec.SenderID, error) {
17+
senderID := spec.SenderID(userID.String())
18+
return &senderID, nil
1819
}
1920

2021
func CreateSenderID(ctx context.Context, userID spec.UserID, roomID spec.RoomID, roomVersion string) (spec.SenderID, ed25519.PrivateKey, error) {

spec/senderid.go

+12-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import (
2323
type SenderID string
2424

2525
type UserIDForSender func(roomID RoomID, senderID SenderID) (*UserID, error)
26-
type SenderIDForUser func(roomID RoomID, userID UserID) (SenderID, error)
26+
type SenderIDForUser func(roomID RoomID, userID UserID) (*SenderID, error)
2727

2828
// CreateSenderID is a function used to create the pseudoID private key.
2929
type CreateSenderID func(ctx context.Context, userID UserID, roomID RoomID, roomVersion string) (SenderID, ed25519.PrivateKey, error)
@@ -42,3 +42,14 @@ func (s SenderID) RawBytes() (res Base64Bytes, err error) {
4242
}
4343
return res, nil
4444
}
45+
46+
func (s SenderID) IsUserID() bool {
47+
// Key is base64, @ is not a valid base64 char
48+
// So if string starts with @, then this sender ID must
49+
// be a user ID
50+
return string(s)[0] == '@'
51+
}
52+
53+
func (s SenderID) IsPseudoID() bool {
54+
return !s.IsUserID()
55+
}

0 commit comments

Comments
 (0)