github.com/status-im/status-go@v1.1.0/protocol/requests/delete_community_member_messages.go (about)

     1  package requests
     2  
     3  import (
     4  	"errors"
     5  
     6  	"github.com/status-im/status-go/eth-node/types"
     7  	"github.com/status-im/status-go/protocol/protobuf"
     8  )
     9  
    10  var ErrDeleteCommunityMemberMessagesInvalidCommunityID = errors.New("delete-community-member-messages: invalid community id")
    11  var ErrDeleteCommunityMemberMessagesInvalidMemberID = errors.New("delete-community-member-messages: invalid member id")
    12  var ErrDeleteCommunityMemberMessagesInvalidData = errors.New("delete-community-member-messages: invalid data")
    13  var ErrDeleteCommunityMemberMessagesInvalidDeleteAll = errors.New("delete-community-member-messages: invalid delete all setup")
    14  var ErrDeleteCommunityMemberMessagesInvalidDeleteMessagesByID = errors.New("delete-community-member-messages: invalid delete messages by ID setups")
    15  var ErrDeleteCommunityMemberMessagesInvalidMsgID = errors.New("delete-community-member-messages: invalid messages Id")
    16  var ErrDeleteCommunityMemberMessagesInvalidMsgChatID = errors.New("delete-community-member-messages: invalid messages chatId")
    17  
    18  type DeleteCommunityMemberMessages struct {
    19  	CommunityID  types.HexBytes                           `json:"communityId"`
    20  	MemberPubKey string                                   `json:"memberPubKey"`
    21  	Messages     []*protobuf.DeleteCommunityMemberMessage `json:"messages"`
    22  	DeleteAll    bool                                     `json:"deleteAll"`
    23  }
    24  
    25  func (d *DeleteCommunityMemberMessages) Validate() error {
    26  	if len(d.CommunityID) == 0 {
    27  		return ErrDeleteCommunityMemberMessagesInvalidCommunityID
    28  	}
    29  
    30  	if len(d.MemberPubKey) == 0 {
    31  		return ErrDeleteCommunityMemberMessagesInvalidMemberID
    32  	}
    33  
    34  	if d.Messages != nil && len(d.Messages) > 0 && d.DeleteAll {
    35  		return ErrDeleteCommunityMemberMessagesInvalidDeleteAll
    36  	}
    37  
    38  	if (d.Messages == nil || (d.Messages != nil && len(d.Messages) == 0)) && !d.DeleteAll {
    39  		return ErrDeleteCommunityMemberMessagesInvalidDeleteMessagesByID
    40  	}
    41  
    42  	if d.Messages != nil {
    43  		for _, message := range d.Messages {
    44  			if len(message.Id) == 0 {
    45  				return ErrDeleteCommunityMemberMessagesInvalidMsgID
    46  			}
    47  			if len(message.ChatId) == 0 {
    48  				return ErrDeleteCommunityMemberMessagesInvalidMsgChatID
    49  			}
    50  		}
    51  	}
    52  
    53  	return nil
    54  }