syntax = "proto3";

package im_types;

option go_package = "./improto";

import "data_type.proto";
import "chat.proto";

//创建群 参数
message CreateGroupReq {
  string groupId = 1;          // 群ID
  string name = 2;             // 群名称
  string headUrl = 3;          // 群头像
  int64 gType = 4;             // 群类型 0：私密群，1：公开群
  string owner = 5;            // 群主ID
  string introduction = 6; // 群简介
  repeated string members = 7; // 群成员Id
  GroupChatReq groupChatReq = 8;  //附带的群聊消息
}

// 申请加群
message ApplyGroupReq {
  string groupId = 1; // 群ID
  string userAddr = 2;    // 申请的用户地址
  string content = 3;       //自定义字段，自己管理，自己解析
}

//更新群名称 参数
message UpdateGroupNameReq {
  string groupId = 1; // 群ID
  string name = 2;    // 群名称
  GroupChatReq groupChatReq = 3;  //附带的群聊消息
}

//更新群头像 参数
message UpdateGroupHeadUrlReq {
  string groupId = 1; // 群ID
  string headUrl = 2; // 群头像
  GroupChatReq groupChatReq = 3;  //附带的群聊消息
}

//更新群公告 参数
message UpdateGroupIntroductionReq {
  string groupId = 1;      // 群ID
  string introduction = 2; // 群简介
  GroupChatReq groupChatReq = 3;  //附带的群聊消息
  GroupChatReq groupChatReq2 = 4;  //附带的群聊消息2 上边的先发，2后发
}

//添加群成员 参数
message AddGroupMemberReq {
  string groupId = 1;          // 群ID
  repeated string members = 2; // 群成员Id
  GroupChatReq groupChatReq = 3;  //附带的群聊消息
}

//移除群成员 参数
message RemoveGroupMemberReq {
  string groupId = 1;          // 群ID
  repeated string members = 2; // 群成员Id
  GroupChatReq groupChatReq = 3;  //附带的群聊消息
}

//更新群成员昵称 参数
message UpdateGroupMemberNameReq {
  string groupId = 1; // 群ID
  string member = 2;  // 群成员Id
  string nickname = 3;
  GroupChatReq groupChatReq = 4;  //附带的群聊消息
}

message MemberRole {
  optional string member = 1;  // 群成员ID
  optional improto.EnumGroupRole role = 2; //群成员类型
}

//更新群成员角色类型
message UpdateGroupMemberRoleReq {
  string groupId = 1; // 群ID
  string senderAddr = 2;  //发送者的Addr
  repeated MemberRole memberRole = 3; //成员角色类型
  GroupChatReq groupChatReq = 4;  //附带的群聊消息
}

//群-解散
message DissolveGroupReq {
  string groupId = 1; // 群ID
  GroupChatReq groupChatReq = 2;  //附带的群聊消息
}

//群-查询
message QueryGroupReq {
  string groupId = 1; // 群ID
}
//群信息
message GroupInfoRes {
  improto.Group group = 1;   // 群信息
}

//群-修改群配置
message UpdateGroupConfReq {
  string groupId = 1; // 群ID
  optional improto.EnumSwitch                  ConfMemberProtection           = 2; //成员保护
  optional improto.EnumSwitch                  ConfGroupMembershipRestriction = 3; //入群限制
  optional improto.EnumSwitch                  ConfFullSiteNoSpeaking         = 4; //全员禁言
  optional improto.EnumSwitch                  ConfModifyHeadNickname         = 5; //修改头像和昵称
  optional improto.EnumNewMemberHistory        ConfNewMemberHistory           = 6; //新成员历史消息
  optional int64                       MaxUserCnt                     = 7; //最大成员数
  GroupChatReq groupChatReq = 8;  //附带的群聊消息
}

//群-转让群
message GroupTransferReq {
  string groupId = 1; // 群ID
  string addr = 2;    // 转让人的地址
  GroupChatReq groupChatReq = 3;  //附带的群聊消息
}

//群-退出
message ExitGroupReq {
  string groupId = 1; // 群ID
  GroupChatReq groupChatReq = 2;  //附带的群聊消息
}

// 修改群消息至顶列表
message UpdateGroupPinneMesListReq {
  string groupId = 1;   //对方Id
  string pinneMesList = 2;    //至顶列表
  GroupChatReq groupChatReq = 3;  //附带的群聊消息
}