diff --git a/ROADMAP.md b/ROADMAP.md index 6ed2604..c25bd98 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -6,7 +6,7 @@ * [x] Replies (RCS) * [x] Reactions (RCS) * [ ] Typing notifications (RCS) - * [ ] Read receipts (RCS) + * [x] Read receipts (RCS) * [x] Message deletions (own device only) * Google Messages → Matrix * [ ] Message content diff --git a/libgm/binary/client.pb.go b/libgm/binary/client.pb.go index 5559f1d..a164ec8 100644 --- a/libgm/binary/client.pb.go +++ b/libgm/binary/client.pb.go @@ -216,6 +216,61 @@ func (x *NotifyDittoActivityPayload) GetSuccess() bool { return false } +type MessageReadPayload struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ConversationID string `protobuf:"bytes,2,opt,name=conversationID,proto3" json:"conversationID,omitempty"` + MessageID string `protobuf:"bytes,3,opt,name=messageID,proto3" json:"messageID,omitempty"` +} + +func (x *MessageReadPayload) Reset() { + *x = MessageReadPayload{} + if protoimpl.UnsafeEnabled { + mi := &file_client_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MessageReadPayload) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MessageReadPayload) ProtoMessage() {} + +func (x *MessageReadPayload) ProtoReflect() protoreflect.Message { + mi := &file_client_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MessageReadPayload.ProtoReflect.Descriptor instead. +func (*MessageReadPayload) Descriptor() ([]byte, []int) { + return file_client_proto_rawDescGZIP(), []int{1} +} + +func (x *MessageReadPayload) GetConversationID() string { + if x != nil { + return x.ConversationID + } + return "" +} + +func (x *MessageReadPayload) GetMessageID() string { + if x != nil { + return x.MessageID + } + return "" +} + type AckMessageResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -227,7 +282,7 @@ type AckMessageResponse struct { func (x *AckMessageResponse) Reset() { *x = AckMessageResponse{} if protoimpl.UnsafeEnabled { - mi := &file_client_proto_msgTypes[1] + mi := &file_client_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -240,7 +295,7 @@ func (x *AckMessageResponse) String() string { func (*AckMessageResponse) ProtoMessage() {} func (x *AckMessageResponse) ProtoReflect() protoreflect.Message { - mi := &file_client_proto_msgTypes[1] + mi := &file_client_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -253,7 +308,7 @@ func (x *AckMessageResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use AckMessageResponse.ProtoReflect.Descriptor instead. func (*AckMessageResponse) Descriptor() ([]byte, []int) { - return file_client_proto_rawDescGZIP(), []int{1} + return file_client_proto_rawDescGZIP(), []int{2} } func (x *AckMessageResponse) GetContainer() *AckContainer { @@ -274,7 +329,7 @@ type AckContainer struct { func (x *AckContainer) Reset() { *x = AckContainer{} if protoimpl.UnsafeEnabled { - mi := &file_client_proto_msgTypes[2] + mi := &file_client_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -287,7 +342,7 @@ func (x *AckContainer) String() string { func (*AckContainer) ProtoMessage() {} func (x *AckContainer) ProtoReflect() protoreflect.Message { - mi := &file_client_proto_msgTypes[2] + mi := &file_client_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -300,7 +355,7 @@ func (x *AckContainer) ProtoReflect() protoreflect.Message { // Deprecated: Use AckContainer.ProtoReflect.Descriptor instead. func (*AckContainer) Descriptor() ([]byte, []int) { - return file_client_proto_rawDescGZIP(), []int{2} + return file_client_proto_rawDescGZIP(), []int{3} } func (x *AckContainer) GetData() *AckData { @@ -321,7 +376,7 @@ type AckData struct { func (x *AckData) Reset() { *x = AckData{} if protoimpl.UnsafeEnabled { - mi := &file_client_proto_msgTypes[3] + mi := &file_client_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -334,7 +389,7 @@ func (x *AckData) String() string { func (*AckData) ProtoMessage() {} func (x *AckData) ProtoReflect() protoreflect.Message { - mi := &file_client_proto_msgTypes[3] + mi := &file_client_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -347,7 +402,7 @@ func (x *AckData) ProtoReflect() protoreflect.Message { // Deprecated: Use AckData.ProtoReflect.Descriptor instead. func (*AckData) Descriptor() ([]byte, []int) { - return file_client_proto_rawDescGZIP(), []int{3} + return file_client_proto_rawDescGZIP(), []int{4} } func (x *AckData) GetAckAmount() *AckAmount { @@ -368,7 +423,7 @@ type AckAmount struct { func (x *AckAmount) Reset() { *x = AckAmount{} if protoimpl.UnsafeEnabled { - mi := &file_client_proto_msgTypes[4] + mi := &file_client_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -381,7 +436,7 @@ func (x *AckAmount) String() string { func (*AckAmount) ProtoMessage() {} func (x *AckAmount) ProtoReflect() protoreflect.Message { - mi := &file_client_proto_msgTypes[4] + mi := &file_client_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -394,7 +449,7 @@ func (x *AckAmount) ProtoReflect() protoreflect.Message { // Deprecated: Use AckAmount.ProtoReflect.Descriptor instead. func (*AckAmount) Descriptor() ([]byte, []int) { - return file_client_proto_rawDescGZIP(), []int{4} + return file_client_proto_rawDescGZIP(), []int{5} } func (x *AckAmount) GetCount() int32 { @@ -417,7 +472,7 @@ type AckMessagePayload struct { func (x *AckMessagePayload) Reset() { *x = AckMessagePayload{} if protoimpl.UnsafeEnabled { - mi := &file_client_proto_msgTypes[5] + mi := &file_client_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -430,7 +485,7 @@ func (x *AckMessagePayload) String() string { func (*AckMessagePayload) ProtoMessage() {} func (x *AckMessagePayload) ProtoReflect() protoreflect.Message { - mi := &file_client_proto_msgTypes[5] + mi := &file_client_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -443,7 +498,7 @@ func (x *AckMessagePayload) ProtoReflect() protoreflect.Message { // Deprecated: Use AckMessagePayload.ProtoReflect.Descriptor instead. func (*AckMessagePayload) Descriptor() ([]byte, []int) { - return file_client_proto_rawDescGZIP(), []int{5} + return file_client_proto_rawDescGZIP(), []int{6} } func (x *AckMessagePayload) GetAuthData() *AuthMessage { @@ -479,7 +534,7 @@ type AckMessageData struct { func (x *AckMessageData) Reset() { *x = AckMessageData{} if protoimpl.UnsafeEnabled { - mi := &file_client_proto_msgTypes[6] + mi := &file_client_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -492,7 +547,7 @@ func (x *AckMessageData) String() string { func (*AckMessageData) ProtoMessage() {} func (x *AckMessageData) ProtoReflect() protoreflect.Message { - mi := &file_client_proto_msgTypes[6] + mi := &file_client_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -505,7 +560,7 @@ func (x *AckMessageData) ProtoReflect() protoreflect.Message { // Deprecated: Use AckMessageData.ProtoReflect.Descriptor instead. func (*AckMessageData) Descriptor() ([]byte, []int) { - return file_client_proto_rawDescGZIP(), []int{6} + return file_client_proto_rawDescGZIP(), []int{7} } func (x *AckMessageData) GetRequestID() string { @@ -534,7 +589,7 @@ type ImageMetaData struct { func (x *ImageMetaData) Reset() { *x = ImageMetaData{} if protoimpl.UnsafeEnabled { - mi := &file_client_proto_msgTypes[7] + mi := &file_client_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -547,7 +602,7 @@ func (x *ImageMetaData) String() string { func (*ImageMetaData) ProtoMessage() {} func (x *ImageMetaData) ProtoReflect() protoreflect.Message { - mi := &file_client_proto_msgTypes[7] + mi := &file_client_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -560,7 +615,7 @@ func (x *ImageMetaData) ProtoReflect() protoreflect.Message { // Deprecated: Use ImageMetaData.ProtoReflect.Descriptor instead. func (*ImageMetaData) Descriptor() ([]byte, []int) { - return file_client_proto_rawDescGZIP(), []int{7} + return file_client_proto_rawDescGZIP(), []int{8} } func (x *ImageMetaData) GetImageID() string { @@ -589,7 +644,7 @@ type UploadImagePayload struct { func (x *UploadImagePayload) Reset() { *x = UploadImagePayload{} if protoimpl.UnsafeEnabled { - mi := &file_client_proto_msgTypes[8] + mi := &file_client_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -602,7 +657,7 @@ func (x *UploadImagePayload) String() string { func (*UploadImagePayload) ProtoMessage() {} func (x *UploadImagePayload) ProtoReflect() protoreflect.Message { - mi := &file_client_proto_msgTypes[8] + mi := &file_client_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -615,7 +670,7 @@ func (x *UploadImagePayload) ProtoReflect() protoreflect.Message { // Deprecated: Use UploadImagePayload.ProtoReflect.Descriptor instead. func (*UploadImagePayload) Descriptor() ([]byte, []int) { - return file_client_proto_rawDescGZIP(), []int{8} + return file_client_proto_rawDescGZIP(), []int{9} } func (x *UploadImagePayload) GetMetaData() *ImageMetaData { @@ -643,7 +698,7 @@ type BugleBackendService struct { func (x *BugleBackendService) Reset() { *x = BugleBackendService{} if protoimpl.UnsafeEnabled { - mi := &file_client_proto_msgTypes[9] + mi := &file_client_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -656,7 +711,7 @@ func (x *BugleBackendService) String() string { func (*BugleBackendService) ProtoMessage() {} func (x *BugleBackendService) ProtoReflect() protoreflect.Message { - mi := &file_client_proto_msgTypes[9] + mi := &file_client_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -669,7 +724,7 @@ func (x *BugleBackendService) ProtoReflect() protoreflect.Message { // Deprecated: Use BugleBackendService.ProtoReflect.Descriptor instead. func (*BugleBackendService) Descriptor() ([]byte, []int) { - return file_client_proto_rawDescGZIP(), []int{9} + return file_client_proto_rawDescGZIP(), []int{10} } func (x *BugleBackendService) GetData() *BugleCode { @@ -690,7 +745,7 @@ type BugleCode struct { func (x *BugleCode) Reset() { *x = BugleCode{} if protoimpl.UnsafeEnabled { - mi := &file_client_proto_msgTypes[10] + mi := &file_client_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -703,7 +758,7 @@ func (x *BugleCode) String() string { func (*BugleCode) ProtoMessage() {} func (x *BugleCode) ProtoReflect() protoreflect.Message { - mi := &file_client_proto_msgTypes[10] + mi := &file_client_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -716,7 +771,7 @@ func (x *BugleCode) ProtoReflect() protoreflect.Message { // Deprecated: Use BugleCode.ProtoReflect.Descriptor instead. func (*BugleCode) Descriptor() ([]byte, []int) { - return file_client_proto_rawDescGZIP(), []int{10} + return file_client_proto_rawDescGZIP(), []int{11} } func (x *BugleCode) GetType() int64 { @@ -734,80 +789,86 @@ var file_client_proto_rawDesc = []byte{ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x36, 0x0a, 0x1a, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x44, 0x69, 0x74, 0x74, 0x6f, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x48, - 0x0a, 0x12, 0x41, 0x63, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x2e, 0x41, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x09, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x22, 0x33, 0x0a, 0x0c, 0x41, 0x63, 0x6b, 0x43, - 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, - 0x41, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x3a, 0x0a, - 0x07, 0x41, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2f, 0x0a, 0x09, 0x61, 0x63, 0x6b, 0x41, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x63, 0x6b, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x09, - 0x61, 0x63, 0x6b, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x21, 0x0a, 0x09, 0x41, 0x63, 0x6b, - 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x8e, 0x01, 0x0a, - 0x11, 0x41, 0x63, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, - 0x61, 0x64, 0x12, 0x31, 0x0a, 0x08, 0x61, 0x75, 0x74, 0x68, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, - 0x41, 0x75, 0x74, 0x68, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x08, 0x61, 0x75, 0x74, - 0x68, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2e, 0x0a, 0x08, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x41, 0x72, - 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x73, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x41, 0x72, 0x72, 0x52, 0x08, 0x65, 0x6d, 0x70, - 0x74, 0x79, 0x41, 0x72, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x43, 0x6c, 0x75, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x6e, 0x6f, 0x43, 0x6c, 0x75, 0x65, 0x22, 0x58, 0x0a, - 0x0e, 0x41, 0x63, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, - 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x44, 0x12, 0x28, 0x0a, - 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, - 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0x47, 0x0a, 0x0d, 0x49, 0x6d, 0x61, 0x67, 0x65, - 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x6d, 0x61, 0x67, - 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, - 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, - 0x22, 0x7a, 0x0a, 0x12, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x50, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x31, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x44, 0x61, - 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x52, - 0x08, 0x6d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x12, 0x31, 0x0a, 0x08, 0x61, 0x75, 0x74, - 0x68, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x52, 0x08, 0x61, 0x75, 0x74, 0x68, 0x44, 0x61, 0x74, 0x61, 0x22, 0x3c, 0x0a, 0x13, - 0x42, 0x75, 0x67, 0x6c, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x11, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x42, 0x75, 0x67, 0x6c, 0x65, - 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x1f, 0x0a, 0x09, 0x42, 0x75, - 0x67, 0x6c, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x2a, 0x90, 0x02, 0x0a, 0x10, - 0x42, 0x75, 0x67, 0x6c, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x1e, 0x0a, 0x1a, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x42, 0x55, 0x47, 0x4c, - 0x45, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x00, - 0x12, 0x07, 0x0a, 0x03, 0x53, 0x4d, 0x53, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x4d, 0x4d, 0x53, - 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x52, 0x43, 0x53, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x43, - 0x4c, 0x4f, 0x55, 0x44, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x49, - 0x4d, 0x44, 0x4e, 0x5f, 0x44, 0x45, 0x4c, 0x49, 0x56, 0x45, 0x52, 0x45, 0x44, 0x10, 0x05, 0x12, - 0x12, 0x0a, 0x0e, 0x49, 0x4d, 0x44, 0x4e, 0x5f, 0x44, 0x49, 0x53, 0x50, 0x4c, 0x41, 0x59, 0x45, - 0x44, 0x10, 0x06, 0x12, 0x11, 0x0a, 0x0d, 0x49, 0x4d, 0x44, 0x4e, 0x5f, 0x46, 0x41, 0x4c, 0x4c, - 0x42, 0x41, 0x43, 0x4b, 0x10, 0x07, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x43, 0x53, 0x5f, 0x47, 0x45, - 0x4e, 0x45, 0x52, 0x49, 0x43, 0x10, 0x08, 0x12, 0x07, 0x0a, 0x03, 0x46, 0x54, 0x44, 0x10, 0x09, - 0x12, 0x12, 0x0a, 0x0e, 0x46, 0x54, 0x5f, 0x45, 0x32, 0x45, 0x45, 0x5f, 0x4c, 0x45, 0x47, 0x41, - 0x43, 0x59, 0x10, 0x0a, 0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x54, 0x5f, 0x45, 0x32, 0x45, 0x45, 0x5f, - 0x58, 0x4d, 0x4c, 0x10, 0x0b, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x49, 0x47, 0x48, 0x54, 0x45, 0x52, - 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x0c, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x42, - 0x4d, 0x5f, 0x53, 0x50, 0x41, 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x0d, 0x12, - 0x0d, 0x0a, 0x09, 0x53, 0x41, 0x54, 0x45, 0x4c, 0x4c, 0x49, 0x54, 0x45, 0x10, 0x0e, 0x2a, 0x75, - 0x0a, 0x0c, 0x42, 0x72, 0x6f, 0x77, 0x73, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x18, - 0x0a, 0x14, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x42, 0x52, 0x4f, 0x57, 0x53, 0x45, - 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x4f, 0x54, 0x48, 0x45, - 0x52, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x48, 0x52, 0x4f, 0x4d, 0x45, 0x10, 0x02, 0x12, - 0x0b, 0x0a, 0x07, 0x46, 0x49, 0x52, 0x45, 0x46, 0x4f, 0x58, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, - 0x53, 0x41, 0x46, 0x41, 0x52, 0x49, 0x10, 0x04, 0x12, 0x09, 0x0a, 0x05, 0x4f, 0x50, 0x45, 0x52, - 0x41, 0x10, 0x05, 0x12, 0x06, 0x0a, 0x02, 0x49, 0x45, 0x10, 0x06, 0x12, 0x08, 0x0a, 0x04, 0x45, - 0x44, 0x47, 0x45, 0x10, 0x07, 0x42, 0x0e, 0x5a, 0x0c, 0x2e, 0x2e, 0x2f, 0x2e, 0x2e, 0x2f, 0x62, - 0x69, 0x6e, 0x61, 0x72, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x5a, + 0x0a, 0x12, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x61, 0x64, 0x50, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, + 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x44, 0x22, 0x48, 0x0a, 0x12, 0x41, 0x63, + 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x32, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x63, 0x6b, + 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x69, 0x6e, 0x65, 0x72, 0x22, 0x33, 0x0a, 0x0c, 0x41, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x61, + 0x69, 0x6e, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x63, 0x6b, 0x44, + 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x3a, 0x0a, 0x07, 0x41, 0x63, 0x6b, + 0x44, 0x61, 0x74, 0x61, 0x12, 0x2f, 0x0a, 0x09, 0x61, 0x63, 0x6b, 0x41, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x2e, 0x41, 0x63, 0x6b, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x09, 0x61, 0x63, 0x6b, 0x41, + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x21, 0x0a, 0x09, 0x41, 0x63, 0x6b, 0x41, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x8e, 0x01, 0x0a, 0x11, 0x41, 0x63, 0x6b, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x31, + 0x0a, 0x08, 0x61, 0x75, 0x74, 0x68, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x41, 0x75, 0x74, 0x68, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x08, 0x61, 0x75, 0x74, 0x68, 0x44, 0x61, 0x74, + 0x61, 0x12, 0x2e, 0x0a, 0x08, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x41, 0x72, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x41, 0x72, 0x72, 0x52, 0x08, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x41, 0x72, + 0x72, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x43, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x06, 0x6e, 0x6f, 0x43, 0x6c, 0x75, 0x65, 0x22, 0x58, 0x0a, 0x0e, 0x41, 0x63, 0x6b, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x44, 0x12, 0x28, 0x0a, 0x06, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x06, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x22, 0x47, 0x0a, 0x0d, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, + 0x44, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x44, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x44, 0x12, 0x1c, + 0x0a, 0x09, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x09, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x22, 0x7a, 0x0a, 0x12, + 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x12, 0x31, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x49, 0x6d, + 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, + 0x61, 0x44, 0x61, 0x74, 0x61, 0x12, 0x31, 0x0a, 0x08, 0x61, 0x75, 0x74, 0x68, 0x44, 0x61, 0x74, + 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x73, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x08, + 0x61, 0x75, 0x74, 0x68, 0x44, 0x61, 0x74, 0x61, 0x22, 0x3c, 0x0a, 0x13, 0x42, 0x75, 0x67, 0x6c, + 0x65, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, + 0x25, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x42, 0x75, 0x67, 0x6c, 0x65, 0x43, 0x6f, 0x64, 0x65, + 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x1f, 0x0a, 0x09, 0x42, 0x75, 0x67, 0x6c, 0x65, 0x43, + 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x2a, 0x90, 0x02, 0x0a, 0x10, 0x42, 0x75, 0x67, 0x6c, + 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x1a, + 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x42, 0x55, 0x47, 0x4c, 0x45, 0x5f, 0x4d, 0x45, + 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, + 0x53, 0x4d, 0x53, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x4d, 0x4d, 0x53, 0x10, 0x02, 0x12, 0x07, + 0x0a, 0x03, 0x52, 0x43, 0x53, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x4c, 0x4f, 0x55, 0x44, + 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x4d, 0x44, 0x4e, 0x5f, + 0x44, 0x45, 0x4c, 0x49, 0x56, 0x45, 0x52, 0x45, 0x44, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x49, + 0x4d, 0x44, 0x4e, 0x5f, 0x44, 0x49, 0x53, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x44, 0x10, 0x06, 0x12, + 0x11, 0x0a, 0x0d, 0x49, 0x4d, 0x44, 0x4e, 0x5f, 0x46, 0x41, 0x4c, 0x4c, 0x42, 0x41, 0x43, 0x4b, + 0x10, 0x07, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x49, + 0x43, 0x10, 0x08, 0x12, 0x07, 0x0a, 0x03, 0x46, 0x54, 0x44, 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, + 0x46, 0x54, 0x5f, 0x45, 0x32, 0x45, 0x45, 0x5f, 0x4c, 0x45, 0x47, 0x41, 0x43, 0x59, 0x10, 0x0a, + 0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x54, 0x5f, 0x45, 0x32, 0x45, 0x45, 0x5f, 0x58, 0x4d, 0x4c, 0x10, + 0x0b, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x49, 0x47, 0x48, 0x54, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x53, + 0x53, 0x41, 0x47, 0x45, 0x10, 0x0c, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x42, 0x4d, 0x5f, 0x53, 0x50, + 0x41, 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x0d, 0x12, 0x0d, 0x0a, 0x09, 0x53, + 0x41, 0x54, 0x45, 0x4c, 0x4c, 0x49, 0x54, 0x45, 0x10, 0x0e, 0x2a, 0x75, 0x0a, 0x0c, 0x42, 0x72, + 0x6f, 0x77, 0x73, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x14, 0x55, 0x4e, + 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x42, 0x52, 0x4f, 0x57, 0x53, 0x45, 0x52, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x10, 0x01, 0x12, + 0x0a, 0x0a, 0x06, 0x43, 0x48, 0x52, 0x4f, 0x4d, 0x45, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x46, + 0x49, 0x52, 0x45, 0x46, 0x4f, 0x58, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x41, 0x46, 0x41, + 0x52, 0x49, 0x10, 0x04, 0x12, 0x09, 0x0a, 0x05, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x10, 0x05, 0x12, + 0x06, 0x0a, 0x02, 0x49, 0x45, 0x10, 0x06, 0x12, 0x08, 0x0a, 0x04, 0x45, 0x44, 0x47, 0x45, 0x10, + 0x07, 0x42, 0x0e, 0x5a, 0x0c, 0x2e, 0x2e, 0x2f, 0x2e, 0x2e, 0x2f, 0x62, 0x69, 0x6e, 0x61, 0x72, + 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -823,35 +884,36 @@ func file_client_proto_rawDescGZIP() []byte { } var file_client_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_client_proto_msgTypes = make([]protoimpl.MessageInfo, 11) +var file_client_proto_msgTypes = make([]protoimpl.MessageInfo, 12) var file_client_proto_goTypes = []interface{}{ (BugleMessageType)(0), // 0: client.BugleMessageType (BrowserTypes)(0), // 1: client.BrowserTypes (*NotifyDittoActivityPayload)(nil), // 2: client.NotifyDittoActivityPayload - (*AckMessageResponse)(nil), // 3: client.AckMessageResponse - (*AckContainer)(nil), // 4: client.AckContainer - (*AckData)(nil), // 5: client.AckData - (*AckAmount)(nil), // 6: client.AckAmount - (*AckMessagePayload)(nil), // 7: client.AckMessagePayload - (*AckMessageData)(nil), // 8: client.AckMessageData - (*ImageMetaData)(nil), // 9: client.ImageMetaData - (*UploadImagePayload)(nil), // 10: client.UploadImagePayload - (*BugleBackendService)(nil), // 11: client.BugleBackendService - (*BugleCode)(nil), // 12: client.BugleCode - (*AuthMessage)(nil), // 13: messages.AuthMessage - (*EmptyArr)(nil), // 14: messages.EmptyArr - (*Device)(nil), // 15: messages.Device + (*MessageReadPayload)(nil), // 3: client.MessageReadPayload + (*AckMessageResponse)(nil), // 4: client.AckMessageResponse + (*AckContainer)(nil), // 5: client.AckContainer + (*AckData)(nil), // 6: client.AckData + (*AckAmount)(nil), // 7: client.AckAmount + (*AckMessagePayload)(nil), // 8: client.AckMessagePayload + (*AckMessageData)(nil), // 9: client.AckMessageData + (*ImageMetaData)(nil), // 10: client.ImageMetaData + (*UploadImagePayload)(nil), // 11: client.UploadImagePayload + (*BugleBackendService)(nil), // 12: client.BugleBackendService + (*BugleCode)(nil), // 13: client.BugleCode + (*AuthMessage)(nil), // 14: messages.AuthMessage + (*EmptyArr)(nil), // 15: messages.EmptyArr + (*Device)(nil), // 16: messages.Device } var file_client_proto_depIdxs = []int32{ - 4, // 0: client.AckMessageResponse.container:type_name -> client.AckContainer - 5, // 1: client.AckContainer.data:type_name -> client.AckData - 6, // 2: client.AckData.ackAmount:type_name -> client.AckAmount - 13, // 3: client.AckMessagePayload.authData:type_name -> messages.AuthMessage - 14, // 4: client.AckMessagePayload.emptyArr:type_name -> messages.EmptyArr - 15, // 5: client.AckMessageData.device:type_name -> messages.Device - 9, // 6: client.UploadImagePayload.metaData:type_name -> client.ImageMetaData - 13, // 7: client.UploadImagePayload.authData:type_name -> messages.AuthMessage - 12, // 8: client.BugleBackendService.data:type_name -> client.BugleCode + 5, // 0: client.AckMessageResponse.container:type_name -> client.AckContainer + 6, // 1: client.AckContainer.data:type_name -> client.AckData + 7, // 2: client.AckData.ackAmount:type_name -> client.AckAmount + 14, // 3: client.AckMessagePayload.authData:type_name -> messages.AuthMessage + 15, // 4: client.AckMessagePayload.emptyArr:type_name -> messages.EmptyArr + 16, // 5: client.AckMessageData.device:type_name -> messages.Device + 10, // 6: client.UploadImagePayload.metaData:type_name -> client.ImageMetaData + 14, // 7: client.UploadImagePayload.authData:type_name -> messages.AuthMessage + 13, // 8: client.BugleBackendService.data:type_name -> client.BugleCode 9, // [9:9] is the sub-list for method output_type 9, // [9:9] is the sub-list for method input_type 9, // [9:9] is the sub-list for extension type_name @@ -879,7 +941,7 @@ func file_client_proto_init() { } } file_client_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AckMessageResponse); i { + switch v := v.(*MessageReadPayload); i { case 0: return &v.state case 1: @@ -891,7 +953,7 @@ func file_client_proto_init() { } } file_client_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AckContainer); i { + switch v := v.(*AckMessageResponse); i { case 0: return &v.state case 1: @@ -903,7 +965,7 @@ func file_client_proto_init() { } } file_client_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AckData); i { + switch v := v.(*AckContainer); i { case 0: return &v.state case 1: @@ -915,7 +977,7 @@ func file_client_proto_init() { } } file_client_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AckAmount); i { + switch v := v.(*AckData); i { case 0: return &v.state case 1: @@ -927,7 +989,7 @@ func file_client_proto_init() { } } file_client_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AckMessagePayload); i { + switch v := v.(*AckAmount); i { case 0: return &v.state case 1: @@ -939,7 +1001,7 @@ func file_client_proto_init() { } } file_client_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AckMessageData); i { + switch v := v.(*AckMessagePayload); i { case 0: return &v.state case 1: @@ -951,7 +1013,7 @@ func file_client_proto_init() { } } file_client_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ImageMetaData); i { + switch v := v.(*AckMessageData); i { case 0: return &v.state case 1: @@ -963,7 +1025,7 @@ func file_client_proto_init() { } } file_client_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UploadImagePayload); i { + switch v := v.(*ImageMetaData); i { case 0: return &v.state case 1: @@ -975,7 +1037,7 @@ func file_client_proto_init() { } } file_client_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BugleBackendService); i { + switch v := v.(*UploadImagePayload); i { case 0: return &v.state case 1: @@ -987,6 +1049,18 @@ func file_client_proto_init() { } } file_client_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BugleBackendService); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_client_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BugleCode); i { case 0: return &v.state @@ -1005,7 +1079,7 @@ func file_client_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_client_proto_rawDesc, NumEnums: 2, - NumMessages: 11, + NumMessages: 12, NumExtensions: 0, NumServices: 0, }, diff --git a/libgm/binary/messages.pb.go b/libgm/binary/messages.pb.go index 275f205..701998f 100644 --- a/libgm/binary/messages.pb.go +++ b/libgm/binary/messages.pb.go @@ -72,55 +72,151 @@ func (BugleRoute) EnumDescriptor() ([]byte, []int) { type ActionType int32 const ( - ActionType_UNKNOWN_ACTION_TYPE ActionType = 0 - ActionType_LIST_CONVERSATIONS ActionType = 1 - ActionType_LIST_MESSAGES ActionType = 2 - ActionType_SEND_MESSAGE ActionType = 3 - ActionType_LIST_CONVERSATIONS_SYNC ActionType = 1111 - ActionType_UPDATE_CONVERSATION ActionType = 15 - ActionType_GET_UPDATES ActionType = 16 - ActionType_GET_CONVERSATION_TYPE ActionType = 21 - ActionType_NOTIFY_DITTO_ACTIVITY ActionType = 22 - ActionType_DELETE_MESSAGE ActionType = 23 - ActionType_RESEND_MESSAGE ActionType = 25 - ActionType_IS_BUGLE_DEFAULT ActionType = 31 - ActionType_GET_PARTICIPANTS_THUMBNAIL ActionType = 37 - ActionType_SEND_REACTION ActionType = 38 + ActionType_UNSPECIFIED ActionType = 0 + ActionType_LIST_CONVERSATIONS ActionType = 1 + ActionType_LIST_MESSAGES ActionType = 2 + ActionType_SEND_MESSAGE ActionType = 3 + ActionType_LIST_CONVERSATIONS_SYNC ActionType = 1111 + ActionType_MESSAGE_UPDATES ActionType = 4 + ActionType_LIST_CONTACTS ActionType = 6 + ActionType_CONVERSATION_UPDATES ActionType = 7 + ActionType_GET_OR_CREATE_CONVERSATION ActionType = 9 + ActionType_MESSAGE_READ ActionType = 10 + ActionType_BROWSER_PRESENCE_CHECK ActionType = 11 + ActionType_TYPING_UPDATES ActionType = 12 + ActionType_SETTINGS_UPDATE ActionType = 13 + ActionType_USER_ALERT ActionType = 14 + ActionType_UPDATE_CONVERSATION ActionType = 15 + ActionType_GET_UPDATES ActionType = 16 + ActionType_ACK_BROWSER_PRESENCE ActionType = 17 + ActionType_LIST_STICKER_SETS ActionType = 18 + ActionType_LEAVE_RCS_GROUP ActionType = 19 + ActionType_ADD_PARTICIPANT_TO_RCS_GROUP ActionType = 20 + ActionType_GET_CONVERSATION_TYPE ActionType = 21 + ActionType_NOTIFY_DITTO_ACTIVITY ActionType = 22 + ActionType_DELETE_MESSAGE ActionType = 23 + ActionType_INSTALL_STICKER_SET ActionType = 24 + ActionType_RESEND_MESSAGE ActionType = 25 + ActionType_GET_CONTACT_RCS_GROUP_STATUS ActionType = 26 + ActionType_DOWNLOAD_MESSAGE ActionType = 27 + ActionType_LIST_TOP_CONTACTS ActionType = 28 + ActionType_GET_CONTACTS_THUMBNAIL ActionType = 29 + ActionType_CHANGE_PARTICIPANT_COLOR ActionType = 30 + ActionType_IS_BUGLE_DEFAULT ActionType = 31 + ActionType_STICKER_USER_CONTEXT ActionType = 32 + ActionType_FAVORITE_STICKER_PACKS ActionType = 33 + ActionType_RECENT_STICKERS ActionType = 34 + ActionType_UPDATE_RECENT_STICKERS ActionType = 35 + ActionType_GET_FULL_SIZE_IMAGE ActionType = 36 + ActionType_GET_PARTICIPANTS_THUMBNAIL ActionType = 37 + ActionType_SEND_REACTION ActionType = 38 + ActionType_SEND_REPLY ActionType = 39 + ActionType_GET_BLOB_FOR_ATTACHMENT ActionType = 40 + ActionType_GET_DEVICES_AVAILABLE_FOR_GAIA_PAIRING ActionType = 41 + ActionType_CREATE_GAIA_PAIRING ActionType = 42 + ActionType_GET_CONVERSATION ActionType = 43 + ActionType_CREATE_GAIA_PAIRING_CLIENT_INIT ActionType = 44 + ActionType_CREATE_GAIA_PAIRING_CLIENT_FINISHED ActionType = 45 + ActionType_UNPAIR_GAIA_PAIRING ActionType = 46 ) // Enum value maps for ActionType. var ( ActionType_name = map[int32]string{ - 0: "UNKNOWN_ACTION_TYPE", + 0: "UNSPECIFIED", 1: "LIST_CONVERSATIONS", 2: "LIST_MESSAGES", 3: "SEND_MESSAGE", 1111: "LIST_CONVERSATIONS_SYNC", + 4: "MESSAGE_UPDATES", + 6: "LIST_CONTACTS", + 7: "CONVERSATION_UPDATES", + 9: "GET_OR_CREATE_CONVERSATION", + 10: "MESSAGE_READ", + 11: "BROWSER_PRESENCE_CHECK", + 12: "TYPING_UPDATES", + 13: "SETTINGS_UPDATE", + 14: "USER_ALERT", 15: "UPDATE_CONVERSATION", 16: "GET_UPDATES", + 17: "ACK_BROWSER_PRESENCE", + 18: "LIST_STICKER_SETS", + 19: "LEAVE_RCS_GROUP", + 20: "ADD_PARTICIPANT_TO_RCS_GROUP", 21: "GET_CONVERSATION_TYPE", 22: "NOTIFY_DITTO_ACTIVITY", 23: "DELETE_MESSAGE", + 24: "INSTALL_STICKER_SET", 25: "RESEND_MESSAGE", + 26: "GET_CONTACT_RCS_GROUP_STATUS", + 27: "DOWNLOAD_MESSAGE", + 28: "LIST_TOP_CONTACTS", + 29: "GET_CONTACTS_THUMBNAIL", + 30: "CHANGE_PARTICIPANT_COLOR", 31: "IS_BUGLE_DEFAULT", + 32: "STICKER_USER_CONTEXT", + 33: "FAVORITE_STICKER_PACKS", + 34: "RECENT_STICKERS", + 35: "UPDATE_RECENT_STICKERS", + 36: "GET_FULL_SIZE_IMAGE", 37: "GET_PARTICIPANTS_THUMBNAIL", 38: "SEND_REACTION", + 39: "SEND_REPLY", + 40: "GET_BLOB_FOR_ATTACHMENT", + 41: "GET_DEVICES_AVAILABLE_FOR_GAIA_PAIRING", + 42: "CREATE_GAIA_PAIRING", + 43: "GET_CONVERSATION", + 44: "CREATE_GAIA_PAIRING_CLIENT_INIT", + 45: "CREATE_GAIA_PAIRING_CLIENT_FINISHED", + 46: "UNPAIR_GAIA_PAIRING", } ActionType_value = map[string]int32{ - "UNKNOWN_ACTION_TYPE": 0, - "LIST_CONVERSATIONS": 1, - "LIST_MESSAGES": 2, - "SEND_MESSAGE": 3, - "LIST_CONVERSATIONS_SYNC": 1111, - "UPDATE_CONVERSATION": 15, - "GET_UPDATES": 16, - "GET_CONVERSATION_TYPE": 21, - "NOTIFY_DITTO_ACTIVITY": 22, - "DELETE_MESSAGE": 23, - "RESEND_MESSAGE": 25, - "IS_BUGLE_DEFAULT": 31, - "GET_PARTICIPANTS_THUMBNAIL": 37, - "SEND_REACTION": 38, + "UNSPECIFIED": 0, + "LIST_CONVERSATIONS": 1, + "LIST_MESSAGES": 2, + "SEND_MESSAGE": 3, + "LIST_CONVERSATIONS_SYNC": 1111, + "MESSAGE_UPDATES": 4, + "LIST_CONTACTS": 6, + "CONVERSATION_UPDATES": 7, + "GET_OR_CREATE_CONVERSATION": 9, + "MESSAGE_READ": 10, + "BROWSER_PRESENCE_CHECK": 11, + "TYPING_UPDATES": 12, + "SETTINGS_UPDATE": 13, + "USER_ALERT": 14, + "UPDATE_CONVERSATION": 15, + "GET_UPDATES": 16, + "ACK_BROWSER_PRESENCE": 17, + "LIST_STICKER_SETS": 18, + "LEAVE_RCS_GROUP": 19, + "ADD_PARTICIPANT_TO_RCS_GROUP": 20, + "GET_CONVERSATION_TYPE": 21, + "NOTIFY_DITTO_ACTIVITY": 22, + "DELETE_MESSAGE": 23, + "INSTALL_STICKER_SET": 24, + "RESEND_MESSAGE": 25, + "GET_CONTACT_RCS_GROUP_STATUS": 26, + "DOWNLOAD_MESSAGE": 27, + "LIST_TOP_CONTACTS": 28, + "GET_CONTACTS_THUMBNAIL": 29, + "CHANGE_PARTICIPANT_COLOR": 30, + "IS_BUGLE_DEFAULT": 31, + "STICKER_USER_CONTEXT": 32, + "FAVORITE_STICKER_PACKS": 33, + "RECENT_STICKERS": 34, + "UPDATE_RECENT_STICKERS": 35, + "GET_FULL_SIZE_IMAGE": 36, + "GET_PARTICIPANTS_THUMBNAIL": 37, + "SEND_REACTION": 38, + "SEND_REPLY": 39, + "GET_BLOB_FOR_ATTACHMENT": 40, + "GET_DEVICES_AVAILABLE_FOR_GAIA_PAIRING": 41, + "CREATE_GAIA_PAIRING": 42, + "GET_CONVERSATION": 43, + "CREATE_GAIA_PAIRING_CLIENT_INIT": 44, + "CREATE_GAIA_PAIRING_CLIENT_FINISHED": 45, + "UNPAIR_GAIA_PAIRING": 46, } ) @@ -628,7 +724,7 @@ func (x *InternalRequestData) GetAction() ActionType { if x != nil { return x.Action } - return ActionType_UNKNOWN_ACTION_TYPE + return ActionType_UNSPECIFIED } func (x *InternalRequestData) GetBool1() bool { @@ -863,7 +959,7 @@ func (x *SendMessageInternal) GetAction() ActionType { if x != nil { return x.Action } - return ActionType_UNKNOWN_ACTION_TYPE + return ActionType_UNSPECIFIED } func (x *SendMessageInternal) GetEncryptedProtoData() []byte { @@ -1657,34 +1753,86 @@ var file_messages_proto_rawDesc = []byte{ 0x4f, 0x57, 0x4e, 0x5f, 0x42, 0x55, 0x47, 0x4c, 0x45, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x10, 0x13, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x61, 0x69, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x10, 0x0e, 0x2a, - 0xd1, 0x02, 0x0a, 0x0a, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x17, - 0x0a, 0x13, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x4c, 0x49, 0x53, 0x54, 0x5f, - 0x43, 0x4f, 0x4e, 0x56, 0x45, 0x52, 0x53, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x01, 0x12, - 0x11, 0x0a, 0x0d, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x53, - 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x45, 0x4e, 0x44, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, - 0x47, 0x45, 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x17, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x43, 0x4f, 0x4e, - 0x56, 0x45, 0x52, 0x53, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, - 0xd7, 0x08, 0x12, 0x17, 0x0a, 0x13, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4f, 0x4e, - 0x56, 0x45, 0x52, 0x53, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x0f, 0x12, 0x0f, 0x0a, 0x0b, 0x47, - 0x45, 0x54, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x53, 0x10, 0x10, 0x12, 0x19, 0x0a, 0x15, - 0x47, 0x45, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x56, 0x45, 0x52, 0x53, 0x41, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x15, 0x12, 0x19, 0x0a, 0x15, 0x4e, 0x4f, 0x54, 0x49, 0x46, - 0x59, 0x5f, 0x44, 0x49, 0x54, 0x54, 0x4f, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, - 0x10, 0x16, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x5f, 0x4d, 0x45, 0x53, - 0x53, 0x41, 0x47, 0x45, 0x10, 0x17, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x44, - 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x19, 0x12, 0x14, 0x0a, 0x10, 0x49, 0x53, - 0x5f, 0x42, 0x55, 0x47, 0x4c, 0x45, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x1f, - 0x12, 0x1e, 0x0a, 0x1a, 0x47, 0x45, 0x54, 0x5f, 0x50, 0x41, 0x52, 0x54, 0x49, 0x43, 0x49, 0x50, - 0x41, 0x4e, 0x54, 0x53, 0x5f, 0x54, 0x48, 0x55, 0x4d, 0x42, 0x4e, 0x41, 0x49, 0x4c, 0x10, 0x25, - 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x45, 0x4e, 0x44, 0x5f, 0x52, 0x45, 0x41, 0x43, 0x54, 0x49, 0x4f, - 0x4e, 0x10, 0x26, 0x2a, 0x50, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x4d, 0x45, - 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, - 0x42, 0x55, 0x47, 0x4c, 0x45, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x02, 0x12, - 0x14, 0x0a, 0x10, 0x42, 0x55, 0x47, 0x4c, 0x45, 0x5f, 0x41, 0x4e, 0x4e, 0x4f, 0x54, 0x41, 0x54, - 0x49, 0x4f, 0x4e, 0x10, 0x10, 0x42, 0x0e, 0x5a, 0x0c, 0x2e, 0x2e, 0x2f, 0x2e, 0x2e, 0x2f, 0x62, - 0x69, 0x6e, 0x61, 0x72, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x8b, 0x09, 0x0a, 0x0a, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, + 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x16, 0x0a, 0x12, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x56, 0x45, 0x52, 0x53, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x4c, 0x49, 0x53, 0x54, 0x5f, + 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x53, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x45, + 0x4e, 0x44, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x17, + 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x56, 0x45, 0x52, 0x53, 0x41, 0x54, 0x49, 0x4f, + 0x4e, 0x53, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, 0xd7, 0x08, 0x12, 0x13, 0x0a, 0x0f, 0x4d, 0x45, + 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x53, 0x10, 0x04, 0x12, + 0x11, 0x0a, 0x0d, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x53, + 0x10, 0x06, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x4f, 0x4e, 0x56, 0x45, 0x52, 0x53, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x53, 0x10, 0x07, 0x12, 0x1e, 0x0a, 0x1a, + 0x47, 0x45, 0x54, 0x5f, 0x4f, 0x52, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4f, + 0x4e, 0x56, 0x45, 0x52, 0x53, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x09, 0x12, 0x10, 0x0a, 0x0c, + 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x10, 0x0a, 0x12, 0x1a, + 0x0a, 0x16, 0x42, 0x52, 0x4f, 0x57, 0x53, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, + 0x43, 0x45, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x10, 0x0b, 0x12, 0x12, 0x0a, 0x0e, 0x54, 0x59, + 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x53, 0x10, 0x0c, 0x12, 0x13, + 0x0a, 0x0f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, + 0x45, 0x10, 0x0d, 0x12, 0x0e, 0x0a, 0x0a, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x41, 0x4c, 0x45, 0x52, + 0x54, 0x10, 0x0e, 0x12, 0x17, 0x0a, 0x13, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4f, + 0x4e, 0x56, 0x45, 0x52, 0x53, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x0f, 0x12, 0x0f, 0x0a, 0x0b, + 0x47, 0x45, 0x54, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x53, 0x10, 0x10, 0x12, 0x18, 0x0a, + 0x14, 0x41, 0x43, 0x4b, 0x5f, 0x42, 0x52, 0x4f, 0x57, 0x53, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x45, + 0x53, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x11, 0x12, 0x15, 0x0a, 0x11, 0x4c, 0x49, 0x53, 0x54, 0x5f, + 0x53, 0x54, 0x49, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x53, 0x45, 0x54, 0x53, 0x10, 0x12, 0x12, 0x13, + 0x0a, 0x0f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x5f, 0x52, 0x43, 0x53, 0x5f, 0x47, 0x52, 0x4f, 0x55, + 0x50, 0x10, 0x13, 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x44, 0x44, 0x5f, 0x50, 0x41, 0x52, 0x54, 0x49, + 0x43, 0x49, 0x50, 0x41, 0x4e, 0x54, 0x5f, 0x54, 0x4f, 0x5f, 0x52, 0x43, 0x53, 0x5f, 0x47, 0x52, + 0x4f, 0x55, 0x50, 0x10, 0x14, 0x12, 0x19, 0x0a, 0x15, 0x47, 0x45, 0x54, 0x5f, 0x43, 0x4f, 0x4e, + 0x56, 0x45, 0x52, 0x53, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x15, + 0x12, 0x19, 0x0a, 0x15, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x59, 0x5f, 0x44, 0x49, 0x54, 0x54, 0x4f, + 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, 0x10, 0x16, 0x12, 0x12, 0x0a, 0x0e, 0x44, + 0x45, 0x4c, 0x45, 0x54, 0x45, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x17, 0x12, + 0x17, 0x0a, 0x13, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x5f, 0x53, 0x54, 0x49, 0x43, 0x4b, + 0x45, 0x52, 0x5f, 0x53, 0x45, 0x54, 0x10, 0x18, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x45, 0x53, 0x45, + 0x4e, 0x44, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x19, 0x12, 0x20, 0x0a, 0x1c, + 0x47, 0x45, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x5f, 0x52, 0x43, 0x53, 0x5f, + 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x1a, 0x12, 0x14, + 0x0a, 0x10, 0x44, 0x4f, 0x57, 0x4e, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, + 0x47, 0x45, 0x10, 0x1b, 0x12, 0x15, 0x0a, 0x11, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x54, 0x4f, 0x50, + 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x53, 0x10, 0x1c, 0x12, 0x1a, 0x0a, 0x16, 0x47, + 0x45, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x53, 0x5f, 0x54, 0x48, 0x55, 0x4d, + 0x42, 0x4e, 0x41, 0x49, 0x4c, 0x10, 0x1d, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x48, 0x41, 0x4e, 0x47, + 0x45, 0x5f, 0x50, 0x41, 0x52, 0x54, 0x49, 0x43, 0x49, 0x50, 0x41, 0x4e, 0x54, 0x5f, 0x43, 0x4f, + 0x4c, 0x4f, 0x52, 0x10, 0x1e, 0x12, 0x14, 0x0a, 0x10, 0x49, 0x53, 0x5f, 0x42, 0x55, 0x47, 0x4c, + 0x45, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x1f, 0x12, 0x18, 0x0a, 0x14, 0x53, + 0x54, 0x49, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x54, + 0x45, 0x58, 0x54, 0x10, 0x20, 0x12, 0x1a, 0x0a, 0x16, 0x46, 0x41, 0x56, 0x4f, 0x52, 0x49, 0x54, + 0x45, 0x5f, 0x53, 0x54, 0x49, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x53, 0x10, + 0x21, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x45, 0x43, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x49, 0x43, + 0x4b, 0x45, 0x52, 0x53, 0x10, 0x22, 0x12, 0x1a, 0x0a, 0x16, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, + 0x5f, 0x52, 0x45, 0x43, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x49, 0x43, 0x4b, 0x45, 0x52, 0x53, + 0x10, 0x23, 0x12, 0x17, 0x0a, 0x13, 0x47, 0x45, 0x54, 0x5f, 0x46, 0x55, 0x4c, 0x4c, 0x5f, 0x53, + 0x49, 0x5a, 0x45, 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x24, 0x12, 0x1e, 0x0a, 0x1a, 0x47, + 0x45, 0x54, 0x5f, 0x50, 0x41, 0x52, 0x54, 0x49, 0x43, 0x49, 0x50, 0x41, 0x4e, 0x54, 0x53, 0x5f, + 0x54, 0x48, 0x55, 0x4d, 0x42, 0x4e, 0x41, 0x49, 0x4c, 0x10, 0x25, 0x12, 0x11, 0x0a, 0x0d, 0x53, + 0x45, 0x4e, 0x44, 0x5f, 0x52, 0x45, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x26, 0x12, 0x0e, + 0x0a, 0x0a, 0x53, 0x45, 0x4e, 0x44, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x59, 0x10, 0x27, 0x12, 0x1b, + 0x0a, 0x17, 0x47, 0x45, 0x54, 0x5f, 0x42, 0x4c, 0x4f, 0x42, 0x5f, 0x46, 0x4f, 0x52, 0x5f, 0x41, + 0x54, 0x54, 0x41, 0x43, 0x48, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x28, 0x12, 0x2a, 0x0a, 0x26, 0x47, + 0x45, 0x54, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x53, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, + 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x46, 0x4f, 0x52, 0x5f, 0x47, 0x41, 0x49, 0x41, 0x5f, 0x50, 0x41, + 0x49, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x29, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x52, 0x45, 0x41, 0x54, + 0x45, 0x5f, 0x47, 0x41, 0x49, 0x41, 0x5f, 0x50, 0x41, 0x49, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x2a, + 0x12, 0x14, 0x0a, 0x10, 0x47, 0x45, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x56, 0x45, 0x52, 0x53, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x2b, 0x12, 0x23, 0x0a, 0x1f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, + 0x5f, 0x47, 0x41, 0x49, 0x41, 0x5f, 0x50, 0x41, 0x49, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x4c, + 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x49, 0x4e, 0x49, 0x54, 0x10, 0x2c, 0x12, 0x27, 0x0a, 0x23, 0x43, + 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, 0x47, 0x41, 0x49, 0x41, 0x5f, 0x50, 0x41, 0x49, 0x52, 0x49, + 0x4e, 0x47, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x46, 0x49, 0x4e, 0x49, 0x53, 0x48, + 0x45, 0x44, 0x10, 0x2d, 0x12, 0x17, 0x0a, 0x13, 0x55, 0x4e, 0x50, 0x41, 0x49, 0x52, 0x5f, 0x47, + 0x41, 0x49, 0x41, 0x5f, 0x50, 0x41, 0x49, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x2e, 0x2a, 0x50, 0x0a, + 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x14, + 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x42, 0x55, 0x47, 0x4c, 0x45, 0x5f, + 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x42, 0x55, 0x47, + 0x4c, 0x45, 0x5f, 0x41, 0x4e, 0x4e, 0x4f, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x10, 0x42, + 0x0e, 0x5a, 0x0c, 0x2e, 0x2e, 0x2f, 0x2e, 0x2e, 0x2f, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/libgm/binary/raw/client.proto b/libgm/binary/raw/client.proto index b52a180..1324af4 100644 --- a/libgm/binary/raw/client.proto +++ b/libgm/binary/raw/client.proto @@ -9,6 +9,11 @@ message NotifyDittoActivityPayload { bool success = 2; } +message MessageReadPayload { + string conversationID = 2; + string messageID = 3; +} + message AckMessageResponse { AckContainer container = 1; } diff --git a/libgm/binary/raw/messages.proto b/libgm/binary/raw/messages.proto index 579d22d..e886a95 100644 --- a/libgm/binary/raw/messages.proto +++ b/libgm/binary/raw/messages.proto @@ -184,20 +184,52 @@ message ConfigVersion { } enum ActionType { - UNKNOWN_ACTION_TYPE = 0; + UNSPECIFIED = 0; LIST_CONVERSATIONS = 1; LIST_MESSAGES = 2; SEND_MESSAGE = 3; LIST_CONVERSATIONS_SYNC = 1111; + MESSAGE_UPDATES = 4; + LIST_CONTACTS = 6; + CONVERSATION_UPDATES = 7; + GET_OR_CREATE_CONVERSATION = 9; + MESSAGE_READ = 10; + BROWSER_PRESENCE_CHECK = 11; + TYPING_UPDATES = 12; + SETTINGS_UPDATE = 13; + USER_ALERT = 14; UPDATE_CONVERSATION = 15; GET_UPDATES = 16; + ACK_BROWSER_PRESENCE = 17; + LIST_STICKER_SETS = 18; + LEAVE_RCS_GROUP = 19; + ADD_PARTICIPANT_TO_RCS_GROUP = 20; GET_CONVERSATION_TYPE = 21; NOTIFY_DITTO_ACTIVITY = 22; DELETE_MESSAGE = 23; + INSTALL_STICKER_SET = 24; RESEND_MESSAGE = 25; + GET_CONTACT_RCS_GROUP_STATUS = 26; + DOWNLOAD_MESSAGE = 27; + LIST_TOP_CONTACTS = 28; + GET_CONTACTS_THUMBNAIL = 29; + CHANGE_PARTICIPANT_COLOR = 30; IS_BUGLE_DEFAULT = 31; + STICKER_USER_CONTEXT = 32; + FAVORITE_STICKER_PACKS = 33; + RECENT_STICKERS = 34; + UPDATE_RECENT_STICKERS = 35; + GET_FULL_SIZE_IMAGE = 36; GET_PARTICIPANTS_THUMBNAIL = 37; SEND_REACTION = 38; + SEND_REPLY = 39; + GET_BLOB_FOR_ATTACHMENT = 40; + GET_DEVICES_AVAILABLE_FOR_GAIA_PAIRING = 41; + CREATE_GAIA_PAIRING = 42; + GET_CONVERSATION = 43; + CREATE_GAIA_PAIRING_CLIENT_INIT = 44; + CREATE_GAIA_PAIRING_CLIENT_FINISHED = 45; + UNPAIR_GAIA_PAIRING = 46; } enum MessageType { diff --git a/libgm/messages.go b/libgm/messages.go index 4bc103a..eb5a770 100644 --- a/libgm/messages.go +++ b/libgm/messages.go @@ -54,3 +54,20 @@ func (m *Messages) Delete(messageId string) (*binary.DeleteMessageResponse, erro m.client.Logger.Debug().Any("res", res).Msg("deleted message!") return res, nil } + +func (m *Messages) MarkRead(conversationID, messageID string) error { + payload := &binary.MessageReadPayload{ConversationID: conversationID, MessageID: messageID} + actionType := binary.ActionType_MESSAGE_READ + + sentRequestId, sendErr := m.client.sessionHandler.completeSendMessage(actionType, true, payload) + if sendErr != nil { + return sendErr + } + + _, err := m.client.sessionHandler.WaitForResponse(sentRequestId, actionType) + if err != nil { + return err + } + + return nil +} diff --git a/libgm/routes/mapped.go b/libgm/routes/mapped.go index 8b7c0c2..cea20fb 100644 --- a/libgm/routes/mapped.go +++ b/libgm/routes/mapped.go @@ -20,6 +20,7 @@ var Routes = map[binary.ActionType]Route{ binary.ActionType_GET_UPDATES: GET_UPDATES, binary.ActionType_LIST_CONVERSATIONS: LIST_CONVERSATIONS, binary.ActionType_LIST_CONVERSATIONS_SYNC: LIST_CONVERSATIONS_WITH_UPDATES, + binary.ActionType_MESSAGE_READ: MESSAGE_READ, binary.ActionType_NOTIFY_DITTO_ACTIVITY: NOTIFY_DITTO_ACTIVITY, binary.ActionType_GET_CONVERSATION_TYPE: GET_CONVERSATION_TYPE, binary.ActionType_LIST_MESSAGES: LIST_MESSAGES, diff --git a/libgm/routes/messages.go b/libgm/routes/messages.go index 6314a46..4be0a21 100644 --- a/libgm/routes/messages.go +++ b/libgm/routes/messages.go @@ -37,3 +37,12 @@ var DELETE_MESSAGE = Route{ UseSessionID: false, UseTTL: true, } + +var MESSAGE_READ = Route{ + Action: binary.ActionType_MESSAGE_READ, + MessageType: binary.MessageType_BUGLE_MESSAGE, + BugleRoute: binary.BugleRoute_DataEvent, + ResponseStruct: nil, + UseSessionID: false, + UseTTL: true, +} diff --git a/portal.go b/portal.go index 59e5c8c..fd12992 100644 --- a/portal.go +++ b/portal.go @@ -253,8 +253,8 @@ type Portal struct { } var ( - _ bridge.Portal = (*Portal)(nil) - //_ bridge.ReadReceiptHandlingPortal = (*Portal)(nil) + _ bridge.Portal = (*Portal)(nil) + _ bridge.ReadReceiptHandlingPortal = (*Portal)(nil) //_ bridge.MembershipHandlingPortal = (*Portal)(nil) //_ bridge.MetaHandlingPortal = (*Portal)(nil) //_ bridge.TypingPortal = (*Portal)(nil) @@ -1248,6 +1248,41 @@ func (portal *Portal) HandleMatrixMessage(sender *User, evt *event.Event, timing } } +func (portal *Portal) HandleMatrixReadReceipt(brUser bridge.User, eventID id.EventID, receipt event.ReadReceipt) { + user := brUser.(*User) + log := portal.zlog.With(). + Str("event_id", eventID.String()). + Time("receipt_ts", receipt.Timestamp). + Str("action", "handle matrix read receipt"). + Logger() + ctx := log.WithContext(context.TODO()) + log.Debug().Msg("Handling Matrix read receipt") + targetMessage, err := portal.bridge.DB.Message.GetByMXID(ctx, eventID) + if err != nil { + log.Err(err).Msg("Failed to get target message to handle read receipt") + return + } else if targetMessage == nil { + lastMessage, err := portal.bridge.DB.Message.GetLastInChat(ctx, portal.Key) + if err != nil { + log.Err(err).Msg("Failed to get last message to handle read receipt") + return + } else if receipt.Timestamp.Before(lastMessage.Timestamp) { + log.Debug().Msg("Ignoring read receipt for unknown message with timestamp before last message") + return + } else { + log.Debug().Msg("Marking last message in chat as read for receipt targeting unknown message") + } + targetMessage = lastMessage + } + log = log.With().Str("message_id", targetMessage.ID).Logger() + err = user.Client.Messages.MarkRead(portal.ID, targetMessage.ID) + if err != nil { + log.Err(err).Msg("Failed to mark message as read") + } else { + log.Debug().Msg("Marked message as read after Matrix read receipt") + } +} + func (portal *Portal) HandleMatrixReaction(sender *User, evt *event.Event) { err := portal.handleMatrixReaction(sender, evt) go portal.sendMessageMetrics(evt, err, "Error sending", nil) diff --git a/user.go b/user.go index efc2c3d..e66367b 100644 --- a/user.go +++ b/user.go @@ -576,6 +576,7 @@ func (user *User) syncConversation(v *binary.Conversation) { default: portal.UpdateMetadata(user, v) portal.missedForwardBackfill(user, time.UnixMicro(v.LastMessageTimestamp), v.LatestMessageID, !v.GetUnread()) + // TODO sync read status if there was nothing backfilled } } else if updateType == binary.ConvUpdateTypes_UNARCHIVED || updateType == binary.ConvUpdateTypes_ARCHIVED { err := portal.CreateMatrixRoom(user, v)