syntax = "proto3";
package pb;
option go_package = "egg-im/pkg/pb/";

import "logic.ext.proto";

enum PushCode {
  PC_ADD_DEFAULT = 0;

  PC_ADD_FRIEND = 100; // 添加好友请求

  PC_AGREE_ADD_FRIEND = 101; // 同意添加好友

  PC_UPDATE_GROUP = 110; // 更新群组

  PC_ADD_GROUP_MEMBERS = 120; // 添加群组成员

  PC_REMOVE_GROUP_MEMBER = 121; // 移除群组成员

  PC_BANNED_GROUP_MEMBER = 122; // 禁言群组成员

  PC_REMOVE_BANNED_GROUP_MEMBER = 123; // 取消禁言群组成员

  PC_UPDATE_GROUP_MEMBER = 124; // 更新群组成员信息

}

// 推送码 PC_ADD_FRIEND = 100
message AddFriendPush {
  int64 friend_id = 1; // 好友id
  string nickname = 2; // 昵称
  string avatar_url = 3; // 头像
  string description = 4; // 描述
}

// 推送码 PC_AGREE_ADD_FRIEND = 101
message AgreeAddFriendPush {
  int64 friend_id = 1; // 好友id
  string nickname = 2; // 昵称
  string avatar_url = 3; // 头像
}

// 更新群组 PC_UPDATE_GROUP = 110
message UpdateGroupPush {
  int64 opt_id = 1; // 操作人用户id
  string opt_name = 2; // 操作人昵称
  string opt_avatar_url = 3; // 操作人头像
  string name = 4; // 群组名称
  string avatar_url = 5; // 群组头像
  string introduction = 6; // 群组简介
  bool isUpdateIntroduction = 7; // 是否更新群组简介
  string extra = 8; // 附加字段
}

// 添加群组成员 PC_AGREE_ADD_GROUPS = 120
message AddGroupMembersPush {
  int64 opt_id = 1; // 操作人用户id
  string opt_name = 2; // 操作人昵称
  repeated GroupMember members = 3; // 群组成员
}

// 删除群组成员 PC_REMOVE_GROUP_MEMBER = 121
message RemoveGroupMemberPush {
  int64 opt_id = 1; // 操作人用户id
  string opt_name = 2; // 操作人昵称
  int64 deleted_user_id = 3; // 被删除的成员id
  string deleted_user_name = 4; // 被删除的成员昵称
}

// 禁言群组成员 PC_BANNED_GROUP_MEMBER = 122
message BannedGroupMemberPush {
  int64 opt_id = 1; // 操作人用户id
  string opt_name = 2; // 操作人昵称
  int64 banned_user_id = 3; // 被禁言的成员id
  string banned_user_name = 4; // 被禁言的成员昵称
}


// 取消禁言群组成员 PC_REMOVE_BANNED_GROUP_MEMBER = 123
message RemoveBannedGroupMemberPush {
  int64 opt_id = 1; // 操作人用户id
  string opt_name = 2; // 操作人昵称
  int64 remove_banned_user_id = 3; // 被解禁言的成员id
  string remove_banned_user_name = 4; // 被解禁言的成员昵称
}

// 修改群组成员身份 PC_UPDATE_GROUP_MEMBER = 124
message UpdateMemberPush {
  int64 opt_id = 1; // 操作人用户id
  string opt_name = 2; // 操作人昵称
  int64 update_user_id = 3; // 被修改的成员id
  string update_user_name = 4; // 被修改的成员昵称
  int32 update_user_member_type = 5; // 被修改的成员身份类型
}