55 lines
1.6 KiB
Go
55 lines
1.6 KiB
Go
package communities
|
|
|
|
import (
|
|
"github.com/golang/protobuf/proto"
|
|
|
|
"github.com/status-im/status-go/protocol/protobuf"
|
|
)
|
|
|
|
type CommunityEventsMessage struct {
|
|
CommunityID []byte `json:"communityId"`
|
|
EventsBaseCommunityDescription []byte `json:"eventsBaseCommunityDescription"`
|
|
Events []CommunityEvent `json:"events,omitempty"`
|
|
}
|
|
|
|
func (m *CommunityEventsMessage) ToProtobuf() *protobuf.CommunityEventsMessage {
|
|
result := protobuf.CommunityEventsMessage{
|
|
CommunityId: m.CommunityID,
|
|
EventsBaseCommunityDescription: m.EventsBaseCommunityDescription,
|
|
SignedEvents: []*protobuf.SignedCommunityEvent{},
|
|
}
|
|
|
|
for _, event := range m.Events {
|
|
signedEvent := &protobuf.SignedCommunityEvent{
|
|
Signature: event.Signature,
|
|
Payload: event.Payload,
|
|
}
|
|
result.SignedEvents = append(result.SignedEvents, signedEvent)
|
|
}
|
|
|
|
return &result
|
|
}
|
|
|
|
func CommunityEventsMessageFromProtobuf(msg *protobuf.CommunityEventsMessage) (*CommunityEventsMessage, error) {
|
|
result := &CommunityEventsMessage{
|
|
CommunityID: msg.CommunityId,
|
|
EventsBaseCommunityDescription: msg.EventsBaseCommunityDescription,
|
|
Events: []CommunityEvent{},
|
|
}
|
|
|
|
for _, signedEvent := range msg.SignedEvents {
|
|
event, err := communityEventFromProtobuf(signedEvent)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
result.Events = append(result.Events, *event)
|
|
}
|
|
|
|
return result, nil
|
|
}
|
|
|
|
func (m *CommunityEventsMessage) Marshal() ([]byte, error) {
|
|
pb := m.ToProtobuf()
|
|
return proto.Marshal(pb)
|
|
}
|