status-im/status-go

View on GitHub
protocol/protobuf/membership_update_message.proto

Summary

Maintainability
Test Coverage
syntax = "proto3";

option go_package = "./;protobuf";
package protobuf;

import "chat_message.proto";
import "emoji_reaction.proto";

message MembershipUpdateEvent {
  // Lamport timestamp of the event
  uint64 clock = 1;
  // List of public keys of objects of the action
  repeated string members = 2;
  // Name of the chat for the CHAT_CREATED/NAME_CHANGED event types
  string name = 3;
  // The type of the event
  EventType type = 4;
  // Color of the chat for the CHAT_CREATED/COLOR_CHANGED event types
  string color = 5;
  // Chat image
  bytes image = 6;

  enum EventType {
    UNKNOWN = 0;
    CHAT_CREATED = 1;
    NAME_CHANGED = 2;
    MEMBERS_ADDED = 3;
    MEMBER_JOINED = 4;
    MEMBER_REMOVED = 5;
    ADMINS_ADDED = 6;
    ADMIN_REMOVED = 7;
    COLOR_CHANGED = 8;
    IMAGE_CHANGED = 9;
  }
}

// MembershipUpdateMessage is a message used to propagate information
// about group membership changes.
// For more information, see https://github.com/status-im/specs/blob/master/status-group-chats-spec.md.
message MembershipUpdateMessage {
  // The chat id of the private group chat
  string chat_id = 1;
  // A list of events for this group chat, first x bytes are the signature, then is a 
  // protobuf encoded MembershipUpdateEvent
  repeated bytes events = 2;

  // An optional chat message
  oneof chat_entity {
    ChatMessage message = 3;
    EmojiReaction emoji_reaction = 4;
  }
}