github.com/keybase/client/go@v0.0.0-20240309051027-028f7c731f8b/teams/contact_restrictions.go (about)

     1  package teams
     2  
     3  import (
     4  	"github.com/keybase/client/go/libkb"
     5  	"github.com/keybase/client/go/protocol/keybase1"
     6  )
     7  
     8  type contactRestrictedUsers map[keybase1.UID]bool
     9  
    10  // checkCandidate checks if candidate (AddMemberCandidate from transactions.go)
    11  // is restricted by contact settings. If so, also a keybase1.User struct is
    12  // returned.
    13  func (c contactRestrictedUsers) checkCandidate(candidate AddMemberCandidate) (restricted bool, user keybase1.User) {
    14  	if c == nil {
    15  		return false, user
    16  	}
    17  	if upak := candidate.KeybaseUser; upak != nil {
    18  		if _, ok := c[upak.Uid]; ok {
    19  			// Skip users with contact setting restrictions.
    20  			user = keybase1.User{
    21  				Uid:      upak.Uid,
    22  				Username: libkb.NewNormalizedUsername(upak.Username).String(),
    23  			}
    24  			return true, user
    25  		}
    26  	}
    27  	return false, user
    28  }
    29  
    30  func unpackContactRestrictedUsers(blockError libkb.TeamContactSettingsBlockError) (ret contactRestrictedUsers) {
    31  	uids := blockError.BlockedUIDs()
    32  	ret = make(contactRestrictedUsers, len(uids))
    33  	for _, uid := range uids {
    34  		ret[uid] = true
    35  	}
    36  	return ret
    37  }