Skip to content

Commit

Permalink
chore_: remove Light permission checks that are no longer needed (#5267)
Browse files Browse the repository at this point in the history
  • Loading branch information
jrainville authored May 31, 2024
1 parent 0a88ebd commit 64d2860
Show file tree
Hide file tree
Showing 3 changed files with 0 additions and 121 deletions.
85 changes: 0 additions & 85 deletions protocol/communities/manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -2703,17 +2703,6 @@ func (m *Manager) CheckPermissionToJoin(id []byte, addresses []gethcommon.Addres
return m.PermissionChecker.CheckPermissionToJoin(community, addresses)
}

// Light version of CheckPermissionToJoin, which does not use network requests.
// Instead of checking wallet balances it checks if there is an access to a member list of the community.
func (m *Manager) CheckPermissionToJoinLight(id []byte) (bool, error) {
community, err := m.GetByID(id)
if err != nil {
return false, err
}
meAsMember := community.GetMember(&m.identity.PublicKey)
return meAsMember != nil, nil
}

func (m *Manager) accountsSatisfyPermissionsToJoin(
communityPermissionsPreParsedData map[protobuf.CommunityTokenPermission_Type]*PreParsedCommunityPermissionsData,
accountsAndChainIDs []*AccountChainIDsCombination) (bool, protobuf.CommunityMember_Roles, error) {
Expand Down Expand Up @@ -3286,59 +3275,6 @@ func (m *Manager) CheckChannelPermissions(communityID types.HexBytes, chatID str
return response, nil
}

func (m *Manager) checkChannelPermissionsLight(community *Community, communityChat *protobuf.CommunityChat, channelID string) *CheckChannelPermissionsResponse {

viewOnlyPermissions := community.ChannelTokenPermissionsByType(community.IDString()+channelID, protobuf.CommunityTokenPermission_CAN_VIEW_CHANNEL)
viewAndPostPermissions := community.ChannelTokenPermissionsByType(community.IDString()+channelID, protobuf.CommunityTokenPermission_CAN_VIEW_AND_POST_CHANNEL)

hasViewOnlyPermissions := len(viewOnlyPermissions) > 0
hasViewAndPostPermissions := len(viewAndPostPermissions) > 0

meAsMember := communityChat.Members[common.PubkeyToHex(&m.identity.PublicKey)]

viewSatisfied := !hasViewOnlyPermissions || (meAsMember != nil && meAsMember.GetChannelRole() == protobuf.CommunityMember_CHANNEL_ROLE_VIEWER)
postSatisfied := !hasViewAndPostPermissions || (meAsMember != nil && meAsMember.GetChannelRole() == protobuf.CommunityMember_CHANNEL_ROLE_POSTER)

finalViewSatisfied := computeViewOnlySatisfied(hasViewOnlyPermissions, hasViewAndPostPermissions, viewSatisfied, postSatisfied)
finalPostSatisfied := computeViewAndPostSatisfied(hasViewOnlyPermissions, hasViewAndPostPermissions, postSatisfied)

return &CheckChannelPermissionsResponse{
ViewOnlyPermissions: &CheckChannelViewOnlyPermissionsResult{
Satisfied: finalViewSatisfied,
Permissions: make(map[string]*PermissionTokenCriteriaResult),
},
ViewAndPostPermissions: &CheckChannelViewAndPostPermissionsResult{
Satisfied: finalPostSatisfied,
Permissions: make(map[string]*PermissionTokenCriteriaResult),
},
}
}

// Light version of CheckChannelPermissions, which does not use network requests.
// Instead of checking wallet balances it checks if there is an access to a member list of the chat.
func (m *Manager) CheckChannelPermissionsLight(communityID types.HexBytes, chatID string) (*CheckChannelPermissionsResponse, error) {
community, err := m.GetByID(communityID)
if err != nil {
return nil, err
}

// Remove communityID prefix from chatID if exists
if strings.HasPrefix(chatID, communityID.String()) {
chatID = strings.TrimPrefix(chatID, communityID.String())
}

if chatID == "" {
return nil, errors.New(fmt.Sprintf("couldn't check channel permissions, invalid chat id: %s", chatID))
}

communityChat, err := community.GetChat(chatID)
if err != nil {
return nil, err
}

return m.checkChannelPermissionsLight(community, communityChat, chatID), nil
}

type CheckChannelPermissionsResponse struct {
ViewOnlyPermissions *CheckChannelViewOnlyPermissionsResult `json:"viewOnlyPermissions"`
ViewAndPostPermissions *CheckChannelViewAndPostPermissionsResult `json:"viewAndPostPermissions"`
Expand Down Expand Up @@ -3491,27 +3427,6 @@ func (m *Manager) CheckAllChannelsPermissions(communityID types.HexBytes, addres
return response, nil
}

// Light version of CheckAllChannelsPermissionsLight, which does not use network requests.
// Instead of checking wallet balances it checks if there is an access to a member list of chats.
func (m *Manager) CheckAllChannelsPermissionsLight(communityID types.HexBytes) (*CheckAllChannelsPermissionsResponse, error) {

community, err := m.GetByID(communityID)
if err != nil {
return nil, err
}

response := &CheckAllChannelsPermissionsResponse{
Channels: make(map[string]*CheckChannelPermissionsResponse),
}

channels := community.Chats()

for channelID, channel := range channels {
response.Channels[community.IDString()+channelID] = m.checkChannelPermissionsLight(community, channel, channelID)
}
return response, nil
}

func (m *Manager) GetCheckChannelPermissionResponses(communityID types.HexBytes) (*CheckAllChannelsPermissionsResponse, error) {

response, err := m.persistence.GetCheckChannelPermissionResponses(communityID.String())
Expand Down
24 changes: 0 additions & 24 deletions protocol/messenger_communities.go
Original file line number Diff line number Diff line change
Expand Up @@ -4371,14 +4371,6 @@ func (m *Messenger) CheckPermissionsToJoinCommunity(request *requests.CheckPermi
return m.communitiesManager.CheckPermissionToJoin(request.CommunityID, addresses)
}

func (m *Messenger) CheckPermissionsToJoinCommunityLight(request *requests.CheckPermissionToJoinCommunity) (bool, error) {
if err := request.Validate(); err != nil {
return false, err
}

return m.communitiesManager.CheckPermissionToJoinLight(request.CommunityID)
}

func (m *Messenger) getSharedAddresses(communityID types.HexBytes, requestAddresses []string) ([]gethcommon.Address, error) {
addressesMap := make(map[string]struct{})

Expand Down Expand Up @@ -4442,22 +4434,6 @@ func (m *Messenger) CheckAllCommunityChannelsPermissions(request *requests.Check
return m.communitiesManager.CheckAllChannelsPermissions(request.CommunityID, addresses)
}

func (m *Messenger) CheckCommunityChannelPermissionsLight(request *requests.CheckCommunityChannelPermissions) (*communities.CheckChannelPermissionsResponse, error) {
if err := request.Validate(); err != nil {
return nil, err
}

return m.communitiesManager.CheckChannelPermissionsLight(request.CommunityID, request.ChatID)
}

func (m *Messenger) CheckAllCommunityChannelsPermissionsLight(request *requests.CheckAllCommunityChannelsPermissions) (*communities.CheckAllChannelsPermissionsResponse, error) {
if err := request.Validate(); err != nil {
return nil, err
}

return m.communitiesManager.CheckAllChannelsPermissionsLight(request.CommunityID)
}

func (m *Messenger) GetCommunityCheckChannelPermissionResponses(communityID types.HexBytes) (*communities.CheckAllChannelsPermissionsResponse, error) {
return m.communitiesManager.GetCheckChannelPermissionResponses(communityID)
}
Expand Down
12 changes: 0 additions & 12 deletions services/ext/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -1590,26 +1590,14 @@ func (api *PublicAPI) CheckPermissionsToJoinCommunity(request *requests.CheckPer
return api.service.messenger.CheckPermissionsToJoinCommunity(request)
}

func (api *PublicAPI) CheckPermissionsToJoinCommunityLight(request *requests.CheckPermissionToJoinCommunity) (bool, error) {
return api.service.messenger.CheckPermissionsToJoinCommunityLight(request)
}

func (api *PublicAPI) CheckCommunityChannelPermissions(request *requests.CheckCommunityChannelPermissions) (*communities.CheckChannelPermissionsResponse, error) {
return api.service.messenger.CheckCommunityChannelPermissions(request)
}

func (api *PublicAPI) CheckCommunityChannelPermissionsLight(request *requests.CheckCommunityChannelPermissions) (*communities.CheckChannelPermissionsResponse, error) {
return api.service.messenger.CheckCommunityChannelPermissionsLight(request)
}

func (api *PublicAPI) CheckAllCommunityChannelsPermissions(request *requests.CheckAllCommunityChannelsPermissions) (*communities.CheckAllChannelsPermissionsResponse, error) {
return api.service.messenger.CheckAllCommunityChannelsPermissions(request)
}

func (api *PublicAPI) CheckAllCommunityChannelsPermissionsLight(request *requests.CheckAllCommunityChannelsPermissions) (*communities.CheckAllChannelsPermissionsResponse, error) {
return api.service.messenger.CheckAllCommunityChannelsPermissionsLight(request)
}

func (api *PublicAPI) CollectCommunityMetrics(request *requests.CommunityMetricsRequest) (*protocol.CommunityMetricsResponse, error) {
return api.service.messenger.CollectCommunityMetrics(request)
}
Expand Down

0 comments on commit 64d2860

Please sign in to comment.