diff --git a/internal/api/chat.go b/internal/api/chat.go index 12e4f1be..a9b914e5 100644 --- a/internal/api/chat.go +++ b/internal/api/chat.go @@ -41,7 +41,11 @@ import ( ) func NewChat(chatConn, adminConn grpc.ClientConnInterface) *ChatApi { - return &ChatApi{chatClient: chat.NewChatClient(chatConn), adminClient: admin.NewAdminClient(adminConn), imApiCaller: apicall.NewCallerInterface()} + return &ChatApi{ + chatClient: chat.NewChatClient(chatConn), + adminClient: admin.NewAdminClient(adminConn), + imApiCaller: apicall.NewCallerInterface(), + } } type ChatApi struct { @@ -347,3 +351,14 @@ func (o *ChatApi) SearchFriend(c *gin.Context) { } apiresp.GinSuccess(c, resp) } + +func (o *ChatApi) AddEmoticon(c *gin.Context) { + log.ZDebug(c, "hello here api") + a2r.Call(chat.ChatClient.AddEmoticon, o.chatClient, c) +} +func (o *ChatApi) RemoveEmoticon(c *gin.Context) { + a2r.Call(chat.ChatClient.RemoveEmoticon, o.chatClient, c) +} +func (o *ChatApi) GetEmoticon(c *gin.Context) { + a2r.Call(chat.ChatClient.GetEmoticon, o.chatClient, c) +} diff --git a/internal/api/router.go b/internal/api/router.go index 1c3b7c1e..14b937df 100644 --- a/internal/api/router.go +++ b/internal/api/router.go @@ -16,7 +16,6 @@ package api import ( "context" - "github.com/OpenIMSDK/chat/pkg/common/config" "github.com/OpenIMSDK/tools/discoveryregistry" "github.com/gin-gonic/gin" @@ -57,7 +56,13 @@ func NewChatRoute(router gin.IRouter, discov discoveryregistry.SvcDiscoveryRegis router.Group("/callback").POST("/open_im", chat.OpenIMCallback) // Callback logs := router.Group("/logs", mw.CheckToken) + logs.POST("/upload", chat.UploadLogs) + + emoticon := router.Group("/emoticon", mw.CheckToken) + emoticon.POST("/upload", chat.AddEmoticon) + emoticon.POST("/remove", chat.RemoveEmoticon) + emoticon.POST("/get", chat.GetEmoticon) } func NewAdminRoute(router gin.IRouter, discov discoveryregistry.SvcDiscoveryRegistry) { diff --git a/internal/rpc/chat/chat.go b/internal/rpc/chat/chat.go index 2661f6ab..34e05a79 100644 --- a/internal/rpc/chat/chat.go +++ b/internal/rpc/chat/chat.go @@ -40,6 +40,8 @@ func Start(discov discoveryregistry.SvcDiscoveryRegistry, server *grpc.Server) e chat2.VerifyCode{}, chat2.UserLoginRecord{}, chat2.Log{}, + chat2.Emoticon{}, + chat2.Image{}, } if err := db.AutoMigrate(tables...); err != nil { return err diff --git a/internal/rpc/chat/emoticon.go b/internal/rpc/chat/emoticon.go new file mode 100644 index 00000000..db5a5126 --- /dev/null +++ b/internal/rpc/chat/emoticon.go @@ -0,0 +1,123 @@ +package chat + +import ( + "context" + table "github.com/OpenIMSDK/chat/pkg/common/db/table/chat" + "github.com/OpenIMSDK/chat/pkg/proto/chat" + "github.com/OpenIMSDK/tools/errs" + "sync" + "time" +) + +const ( + epoch int64 = 1609459200000 // 设置起始时间 (例如 2021-01-01) + machineIDBits uint8 = 5 // 机器ID所占的位数 + datacenterIDBits uint8 = 5 // 数据中心ID所占的位数 + sequenceBits uint8 = 12 // 序列号所占的位数 + + maxMachineID int64 = -1 ^ (-1 << machineIDBits) // 最大机器ID + maxDatacenterID int64 = -1 ^ (-1 << datacenterIDBits) // 最大数据中心ID + maxSequence int64 = -1 ^ (-1 << sequenceBits) // 最大序列号 + + timeLeft uint8 = 22 // 时间戳向左的位移 + dataLeft uint8 = 17 // 数据中心ID向左的位移 + machineLeft uint8 = 12 // 机器ID向左的位移 +) + +type Snowflake struct { + mutex sync.Mutex // 保护同时访问 + lastTimestamp int64 + datacenterID int64 + machineID int64 + sequence int64 +} + +func NewSnowflake(datacenterID, machineID int64) (*Snowflake, error) { + if datacenterID < 0 || datacenterID > maxDatacenterID { + return nil, errs.ErrData.Wrap("datacenter ID out of rang") + } + if machineID < 0 || machineID > maxMachineID { + return nil, errs.ErrData.Wrap("machine ID out of range") + } + + return &Snowflake{ + lastTimestamp: 0, + datacenterID: datacenterID, + machineID: machineID, + sequence: 0, + }, nil +} + +func (s *Snowflake) Generate() (int64, error) { + s.mutex.Lock() + defer s.mutex.Unlock() + + now := time.Now().UnixNano() / 1e6 // 当前时间的毫秒时间戳 + if s.lastTimestamp == now { + s.sequence = (s.sequence + 1) & maxSequence + if s.sequence == 0 { + for now <= s.lastTimestamp { + now = time.Now().UnixNano() / 1e6 + } + } + } else { + s.sequence = 0 + } + + if now < s.lastTimestamp { + return 0, errs.ErrData.Wrap("clock moved backwards") + } + s.lastTimestamp = now + + id := ((now - epoch) << timeLeft) | (s.datacenterID << dataLeft) | (s.machineID << machineLeft) | s.sequence + return id, nil +} + +func (o *chatSvr) AddEmoticon(ctx context.Context, req *chat.AddEmoticonReq) (*chat.AddEmoticonResp, error) { + sf, err := NewSnowflake(1, 1) + if err != nil { + return nil, err + } + result, err := sf.Generate() + if err != nil { + return nil, err + } + image := &table.Image{ + ID: result, + ImageURL: req.ImageData, + OwnerID: req.OwnerId, + } + err = o.Database.AddImage(ctx, image) + if err != nil { + return nil, err + } + + return &chat.AddEmoticonResp{}, nil +} +func (o *chatSvr) RemoveEmoticon(ctx context.Context, req *chat.RemoveEmoticonReq) (*chat.RemoveEmoticonResp, error) { + + err := o.Database.RemoveImage(ctx, req.UserId, req.EmoticonId) + if err != nil { + return nil, err + } + + return &chat.RemoveEmoticonResp{}, nil +} +func (o *chatSvr) GetEmoticon(ctx context.Context, req *chat.GetEmoticonReq) (*chat.GetEmoticonResp, error) { + + results, err := o.Database.GetImages(ctx, req.UserId) + if err != nil { + return nil, err + } + + pbEmoticons := make([]*chat.Emoticon, 0) + for _, result := range results { + pbEmoticons = append(pbEmoticons, &chat.Emoticon{ + ImageURL: result.ImageURL, + EmoticonId: result.ID, + UserId: result.OwnerID, + }) + } + + return &chat.GetEmoticonResp{E: pbEmoticons}, nil +} diff --git a/internal/rpc/chat/login.go b/internal/rpc/chat/login.go index 7b584b31..d5d50308 100644 --- a/internal/rpc/chat/login.go +++ b/internal/rpc/chat/login.go @@ -95,14 +95,14 @@ func (o *chatSvr) SendVerifyCode(ctx context.Context, req *chat.SendVerifyCodeRe if req.Email == "" { _, err := o.Database.TakeAttributeByPhone(ctx, req.AreaCode, req.PhoneNumber) if o.Database.IsNotFound(err) { - return nil, eerrs.ErrAccountNotFound.Wrap("phone unregistered") + return nil, errs.ErrArgs.Wrap("phone unregistered") } else if err != nil { return nil, err } } else { _, err := o.Database.TakeAttributeByEmail(ctx, req.Email) if o.Database.IsNotFound(err) { - return nil, eerrs.ErrAccountNotFound.Wrap("email unregistered") + return nil, errs.ErrArgs.Wrap("email unregistered") } else if err != nil { return nil, err } diff --git a/internal/rpc/chat/password.go b/internal/rpc/chat/password.go index 37c82893..3c823e5b 100644 --- a/internal/rpc/chat/password.go +++ b/internal/rpc/chat/password.go @@ -30,6 +30,19 @@ func (o *chatSvr) ResetPassword(ctx context.Context, req *chat.ResetPasswordReq) if req.Password == "" { return nil, errs.ErrArgs.Wrap("password must be set") } +if req.Email == "" { + _, err := o.Database.GetAttributeByPhone(ctx, req.AreaCode, req.PhoneNumber) + if err != nil { + return nil, err + } + } else { + _, err := o.Database.GetAttributeByEmail(ctx, req.Email) + if err != nil { + return nil, err + } + } + + var verifyCodeID uint var err error if req.Email == "" { diff --git a/pkg/common/db/database/chat.go b/pkg/common/db/database/chat.go index 414cb915..05f57fa8 100644 --- a/pkg/common/db/database/chat.go +++ b/pkg/common/db/database/chat.go @@ -61,6 +61,10 @@ type ChatDatabaseInterface interface { DeleteLogs(ctx context.Context, logID []string, userID string) error SearchLogs(ctx context.Context, keyword string, start time.Time, end time.Time, pageNumber int32, showNumber int32) (uint32, []*table.Log, error) GetLogs(ctx context.Context, LogIDs []string, userID string) ([]*table.Log, error) + + AddImage(ctx context.Context, image *table.Image) error + RemoveImage(ctx context.Context, userID string, imageID int64) error + GetImages(ctx context.Context, userID string) ([]*table.Image, error) } func NewChatDatabase(db *gorm.DB) ChatDatabaseInterface { @@ -73,6 +77,7 @@ func NewChatDatabase(db *gorm.DB) ChatDatabaseInterface { verifyCode: chat.NewVerifyCode(db), forbiddenAccount: admin2.NewForbiddenAccount(db), log: chat.NewLogs(db), + emoticon: chat.NewEmoticons(db), } } @@ -85,6 +90,19 @@ type ChatDatabase struct { verifyCode table.VerifyCodeInterface forbiddenAccount admin.ForbiddenAccountInterface log table.LogInterface + emoticon table.EmoticonInterface +} + +func (o *ChatDatabase) AddImage(ctx context.Context, image *table.Image) error { + return o.emoticon.AddImage(ctx, image) +} + +func (o *ChatDatabase) RemoveImage(ctx context.Context, userID string, imageID int64) error { + return o.emoticon.DeleteImage(ctx, userID, imageID) +} + +func (o *ChatDatabase) GetImages(ctx context.Context, userID string) ([]*table.Image, error) { + return o.emoticon.GetImages(ctx, userID) } func (o *ChatDatabase) GetLogs(ctx context.Context, LogIDs []string, userID string) ([]*table.Log, error) { diff --git a/pkg/common/db/model/chat/emoticon.go b/pkg/common/db/model/chat/emoticon.go new file mode 100644 index 00000000..794c1781 --- /dev/null +++ b/pkg/common/db/model/chat/emoticon.go @@ -0,0 +1,52 @@ +package chat + +import ( + "context" + "github.com/OpenIMSDK/chat/pkg/common/db/table/chat" + "github.com/OpenIMSDK/tools/errs" + "gorm.io/gorm" +) + +type Emoticons struct { + db *gorm.DB +} + +func (e *Emoticons) AddEmoticon(ctx context.Context, emoticon *chat.Emoticon) error { + result := e.db.WithContext(ctx).Create(emoticon) + return errs.Wrap(result.Error) // Wrap the error using the errs package +} + +func (e *Emoticons) DeleteEmoticon(ctx context.Context, userID string, emoticonID int64) error { + result := e.db.WithContext(ctx).Where("id = ? AND owner_id = ?", emoticonID, userID).Delete(&chat.Emoticon{}) + return errs.Wrap(result.Error) +} + +func (e *Emoticons) GetEmoticon(ctx context.Context, userID string, emoticonID int64) (*chat.Emoticon, error) { + var emoticon chat.Emoticon + result := e.db.WithContext(ctx).Where("id = ? AND owner_id = ?", emoticonID, userID).First(&emoticon) + if result.Error != nil { + return nil, errs.Wrap(result.Error) + } + return &emoticon, nil +} + +func (e *Emoticons) AddImage(ctx context.Context, image *chat.Image) error { + result := e.db.WithContext(ctx).Create(image) + return errs.Wrap(result.Error) +} +func (e *Emoticons) DeleteImage(ctx context.Context, userID string, imageID int64) error { + result := e.db.WithContext(ctx).Where("id = ? AND owner_id = ?", imageID, userID).Delete(&chat.Image{}) + return errs.Wrap(result.Error) +} +func (e *Emoticons) GetImages(ctx context.Context, userID string) ([]*chat.Image, error) { + var images []*chat.Image + result := e.db.WithContext(ctx).Where("owner_id = ?", userID).Find(&images) + if result.Error != nil { + return nil, errs.Wrap(result.Error) + } + return images, nil +} + +func NewEmoticons(db *gorm.DB) chat.EmoticonInterface { + return &Emoticons{db: db} +} diff --git a/pkg/common/db/table/chat/emoticon.go b/pkg/common/db/table/chat/emoticon.go new file mode 100644 index 00000000..0dd8946c --- /dev/null +++ b/pkg/common/db/table/chat/emoticon.go @@ -0,0 +1,35 @@ +package chat + +import ( + "context" +) + +type Image struct { + ID int64 `gorm:"column:id;primary_key;"` + ImageURL string `gorm:"column:image_url;type:varchar(255)"` + //EmoticonID string `gorm:"column:owner_id;type:char(64)"` + OwnerID string `gorm:"column:owner_id;type:char(64)"` +} + +func (Image) TableName() string { + return "images" +} + +type Emoticon struct { + EmoticonID int64 `gorm:"column:id;primary_key;"` + OwnerID string `gorm:"column:owner_id;type:char(64)"` +} + +func (Emoticon) TableName() string { + return "emoticons" +} + +type EmoticonInterface interface { + AddEmoticon(ctx context.Context, emoticon *Emoticon) error + DeleteEmoticon(ctx context.Context, userID string, emoticonID int64) error + GetEmoticon(ctx context.Context, userID string, emoticonID int64) (*Emoticon, error) + + AddImage(ctx context.Context, image *Image) error + DeleteImage(ctx context.Context, userID string, imageID int64) error + GetImages(ctx context.Context, userID string) ([]*Image, error) +} diff --git a/pkg/proto/chat/chat.go b/pkg/proto/chat/chat.go index c7c4dd19..3768b284 100644 --- a/pkg/proto/chat/chat.go +++ b/pkg/proto/chat/chat.go @@ -317,6 +317,31 @@ func (x *SearchUserInfoReq) Check() error { return nil } +func (e *AddEmoticonReq) Check() error { + if e.OwnerId == "" { + return errs.ErrArgs.Wrap("emoticon ID is empty") + } + if e.ImageData == "" { + return errs.ErrArgs.Wrap("image URL is empty") + } + return nil +} + +// Check RemoveEmoticon +func (e *RemoveEmoticonReq) Check() error { + if e.EmoticonId == 0 { + return errs.ErrArgs.Wrap("emoticon ID is empty") + } + return nil +} + +// Check GetEmoticon +func (e *GetEmoticonReq) Check() error { + if e.UserId == "" { + return errs.ErrArgs.Wrap("User ID is empty") + } + return nil +} func (x *AddUserAccountReq) Check() error { if x.User == nil { return errs.ErrArgs.Wrap("user is empty") @@ -340,6 +365,5 @@ func (x *AddUserAccountReq) Check() error { return errs.ErrArgs.Wrap("email must be right") } } - return nil } diff --git a/pkg/proto/chat/chat.pb.go b/pkg/proto/chat/chat.pb.go index 03ade117..f6526099 100644 --- a/pkg/proto/chat/chat.pb.go +++ b/pkg/proto/chat/chat.pb.go @@ -3088,6 +3088,350 @@ func (x *SearchUserInfoResp) GetUsers() []*common.UserFullInfo { return nil } +type Emoticon struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + EmoticonId int64 `protobuf:"varint,1,opt,name=emoticon_id,json=emoticonId,proto3" json:"emoticon_id"` + ImageURL string `protobuf:"bytes,2,opt,name=imageURL,proto3" json:"imageURL"` + UserId string `protobuf:"bytes,3,opt,name=user_id,json=userId,proto3" json:"user_id"` +} + +func (x *Emoticon) Reset() { + *x = Emoticon{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_chat_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Emoticon) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Emoticon) ProtoMessage() {} + +func (x *Emoticon) ProtoReflect() protoreflect.Message { + mi := &file_chat_chat_proto_msgTypes[48] + 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 Emoticon.ProtoReflect.Descriptor instead. +func (*Emoticon) Descriptor() ([]byte, []int) { + return file_chat_chat_proto_rawDescGZIP(), []int{48} +} + +func (x *Emoticon) GetEmoticonId() int64 { + if x != nil { + return x.EmoticonId + } + return 0 +} + +func (x *Emoticon) GetImageURL() string { + if x != nil { + return x.ImageURL + } + return "" +} + +func (x *Emoticon) GetUserId() string { + if x != nil { + return x.UserId + } + return "" +} + +type AddEmoticonReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OwnerId string `protobuf:"bytes,1,opt,name=owner_id,json=ownerId,proto3" json:"owner_id"` + ImageData string `protobuf:"bytes,2,opt,name=image_data,json=imageData,proto3" json:"image_data"` +} + +func (x *AddEmoticonReq) Reset() { + *x = AddEmoticonReq{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_chat_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AddEmoticonReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AddEmoticonReq) ProtoMessage() {} + +func (x *AddEmoticonReq) ProtoReflect() protoreflect.Message { + mi := &file_chat_chat_proto_msgTypes[49] + 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 AddEmoticonReq.ProtoReflect.Descriptor instead. +func (*AddEmoticonReq) Descriptor() ([]byte, []int) { + return file_chat_chat_proto_rawDescGZIP(), []int{49} +} + +func (x *AddEmoticonReq) GetOwnerId() string { + if x != nil { + return x.OwnerId + } + return "" +} + +func (x *AddEmoticonReq) GetImageData() string { + if x != nil { + return x.ImageData + } + return "" +} + +type AddEmoticonResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *AddEmoticonResp) Reset() { + *x = AddEmoticonResp{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_chat_proto_msgTypes[50] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AddEmoticonResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AddEmoticonResp) ProtoMessage() {} + +func (x *AddEmoticonResp) ProtoReflect() protoreflect.Message { + mi := &file_chat_chat_proto_msgTypes[50] + 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 AddEmoticonResp.ProtoReflect.Descriptor instead. +func (*AddEmoticonResp) Descriptor() ([]byte, []int) { + return file_chat_chat_proto_rawDescGZIP(), []int{50} +} + +// Request to remove an emoticon from user's storage +type RemoveEmoticonReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id"` + EmoticonId int64 `protobuf:"varint,2,opt,name=emoticon_id,json=emoticonId,proto3" json:"emoticon_id"` +} + +func (x *RemoveEmoticonReq) Reset() { + *x = RemoveEmoticonReq{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_chat_proto_msgTypes[51] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RemoveEmoticonReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RemoveEmoticonReq) ProtoMessage() {} + +func (x *RemoveEmoticonReq) ProtoReflect() protoreflect.Message { + mi := &file_chat_chat_proto_msgTypes[51] + 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 RemoveEmoticonReq.ProtoReflect.Descriptor instead. +func (*RemoveEmoticonReq) Descriptor() ([]byte, []int) { + return file_chat_chat_proto_rawDescGZIP(), []int{51} +} + +func (x *RemoveEmoticonReq) GetUserId() string { + if x != nil { + return x.UserId + } + return "" +} + +func (x *RemoveEmoticonReq) GetEmoticonId() int64 { + if x != nil { + return x.EmoticonId + } + return 0 +} + +type RemoveEmoticonResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *RemoveEmoticonResp) Reset() { + *x = RemoveEmoticonResp{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_chat_proto_msgTypes[52] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RemoveEmoticonResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RemoveEmoticonResp) ProtoMessage() {} + +func (x *RemoveEmoticonResp) ProtoReflect() protoreflect.Message { + mi := &file_chat_chat_proto_msgTypes[52] + 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 RemoveEmoticonResp.ProtoReflect.Descriptor instead. +func (*RemoveEmoticonResp) Descriptor() ([]byte, []int) { + return file_chat_chat_proto_rawDescGZIP(), []int{52} +} + +type GetEmoticonReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id"` +} + +func (x *GetEmoticonReq) Reset() { + *x = GetEmoticonReq{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_chat_proto_msgTypes[53] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetEmoticonReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetEmoticonReq) ProtoMessage() {} + +func (x *GetEmoticonReq) ProtoReflect() protoreflect.Message { + mi := &file_chat_chat_proto_msgTypes[53] + 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 GetEmoticonReq.ProtoReflect.Descriptor instead. +func (*GetEmoticonReq) Descriptor() ([]byte, []int) { + return file_chat_chat_proto_rawDescGZIP(), []int{53} +} + +func (x *GetEmoticonReq) GetUserId() string { + if x != nil { + return x.UserId + } + return "" +} + +type GetEmoticonResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + E []*Emoticon `protobuf:"bytes,1,rep,name=e,proto3" json:"e"` +} + +func (x *GetEmoticonResp) Reset() { + *x = GetEmoticonResp{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_chat_proto_msgTypes[54] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetEmoticonResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetEmoticonResp) ProtoMessage() {} + +func (x *GetEmoticonResp) ProtoReflect() protoreflect.Message { + mi := &file_chat_chat_proto_msgTypes[54] + 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 GetEmoticonResp.ProtoReflect.Descriptor instead. +func (*GetEmoticonResp) Descriptor() ([]byte, []int) { + return file_chat_chat_proto_rawDescGZIP(), []int{54} +} + +func (x *GetEmoticonResp) GetE() []*Emoticon { + if x != nil { + return x.E + } + return nil +} + var File_chat_chat_proto protoreflect.FileDescriptor var file_chat_chat_proto_rawDesc = []byte{ @@ -3508,135 +3852,175 @@ var file_chat_chat_proto_rawDesc = []byte{ 0x61, 0x6c, 0x12, 0x35, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x32, 0xc3, 0x0f, 0x0a, 0x04, 0x63, 0x68, - 0x61, 0x74, 0x12, 0x59, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, - 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, - 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, - 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x59, 0x0a, - 0x0e, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, - 0x74, 0x2e, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, - 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6b, 0x0a, 0x14, 0x53, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x28, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, - 0x61, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, - 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x29, 0x2e, 0x4f, 0x70, 0x65, - 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x65, 0x0a, 0x12, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, - 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x26, 0x2e, 0x4f, 0x70, - 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x46, 0x69, - 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x65, 0x71, 0x1a, 0x27, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, - 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, - 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x65, 0x0a, 0x12, - 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, - 0x66, 0x6f, 0x12, 0x26, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, - 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x46, - 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x27, 0x2e, 0x4f, 0x70, 0x65, - 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x5f, 0x0a, 0x10, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x46, - 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, - 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, - 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, - 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, - 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x59, 0x0a, 0x0e, 0x53, 0x65, 0x6e, 0x64, 0x56, 0x65, 0x72, 0x69, - 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, - 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x56, 0x65, 0x72, - 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x4f, 0x70, 0x65, - 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x6e, - 0x64, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x4d, 0x0a, 0x0a, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1e, 0x2e, + 0x66, 0x6f, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x22, 0x60, 0x0a, 0x08, 0x45, 0x6d, 0x6f, + 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x6d, 0x6f, 0x74, 0x69, 0x63, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x65, 0x6d, 0x6f, 0x74, + 0x69, 0x63, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, + 0x52, 0x4c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, + 0x52, 0x4c, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x4a, 0x0a, 0x0e, 0x41, + 0x64, 0x64, 0x45, 0x6d, 0x6f, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a, + 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, + 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x22, 0x11, 0x0a, 0x0f, 0x41, 0x64, 0x64, 0x45, 0x6d, + 0x6f, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x4d, 0x0a, 0x11, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x45, 0x6d, 0x6f, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, + 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x6d, 0x6f, 0x74, + 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x65, + 0x6d, 0x6f, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x45, 0x6d, 0x6f, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, + 0x29, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x45, 0x6d, 0x6f, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x3a, 0x0a, 0x0f, 0x47, 0x65, + 0x74, 0x45, 0x6d, 0x6f, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x27, 0x0a, + 0x01, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, + 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x45, 0x6d, 0x6f, 0x74, 0x69, + 0x63, 0x6f, 0x6e, 0x52, 0x01, 0x65, 0x32, 0xc2, 0x11, 0x0a, 0x04, 0x63, 0x68, 0x61, 0x74, 0x12, + 0x59, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, + 0x68, 0x61, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, + 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, + 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x59, 0x0a, 0x0e, 0x41, 0x64, + 0x64, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, 0x2e, 0x4f, + 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x41, + 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, + 0x1a, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, + 0x61, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6b, 0x0a, 0x14, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, + 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x28, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, - 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, + 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x29, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, + 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x65, 0x0a, 0x12, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, + 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x26, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, + 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, + 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, + 0x1a, 0x27, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, + 0x61, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, + 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x65, 0x0a, 0x12, 0x53, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x26, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, + 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x27, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, + 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x55, 0x73, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x5f, 0x0a, 0x10, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, + 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x46, + 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x4f, 0x70, 0x65, + 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x46, 0x69, 0x6e, + 0x64, 0x55, 0x73, 0x65, 0x72, 0x46, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x59, 0x0a, 0x0e, 0x53, 0x65, 0x6e, 0x64, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, + 0x6f, 0x64, 0x65, 0x12, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, + 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, + 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, + 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x56, 0x65, + 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4d, 0x0a, 0x0a, + 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1e, 0x2e, 0x4f, 0x70, 0x65, + 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x56, 0x65, 0x72, + 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x4f, 0x70, 0x65, + 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x56, 0x65, 0x72, + 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x53, 0x0a, 0x0c, 0x52, + 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x12, 0x20, 0x2e, 0x4f, 0x70, + 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x52, 0x65, + 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, - 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x53, - 0x0a, 0x0c, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x12, 0x20, - 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, - 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, - 0x1a, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, - 0x61, 0x74, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x3e, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x19, 0x2e, 0x4f, - 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x4c, - 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, - 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x56, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x65, 0x74, 0x50, 0x61, 0x73, 0x73, - 0x77, 0x6f, 0x72, 0x64, 0x12, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, + 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x3e, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x19, 0x2e, 0x4f, 0x70, 0x65, 0x6e, + 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x4c, 0x6f, 0x67, 0x69, + 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, + 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x56, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x65, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, + 0x64, 0x12, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, + 0x68, 0x61, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, + 0x64, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x50, 0x61, 0x73, 0x73, - 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, - 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x50, - 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x59, 0x0a, 0x0e, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x22, 0x2e, - 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, - 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, - 0x71, 0x1a, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, - 0x68, 0x61, 0x74, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, - 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5c, 0x0a, 0x0f, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, - 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, - 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x64, - 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x24, - 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, - 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x5c, 0x0a, 0x0f, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, - 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x4f, - 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x46, - 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x5c, 0x0a, 0x0f, 0x41, 0x64, 0x64, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, - 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, - 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x53, 0x69, 0x67, 0x6e, 0x61, - 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x4f, 0x70, 0x65, - 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x41, 0x64, 0x64, - 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x5f, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x63, - 0x6f, 0x72, 0x64, 0x73, 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, - 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, - 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x4f, 0x70, 0x65, - 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, - 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x59, 0x0a, 0x0e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x61, 0x6c, 0x6c, 0x62, - 0x61, 0x63, 0x6b, 0x12, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, - 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x61, 0x6c, 0x6c, - 0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, - 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, - 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x59, 0x0a, 0x0e, - 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, + 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x59, 0x0a, 0x0e, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x22, 0x2e, 0x4f, 0x70, 0x65, + 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x43, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, - 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, - 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, - 0x63, 0x68, 0x61, 0x74, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4d, 0x0a, 0x0a, 0x55, 0x70, 0x6c, 0x6f, 0x61, - 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x1e, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, - 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, - 0x67, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, - 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, - 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4d, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x1e, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, - 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4c, 0x6f, 0x67, - 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, - 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4c, 0x6f, 0x67, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4d, 0x0a, 0x0a, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, - 0x6f, 0x67, 0x73, 0x12, 0x1e, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, - 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x6f, 0x67, 0x73, - 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, - 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x6f, 0x67, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x59, 0x0a, 0x0e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, - 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, - 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, - 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x4f, 0x70, 0x65, - 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x42, - 0x2a, 0x5a, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4f, 0x70, - 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x44, 0x4b, 0x2f, 0x63, 0x68, 0x61, 0x74, 0x2f, 0x70, 0x6b, 0x67, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x68, 0x61, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x5c, 0x0a, 0x0f, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, + 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, + 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x4f, 0x70, + 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x46, 0x69, + 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x5c, 0x0a, 0x0f, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x55, 0x73, 0x65, 0x72, 0x12, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, + 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, + 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x64, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x5c, 0x0a, 0x0f, 0x41, 0x64, 0x64, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x12, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, + 0x63, 0x68, 0x61, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, + 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x53, 0x69, 0x67, + 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5f, 0x0a, + 0x10, 0x47, 0x65, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x73, 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, + 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, + 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x69, 0x67, + 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x59, + 0x0a, 0x0e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, + 0x12, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, + 0x61, 0x74, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, + 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, + 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x61, 0x6c, + 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x59, 0x0a, 0x0e, 0x55, 0x73, 0x65, + 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, 0x2e, 0x4f, 0x70, + 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x55, 0x73, + 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, + 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, + 0x74, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x4d, 0x0a, 0x0a, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, + 0x67, 0x73, 0x12, 0x1e, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, + 0x63, 0x68, 0x61, 0x74, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x52, + 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, + 0x63, 0x68, 0x61, 0x74, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x4d, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4c, 0x6f, 0x67, + 0x73, 0x12, 0x1e, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, + 0x68, 0x61, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, + 0x71, 0x1a, 0x1f, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, + 0x68, 0x61, 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x4d, 0x0a, 0x0a, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x6f, 0x67, 0x73, + 0x12, 0x1e, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, + 0x61, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, + 0x1a, 0x1f, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, + 0x61, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x59, 0x0a, 0x0e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x49, + 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, + 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, + 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x50, 0x0a, 0x0b, + 0x41, 0x64, 0x64, 0x45, 0x6d, 0x6f, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x1f, 0x2e, 0x4f, 0x70, + 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x41, 0x64, + 0x64, 0x45, 0x6d, 0x6f, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x4f, + 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x41, + 0x64, 0x64, 0x45, 0x6d, 0x6f, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x59, + 0x0a, 0x0e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x45, 0x6d, 0x6f, 0x74, 0x69, 0x63, 0x6f, 0x6e, + 0x12, 0x22, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, + 0x61, 0x74, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x45, 0x6d, 0x6f, 0x74, 0x69, 0x63, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x43, 0x68, 0x61, + 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x45, 0x6d, 0x6f, + 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x50, 0x0a, 0x0b, 0x47, 0x65, 0x74, + 0x45, 0x6d, 0x6f, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x1f, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, + 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6d, + 0x6f, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x4f, 0x70, 0x65, 0x6e, + 0x49, 0x4d, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x45, + 0x6d, 0x6f, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x42, 0x2a, 0x5a, 0x28, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, + 0x53, 0x44, 0x4b, 0x2f, 0x63, 0x68, 0x61, 0x74, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2f, 0x63, 0x68, 0x61, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3651,7 +4035,7 @@ func file_chat_chat_proto_rawDescGZIP() []byte { return file_chat_chat_proto_rawDescData } -var file_chat_chat_proto_msgTypes = make([]protoimpl.MessageInfo, 51) +var file_chat_chat_proto_msgTypes = make([]protoimpl.MessageInfo, 58) var file_chat_chat_proto_goTypes = []interface{}{ (*UserIdentity)(nil), // 0: OpenIMChat.chat.UserIdentity (*UpdateUserInfoReq)(nil), // 1: OpenIMChat.chat.UpdateUserInfoReq @@ -3701,101 +4085,115 @@ var file_chat_chat_proto_goTypes = []interface{}{ (*SearchLogsResp)(nil), // 45: OpenIMChat.chat.SearchLogsResp (*SearchUserInfoReq)(nil), // 46: OpenIMChat.chat.SearchUserInfoReq (*SearchUserInfoResp)(nil), // 47: OpenIMChat.chat.SearchUserInfoResp - nil, // 48: OpenIMChat.chat.FindUserAccountResp.UserAccountMapEntry - nil, // 49: OpenIMChat.chat.FindAccountUserResp.AccountUserMapEntry - nil, // 50: OpenIMChat.chat.UserLoginCountResp.CountEntry - (*wrapperspb.StringValue)(nil), // 51: OpenIMServer.protobuf.StringValue - (*wrapperspb.Int32Value)(nil), // 52: OpenIMServer.protobuf.Int32Value - (*wrapperspb.Int64Value)(nil), // 53: OpenIMServer.protobuf.Int64Value - (*common.UserPublicInfo)(nil), // 54: OpenIMChat.common.UserPublicInfo - (*sdkws.RequestPagination)(nil), // 55: OpenIMServer.sdkws.RequestPagination - (*common.UserFullInfo)(nil), // 56: OpenIMChat.common.UserFullInfo - (*common.LogInfo)(nil), // 57: OpenIMChat.common.LogInfo + (*Emoticon)(nil), // 48: OpenIMChat.chat.Emoticon + (*AddEmoticonReq)(nil), // 49: OpenIMChat.chat.AddEmoticonReq + (*AddEmoticonResp)(nil), // 50: OpenIMChat.chat.AddEmoticonResp + (*RemoveEmoticonReq)(nil), // 51: OpenIMChat.chat.RemoveEmoticonReq + (*RemoveEmoticonResp)(nil), // 52: OpenIMChat.chat.RemoveEmoticonResp + (*GetEmoticonReq)(nil), // 53: OpenIMChat.chat.GetEmoticonReq + (*GetEmoticonResp)(nil), // 54: OpenIMChat.chat.GetEmoticonResp + nil, // 55: OpenIMChat.chat.FindUserAccountResp.UserAccountMapEntry + nil, // 56: OpenIMChat.chat.FindAccountUserResp.AccountUserMapEntry + nil, // 57: OpenIMChat.chat.UserLoginCountResp.CountEntry + (*wrapperspb.StringValue)(nil), // 58: OpenIMServer.protobuf.StringValue + (*wrapperspb.Int32Value)(nil), // 59: OpenIMServer.protobuf.Int32Value + (*wrapperspb.Int64Value)(nil), // 60: OpenIMServer.protobuf.Int64Value + (*common.UserPublicInfo)(nil), // 61: OpenIMChat.common.UserPublicInfo + (*sdkws.RequestPagination)(nil), // 62: OpenIMServer.sdkws.RequestPagination + (*common.UserFullInfo)(nil), // 63: OpenIMChat.common.UserFullInfo + (*common.LogInfo)(nil), // 64: OpenIMChat.common.LogInfo } var file_chat_chat_proto_depIdxs = []int32{ - 51, // 0: OpenIMChat.chat.UpdateUserInfoReq.account:type_name -> OpenIMServer.protobuf.StringValue - 51, // 1: OpenIMChat.chat.UpdateUserInfoReq.phoneNumber:type_name -> OpenIMServer.protobuf.StringValue - 51, // 2: OpenIMChat.chat.UpdateUserInfoReq.areaCode:type_name -> OpenIMServer.protobuf.StringValue - 51, // 3: OpenIMChat.chat.UpdateUserInfoReq.email:type_name -> OpenIMServer.protobuf.StringValue - 51, // 4: OpenIMChat.chat.UpdateUserInfoReq.nickname:type_name -> OpenIMServer.protobuf.StringValue - 51, // 5: OpenIMChat.chat.UpdateUserInfoReq.faceURL:type_name -> OpenIMServer.protobuf.StringValue - 52, // 6: OpenIMChat.chat.UpdateUserInfoReq.gender:type_name -> OpenIMServer.protobuf.Int32Value - 52, // 7: OpenIMChat.chat.UpdateUserInfoReq.level:type_name -> OpenIMServer.protobuf.Int32Value - 53, // 8: OpenIMChat.chat.UpdateUserInfoReq.birth:type_name -> OpenIMServer.protobuf.Int64Value - 52, // 9: OpenIMChat.chat.UpdateUserInfoReq.allowAddFriend:type_name -> OpenIMServer.protobuf.Int32Value - 52, // 10: OpenIMChat.chat.UpdateUserInfoReq.allowBeep:type_name -> OpenIMServer.protobuf.Int32Value - 52, // 11: OpenIMChat.chat.UpdateUserInfoReq.allowVibration:type_name -> OpenIMServer.protobuf.Int32Value - 52, // 12: OpenIMChat.chat.UpdateUserInfoReq.globalRecvMsgOpt:type_name -> OpenIMServer.protobuf.Int32Value - 52, // 13: OpenIMChat.chat.UpdateUserInfoReq.RegisterType:type_name -> OpenIMServer.protobuf.Int32Value - 54, // 14: OpenIMChat.chat.FindUserPublicInfoResp.users:type_name -> OpenIMChat.common.UserPublicInfo - 55, // 15: OpenIMChat.chat.SearchUserPublicInfoReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination - 54, // 16: OpenIMChat.chat.SearchUserPublicInfoResp.users:type_name -> OpenIMChat.common.UserPublicInfo - 56, // 17: OpenIMChat.chat.FindUserFullInfoResp.users:type_name -> OpenIMChat.common.UserFullInfo + 58, // 0: OpenIMChat.chat.UpdateUserInfoReq.account:type_name -> OpenIMServer.protobuf.StringValue + 58, // 1: OpenIMChat.chat.UpdateUserInfoReq.phoneNumber:type_name -> OpenIMServer.protobuf.StringValue + 58, // 2: OpenIMChat.chat.UpdateUserInfoReq.areaCode:type_name -> OpenIMServer.protobuf.StringValue + 58, // 3: OpenIMChat.chat.UpdateUserInfoReq.email:type_name -> OpenIMServer.protobuf.StringValue + 58, // 4: OpenIMChat.chat.UpdateUserInfoReq.nickname:type_name -> OpenIMServer.protobuf.StringValue + 58, // 5: OpenIMChat.chat.UpdateUserInfoReq.faceURL:type_name -> OpenIMServer.protobuf.StringValue + 59, // 6: OpenIMChat.chat.UpdateUserInfoReq.gender:type_name -> OpenIMServer.protobuf.Int32Value + 59, // 7: OpenIMChat.chat.UpdateUserInfoReq.level:type_name -> OpenIMServer.protobuf.Int32Value + 60, // 8: OpenIMChat.chat.UpdateUserInfoReq.birth:type_name -> OpenIMServer.protobuf.Int64Value + 59, // 9: OpenIMChat.chat.UpdateUserInfoReq.allowAddFriend:type_name -> OpenIMServer.protobuf.Int32Value + 59, // 10: OpenIMChat.chat.UpdateUserInfoReq.allowBeep:type_name -> OpenIMServer.protobuf.Int32Value + 59, // 11: OpenIMChat.chat.UpdateUserInfoReq.allowVibration:type_name -> OpenIMServer.protobuf.Int32Value + 59, // 12: OpenIMChat.chat.UpdateUserInfoReq.globalRecvMsgOpt:type_name -> OpenIMServer.protobuf.Int32Value + 59, // 13: OpenIMChat.chat.UpdateUserInfoReq.RegisterType:type_name -> OpenIMServer.protobuf.Int32Value + 61, // 14: OpenIMChat.chat.FindUserPublicInfoResp.users:type_name -> OpenIMChat.common.UserPublicInfo + 62, // 15: OpenIMChat.chat.SearchUserPublicInfoReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination + 61, // 16: OpenIMChat.chat.SearchUserPublicInfoResp.users:type_name -> OpenIMChat.common.UserPublicInfo + 63, // 17: OpenIMChat.chat.FindUserFullInfoResp.users:type_name -> OpenIMChat.common.UserFullInfo 13, // 18: OpenIMChat.chat.RegisterUserReq.user:type_name -> OpenIMChat.chat.RegisterUserInfo 13, // 19: OpenIMChat.chat.AddUserAccountReq.user:type_name -> OpenIMChat.chat.RegisterUserInfo - 48, // 20: OpenIMChat.chat.FindUserAccountResp.userAccountMap:type_name -> OpenIMChat.chat.FindUserAccountResp.UserAccountMapEntry - 49, // 21: OpenIMChat.chat.FindAccountUserResp.accountUserMap:type_name -> OpenIMChat.chat.FindAccountUserResp.AccountUserMapEntry - 54, // 22: OpenIMChat.chat.SignalRecord.inviterUserList:type_name -> OpenIMChat.common.UserPublicInfo + 55, // 20: OpenIMChat.chat.FindUserAccountResp.userAccountMap:type_name -> OpenIMChat.chat.FindUserAccountResp.UserAccountMapEntry + 56, // 21: OpenIMChat.chat.FindAccountUserResp.accountUserMap:type_name -> OpenIMChat.chat.FindAccountUserResp.AccountUserMapEntry + 61, // 22: OpenIMChat.chat.SignalRecord.inviterUserList:type_name -> OpenIMChat.common.UserPublicInfo 28, // 23: OpenIMChat.chat.AddSignalRecordReq.signalRecord:type_name -> OpenIMChat.chat.SignalRecord - 55, // 24: OpenIMChat.chat.GetSignalRecordsReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination + 62, // 24: OpenIMChat.chat.GetSignalRecordsReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination 28, // 25: OpenIMChat.chat.GetSignalRecordsResp.signalRecords:type_name -> OpenIMChat.chat.SignalRecord - 55, // 26: OpenIMChat.chat.SearchUserFullInfoReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination - 56, // 27: OpenIMChat.chat.SearchUserFullInfoResp.users:type_name -> OpenIMChat.common.UserFullInfo - 50, // 28: OpenIMChat.chat.UserLoginCountResp.Count:type_name -> OpenIMChat.chat.UserLoginCountResp.CountEntry + 62, // 26: OpenIMChat.chat.SearchUserFullInfoReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination + 63, // 27: OpenIMChat.chat.SearchUserFullInfoResp.users:type_name -> OpenIMChat.common.UserFullInfo + 57, // 28: OpenIMChat.chat.UserLoginCountResp.Count:type_name -> OpenIMChat.chat.UserLoginCountResp.CountEntry 39, // 29: OpenIMChat.chat.UploadLogsReq.fileURLs:type_name -> OpenIMChat.chat.fileURL - 55, // 30: OpenIMChat.chat.SearchLogsReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination - 57, // 31: OpenIMChat.chat.SearchLogsResp.LogsInfos:type_name -> OpenIMChat.common.LogInfo - 55, // 32: OpenIMChat.chat.SearchUserInfoReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination - 56, // 33: OpenIMChat.chat.SearchUserInfoResp.users:type_name -> OpenIMChat.common.UserFullInfo - 1, // 34: OpenIMChat.chat.chat.UpdateUserInfo:input_type -> OpenIMChat.chat.UpdateUserInfoReq - 16, // 35: OpenIMChat.chat.chat.AddUserAccount:input_type -> OpenIMChat.chat.AddUserAccountReq - 5, // 36: OpenIMChat.chat.chat.SearchUserPublicInfo:input_type -> OpenIMChat.chat.SearchUserPublicInfoReq - 3, // 37: OpenIMChat.chat.chat.FindUserPublicInfo:input_type -> OpenIMChat.chat.FindUserPublicInfoReq - 35, // 38: OpenIMChat.chat.chat.SearchUserFullInfo:input_type -> OpenIMChat.chat.SearchUserFullInfoReq - 7, // 39: OpenIMChat.chat.chat.FindUserFullInfo:input_type -> OpenIMChat.chat.FindUserFullInfoReq - 9, // 40: OpenIMChat.chat.chat.SendVerifyCode:input_type -> OpenIMChat.chat.SendVerifyCodeReq - 11, // 41: OpenIMChat.chat.chat.VerifyCode:input_type -> OpenIMChat.chat.VerifyCodeReq - 14, // 42: OpenIMChat.chat.chat.RegisterUser:input_type -> OpenIMChat.chat.RegisterUserReq - 18, // 43: OpenIMChat.chat.chat.Login:input_type -> OpenIMChat.chat.LoginReq - 20, // 44: OpenIMChat.chat.chat.ResetPassword:input_type -> OpenIMChat.chat.ResetPasswordReq - 22, // 45: OpenIMChat.chat.chat.ChangePassword:input_type -> OpenIMChat.chat.ChangePasswordReq - 24, // 46: OpenIMChat.chat.chat.FindUserAccount:input_type -> OpenIMChat.chat.FindUserAccountReq - 26, // 47: OpenIMChat.chat.chat.FindAccountUser:input_type -> OpenIMChat.chat.FindAccountUserReq - 29, // 48: OpenIMChat.chat.chat.AddSignalRecord:input_type -> OpenIMChat.chat.AddSignalRecordReq - 31, // 49: OpenIMChat.chat.chat.GetSignalRecords:input_type -> OpenIMChat.chat.GetSignalRecordsReq - 33, // 50: OpenIMChat.chat.chat.OpenIMCallback:input_type -> OpenIMChat.chat.OpenIMCallbackReq - 37, // 51: OpenIMChat.chat.chat.UserLoginCount:input_type -> OpenIMChat.chat.UserLoginCountReq - 40, // 52: OpenIMChat.chat.chat.UploadLogs:input_type -> OpenIMChat.chat.UploadLogsReq - 42, // 53: OpenIMChat.chat.chat.DeleteLogs:input_type -> OpenIMChat.chat.DeleteLogsReq - 44, // 54: OpenIMChat.chat.chat.SearchLogs:input_type -> OpenIMChat.chat.SearchLogsReq - 46, // 55: OpenIMChat.chat.chat.SearchUserInfo:input_type -> OpenIMChat.chat.SearchUserInfoReq - 2, // 56: OpenIMChat.chat.chat.UpdateUserInfo:output_type -> OpenIMChat.chat.UpdateUserInfoResp - 17, // 57: OpenIMChat.chat.chat.AddUserAccount:output_type -> OpenIMChat.chat.AddUserAccountResp - 6, // 58: OpenIMChat.chat.chat.SearchUserPublicInfo:output_type -> OpenIMChat.chat.SearchUserPublicInfoResp - 4, // 59: OpenIMChat.chat.chat.FindUserPublicInfo:output_type -> OpenIMChat.chat.FindUserPublicInfoResp - 36, // 60: OpenIMChat.chat.chat.SearchUserFullInfo:output_type -> OpenIMChat.chat.SearchUserFullInfoResp - 8, // 61: OpenIMChat.chat.chat.FindUserFullInfo:output_type -> OpenIMChat.chat.FindUserFullInfoResp - 10, // 62: OpenIMChat.chat.chat.SendVerifyCode:output_type -> OpenIMChat.chat.SendVerifyCodeResp - 12, // 63: OpenIMChat.chat.chat.VerifyCode:output_type -> OpenIMChat.chat.VerifyCodeResp - 15, // 64: OpenIMChat.chat.chat.RegisterUser:output_type -> OpenIMChat.chat.RegisterUserResp - 19, // 65: OpenIMChat.chat.chat.Login:output_type -> OpenIMChat.chat.LoginResp - 21, // 66: OpenIMChat.chat.chat.ResetPassword:output_type -> OpenIMChat.chat.ResetPasswordResp - 23, // 67: OpenIMChat.chat.chat.ChangePassword:output_type -> OpenIMChat.chat.ChangePasswordResp - 25, // 68: OpenIMChat.chat.chat.FindUserAccount:output_type -> OpenIMChat.chat.FindUserAccountResp - 27, // 69: OpenIMChat.chat.chat.FindAccountUser:output_type -> OpenIMChat.chat.FindAccountUserResp - 30, // 70: OpenIMChat.chat.chat.AddSignalRecord:output_type -> OpenIMChat.chat.AddSignalRecordResp - 32, // 71: OpenIMChat.chat.chat.GetSignalRecords:output_type -> OpenIMChat.chat.GetSignalRecordsResp - 34, // 72: OpenIMChat.chat.chat.OpenIMCallback:output_type -> OpenIMChat.chat.OpenIMCallbackResp - 38, // 73: OpenIMChat.chat.chat.UserLoginCount:output_type -> OpenIMChat.chat.UserLoginCountResp - 41, // 74: OpenIMChat.chat.chat.UploadLogs:output_type -> OpenIMChat.chat.UploadLogsResp - 43, // 75: OpenIMChat.chat.chat.DeleteLogs:output_type -> OpenIMChat.chat.DeleteLogsResp - 45, // 76: OpenIMChat.chat.chat.SearchLogs:output_type -> OpenIMChat.chat.SearchLogsResp - 47, // 77: OpenIMChat.chat.chat.SearchUserInfo:output_type -> OpenIMChat.chat.SearchUserInfoResp - 56, // [56:78] is the sub-list for method output_type - 34, // [34:56] is the sub-list for method input_type - 34, // [34:34] is the sub-list for extension type_name - 34, // [34:34] is the sub-list for extension extendee - 0, // [0:34] is the sub-list for field type_name + 62, // 30: OpenIMChat.chat.SearchLogsReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination + 64, // 31: OpenIMChat.chat.SearchLogsResp.LogsInfos:type_name -> OpenIMChat.common.LogInfo + 62, // 32: OpenIMChat.chat.SearchUserInfoReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination + 63, // 33: OpenIMChat.chat.SearchUserInfoResp.users:type_name -> OpenIMChat.common.UserFullInfo + 48, // 34: OpenIMChat.chat.GetEmoticonResp.e:type_name -> OpenIMChat.chat.Emoticon + 1, // 35: OpenIMChat.chat.chat.UpdateUserInfo:input_type -> OpenIMChat.chat.UpdateUserInfoReq + 16, // 36: OpenIMChat.chat.chat.AddUserAccount:input_type -> OpenIMChat.chat.AddUserAccountReq + 5, // 37: OpenIMChat.chat.chat.SearchUserPublicInfo:input_type -> OpenIMChat.chat.SearchUserPublicInfoReq + 3, // 38: OpenIMChat.chat.chat.FindUserPublicInfo:input_type -> OpenIMChat.chat.FindUserPublicInfoReq + 35, // 39: OpenIMChat.chat.chat.SearchUserFullInfo:input_type -> OpenIMChat.chat.SearchUserFullInfoReq + 7, // 40: OpenIMChat.chat.chat.FindUserFullInfo:input_type -> OpenIMChat.chat.FindUserFullInfoReq + 9, // 41: OpenIMChat.chat.chat.SendVerifyCode:input_type -> OpenIMChat.chat.SendVerifyCodeReq + 11, // 42: OpenIMChat.chat.chat.VerifyCode:input_type -> OpenIMChat.chat.VerifyCodeReq + 14, // 43: OpenIMChat.chat.chat.RegisterUser:input_type -> OpenIMChat.chat.RegisterUserReq + 18, // 44: OpenIMChat.chat.chat.Login:input_type -> OpenIMChat.chat.LoginReq + 20, // 45: OpenIMChat.chat.chat.ResetPassword:input_type -> OpenIMChat.chat.ResetPasswordReq + 22, // 46: OpenIMChat.chat.chat.ChangePassword:input_type -> OpenIMChat.chat.ChangePasswordReq + 24, // 47: OpenIMChat.chat.chat.FindUserAccount:input_type -> OpenIMChat.chat.FindUserAccountReq + 26, // 48: OpenIMChat.chat.chat.FindAccountUser:input_type -> OpenIMChat.chat.FindAccountUserReq + 29, // 49: OpenIMChat.chat.chat.AddSignalRecord:input_type -> OpenIMChat.chat.AddSignalRecordReq + 31, // 50: OpenIMChat.chat.chat.GetSignalRecords:input_type -> OpenIMChat.chat.GetSignalRecordsReq + 33, // 51: OpenIMChat.chat.chat.OpenIMCallback:input_type -> OpenIMChat.chat.OpenIMCallbackReq + 37, // 52: OpenIMChat.chat.chat.UserLoginCount:input_type -> OpenIMChat.chat.UserLoginCountReq + 40, // 53: OpenIMChat.chat.chat.UploadLogs:input_type -> OpenIMChat.chat.UploadLogsReq + 42, // 54: OpenIMChat.chat.chat.DeleteLogs:input_type -> OpenIMChat.chat.DeleteLogsReq + 44, // 55: OpenIMChat.chat.chat.SearchLogs:input_type -> OpenIMChat.chat.SearchLogsReq + 46, // 56: OpenIMChat.chat.chat.SearchUserInfo:input_type -> OpenIMChat.chat.SearchUserInfoReq + 49, // 57: OpenIMChat.chat.chat.AddEmoticon:input_type -> OpenIMChat.chat.AddEmoticonReq + 51, // 58: OpenIMChat.chat.chat.RemoveEmoticon:input_type -> OpenIMChat.chat.RemoveEmoticonReq + 53, // 59: OpenIMChat.chat.chat.GetEmoticon:input_type -> OpenIMChat.chat.GetEmoticonReq + 2, // 60: OpenIMChat.chat.chat.UpdateUserInfo:output_type -> OpenIMChat.chat.UpdateUserInfoResp + 17, // 61: OpenIMChat.chat.chat.AddUserAccount:output_type -> OpenIMChat.chat.AddUserAccountResp + 6, // 62: OpenIMChat.chat.chat.SearchUserPublicInfo:output_type -> OpenIMChat.chat.SearchUserPublicInfoResp + 4, // 63: OpenIMChat.chat.chat.FindUserPublicInfo:output_type -> OpenIMChat.chat.FindUserPublicInfoResp + 36, // 64: OpenIMChat.chat.chat.SearchUserFullInfo:output_type -> OpenIMChat.chat.SearchUserFullInfoResp + 8, // 65: OpenIMChat.chat.chat.FindUserFullInfo:output_type -> OpenIMChat.chat.FindUserFullInfoResp + 10, // 66: OpenIMChat.chat.chat.SendVerifyCode:output_type -> OpenIMChat.chat.SendVerifyCodeResp + 12, // 67: OpenIMChat.chat.chat.VerifyCode:output_type -> OpenIMChat.chat.VerifyCodeResp + 15, // 68: OpenIMChat.chat.chat.RegisterUser:output_type -> OpenIMChat.chat.RegisterUserResp + 19, // 69: OpenIMChat.chat.chat.Login:output_type -> OpenIMChat.chat.LoginResp + 21, // 70: OpenIMChat.chat.chat.ResetPassword:output_type -> OpenIMChat.chat.ResetPasswordResp + 23, // 71: OpenIMChat.chat.chat.ChangePassword:output_type -> OpenIMChat.chat.ChangePasswordResp + 25, // 72: OpenIMChat.chat.chat.FindUserAccount:output_type -> OpenIMChat.chat.FindUserAccountResp + 27, // 73: OpenIMChat.chat.chat.FindAccountUser:output_type -> OpenIMChat.chat.FindAccountUserResp + 30, // 74: OpenIMChat.chat.chat.AddSignalRecord:output_type -> OpenIMChat.chat.AddSignalRecordResp + 32, // 75: OpenIMChat.chat.chat.GetSignalRecords:output_type -> OpenIMChat.chat.GetSignalRecordsResp + 34, // 76: OpenIMChat.chat.chat.OpenIMCallback:output_type -> OpenIMChat.chat.OpenIMCallbackResp + 38, // 77: OpenIMChat.chat.chat.UserLoginCount:output_type -> OpenIMChat.chat.UserLoginCountResp + 41, // 78: OpenIMChat.chat.chat.UploadLogs:output_type -> OpenIMChat.chat.UploadLogsResp + 43, // 79: OpenIMChat.chat.chat.DeleteLogs:output_type -> OpenIMChat.chat.DeleteLogsResp + 45, // 80: OpenIMChat.chat.chat.SearchLogs:output_type -> OpenIMChat.chat.SearchLogsResp + 47, // 81: OpenIMChat.chat.chat.SearchUserInfo:output_type -> OpenIMChat.chat.SearchUserInfoResp + 50, // 82: OpenIMChat.chat.chat.AddEmoticon:output_type -> OpenIMChat.chat.AddEmoticonResp + 52, // 83: OpenIMChat.chat.chat.RemoveEmoticon:output_type -> OpenIMChat.chat.RemoveEmoticonResp + 54, // 84: OpenIMChat.chat.chat.GetEmoticon:output_type -> OpenIMChat.chat.GetEmoticonResp + 60, // [60:85] is the sub-list for method output_type + 35, // [35:60] is the sub-list for method input_type + 35, // [35:35] is the sub-list for extension type_name + 35, // [35:35] is the sub-list for extension extendee + 0, // [0:35] is the sub-list for field type_name } func init() { file_chat_chat_proto_init() } @@ -4380,6 +4778,90 @@ func file_chat_chat_proto_init() { return nil } } + file_chat_chat_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Emoticon); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_chat_chat_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AddEmoticonReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_chat_chat_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AddEmoticonResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_chat_chat_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RemoveEmoticonReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_chat_chat_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RemoveEmoticonResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_chat_chat_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetEmoticonReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_chat_chat_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetEmoticonResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -4387,7 +4869,7 @@ func file_chat_chat_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_chat_chat_proto_rawDesc, NumEnums: 0, - NumMessages: 51, + NumMessages: 58, NumExtensions: 0, NumServices: 1, }, @@ -4440,6 +4922,10 @@ type ChatClient interface { DeleteLogs(ctx context.Context, in *DeleteLogsReq, opts ...grpc.CallOption) (*DeleteLogsResp, error) SearchLogs(ctx context.Context, in *SearchLogsReq, opts ...grpc.CallOption) (*SearchLogsResp, error) SearchUserInfo(ctx context.Context, in *SearchUserInfoReq, opts ...grpc.CallOption) (*SearchUserInfoResp, error) + // 表情包 + AddEmoticon(ctx context.Context, in *AddEmoticonReq, opts ...grpc.CallOption) (*AddEmoticonResp, error) + RemoveEmoticon(ctx context.Context, in *RemoveEmoticonReq, opts ...grpc.CallOption) (*RemoveEmoticonResp, error) + GetEmoticon(ctx context.Context, in *GetEmoticonReq, opts ...grpc.CallOption) (*GetEmoticonResp, error) } type chatClient struct { @@ -4648,6 +5134,33 @@ func (c *chatClient) SearchUserInfo(ctx context.Context, in *SearchUserInfoReq, return out, nil } +func (c *chatClient) AddEmoticon(ctx context.Context, in *AddEmoticonReq, opts ...grpc.CallOption) (*AddEmoticonResp, error) { + out := new(AddEmoticonResp) + err := c.cc.Invoke(ctx, "/OpenIMChat.chat.chat/AddEmoticon", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *chatClient) RemoveEmoticon(ctx context.Context, in *RemoveEmoticonReq, opts ...grpc.CallOption) (*RemoveEmoticonResp, error) { + out := new(RemoveEmoticonResp) + err := c.cc.Invoke(ctx, "/OpenIMChat.chat.chat/RemoveEmoticon", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *chatClient) GetEmoticon(ctx context.Context, in *GetEmoticonReq, opts ...grpc.CallOption) (*GetEmoticonResp, error) { + out := new(GetEmoticonResp) + err := c.cc.Invoke(ctx, "/OpenIMChat.chat.chat/GetEmoticon", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // ChatServer is the server API for Chat service. type ChatServer interface { // Edit personal information - called by the user or an administrator @@ -4677,6 +5190,10 @@ type ChatServer interface { DeleteLogs(context.Context, *DeleteLogsReq) (*DeleteLogsResp, error) SearchLogs(context.Context, *SearchLogsReq) (*SearchLogsResp, error) SearchUserInfo(context.Context, *SearchUserInfoReq) (*SearchUserInfoResp, error) + // 表情包 + AddEmoticon(context.Context, *AddEmoticonReq) (*AddEmoticonResp, error) + RemoveEmoticon(context.Context, *RemoveEmoticonReq) (*RemoveEmoticonResp, error) + GetEmoticon(context.Context, *GetEmoticonReq) (*GetEmoticonResp, error) } // UnimplementedChatServer can be embedded to have forward compatible implementations. @@ -4749,6 +5266,15 @@ func (*UnimplementedChatServer) SearchLogs(context.Context, *SearchLogsReq) (*Se func (*UnimplementedChatServer) SearchUserInfo(context.Context, *SearchUserInfoReq) (*SearchUserInfoResp, error) { return nil, status.Errorf(codes.Unimplemented, "method SearchUserInfo not implemented") } +func (*UnimplementedChatServer) AddEmoticon(context.Context, *AddEmoticonReq) (*AddEmoticonResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method AddEmoticon not implemented") +} +func (*UnimplementedChatServer) RemoveEmoticon(context.Context, *RemoveEmoticonReq) (*RemoveEmoticonResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method RemoveEmoticon not implemented") +} +func (*UnimplementedChatServer) GetEmoticon(context.Context, *GetEmoticonReq) (*GetEmoticonResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetEmoticon not implemented") +} func RegisterChatServer(s *grpc.Server, srv ChatServer) { s.RegisterService(&_Chat_serviceDesc, srv) @@ -5150,6 +5676,60 @@ func _Chat_SearchUserInfo_Handler(srv interface{}, ctx context.Context, dec func return interceptor(ctx, in, info, handler) } +func _Chat_AddEmoticon_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AddEmoticonReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ChatServer).AddEmoticon(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/OpenIMChat.chat.chat/AddEmoticon", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ChatServer).AddEmoticon(ctx, req.(*AddEmoticonReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Chat_RemoveEmoticon_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RemoveEmoticonReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ChatServer).RemoveEmoticon(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/OpenIMChat.chat.chat/RemoveEmoticon", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ChatServer).RemoveEmoticon(ctx, req.(*RemoveEmoticonReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Chat_GetEmoticon_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetEmoticonReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ChatServer).GetEmoticon(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/OpenIMChat.chat.chat/GetEmoticon", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ChatServer).GetEmoticon(ctx, req.(*GetEmoticonReq)) + } + return interceptor(ctx, in, info, handler) +} + var _Chat_serviceDesc = grpc.ServiceDesc{ ServiceName: "OpenIMChat.chat.chat", HandlerType: (*ChatServer)(nil), @@ -5242,6 +5822,18 @@ var _Chat_serviceDesc = grpc.ServiceDesc{ MethodName: "SearchUserInfo", Handler: _Chat_SearchUserInfo_Handler, }, + { + MethodName: "AddEmoticon", + Handler: _Chat_AddEmoticon_Handler, + }, + { + MethodName: "RemoveEmoticon", + Handler: _Chat_RemoveEmoticon_Handler, + }, + { + MethodName: "GetEmoticon", + Handler: _Chat_GetEmoticon_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "chat/chat.proto", diff --git a/pkg/proto/chat/chat.proto b/pkg/proto/chat/chat.proto index bdd343bd..50c8d173 100644 --- a/pkg/proto/chat/chat.proto +++ b/pkg/proto/chat/chat.proto @@ -313,6 +313,38 @@ message SearchUserInfoResp { repeated OpenIMChat.common.UserFullInfo users = 2; } + +message Emoticon { + int64 emoticon_id = 1; + string imageURL = 2; + string user_id = 3; +} + +message AddEmoticonReq { + string owner_id = 1; + string image_data = 2; +} + +message AddEmoticonResp { +} + +// Request to remove an emoticon from user's storage +message RemoveEmoticonReq { + string user_id = 1; + int64 emoticon_id = 2; + +} +message RemoveEmoticonResp { +} + +message GetEmoticonReq { + string user_id = 1; +} + +message GetEmoticonResp { + repeated Emoticon e = 1; +} + service chat { // Edit personal information - called by the user or an administrator rpc UpdateUserInfo(UpdateUserInfoReq) returns(UpdateUserInfoResp); @@ -347,4 +379,8 @@ service chat { rpc SearchLogs(SearchLogsReq) returns (SearchLogsResp); rpc SearchUserInfo(SearchUserInfoReq)returns(SearchUserInfoResp); + //emoticon + rpc AddEmoticon(AddEmoticonReq) returns (AddEmoticonResp); + rpc RemoveEmoticon(RemoveEmoticonReq) returns (RemoveEmoticonResp); + rpc GetEmoticon(GetEmoticonReq) returns (GetEmoticonResp); } \ No newline at end of file