群组标记删除

(cherry picked from commit cdf4a0c011b879819c0263b84bddd2da5cb8bc7d)
This commit is contained in:
heavyrian2012
2024-04-03 10:49:46 +08:00
parent c4421fc9ed
commit ebb05351a8
17 changed files with 355 additions and 186 deletions
+3
View File
@@ -204,6 +204,9 @@ group.visible_quit_or_kickoff_notification 0
## 是否禁止陌生人拉人入群,默认为false ## 是否禁止陌生人拉人入群,默认为false
group.disable_stranger_invite false group.disable_stranger_invite false
## 群组信息是否标记删除
group.enable_mark_deletion true
## 隐藏用户信息属性类型,2是性别,3是电话号码,4是邮箱,5是地址,6是公司信息,7是社交账号,8是Extra信息。当需要隐藏多个时以英文逗号分开; ## 隐藏用户信息属性类型,2是性别,3是电话号码,4是邮箱,5是地址,6是公司信息,7是社交账号,8是Extra信息。当需要隐藏多个时以英文逗号分开;
## 本配置是为了提高安全性,避免把对应信息同步到客户端,这样就能防止程序被破解从而拿到用户关键信息。仅对客户端有效,server api不受影响。 ## 本配置是为了提高安全性,避免把对应信息同步到客户端,这样就能防止程序被破解从而拿到用户关键信息。仅对客户端有效,server api不受影响。
## 注意,修改本配置不会对已经同步的信息产生影响。 ## 注意,修改本配置不会对已经同步的信息产生影响。
+2
View File
@@ -0,0 +1,2 @@
alter table `t_group` add column `_deleted` tinyint NOT NULL DEFAULT 0;
+1
View File
@@ -0,0 +1 @@
alter table `t_group` add column `_deleted` tinyint NOT NULL DEFAULT 0;
@@ -60,6 +60,7 @@ public class GetGroupInfoAction extends AdminAction {
pojoGroupInfo.setMax_member_count(groupInfo.getMemberCount()); pojoGroupInfo.setMax_member_count(groupInfo.getMemberCount());
pojoGroupInfo.setHistory_message(groupInfo.getHistoryMessage()); pojoGroupInfo.setHistory_message(groupInfo.getHistoryMessage());
pojoGroupInfo.setSuper_group(groupInfo.getSuperGroup()>0); pojoGroupInfo.setSuper_group(groupInfo.getSuperGroup()>0);
pojoGroupInfo.setDeleted(groupInfo.getDeleted()>0);
result = RestResult.ok(pojoGroupInfo); result = RestResult.ok(pojoGroupInfo);
} }
setResponseContent(result, response); setResponseContent(result, response);
@@ -56,6 +56,10 @@ public class GetGroupInfoAction extends RobotAction {
pojoGroupInfo.setJoin_type(groupInfo.getJoinType()); pojoGroupInfo.setJoin_type(groupInfo.getJoinType());
pojoGroupInfo.setPrivate_chat(groupInfo.getPrivateChat()); pojoGroupInfo.setPrivate_chat(groupInfo.getPrivateChat());
pojoGroupInfo.setSearchable(groupInfo.getSearchable()); pojoGroupInfo.setSearchable(groupInfo.getSearchable());
pojoGroupInfo.setMax_member_count(groupInfo.getMemberCount());
pojoGroupInfo.setHistory_message(groupInfo.getHistoryMessage());
pojoGroupInfo.setSuper_group(groupInfo.getSuperGroup()>0);
pojoGroupInfo.setDeleted(groupInfo.getDeleted()>0);
result = RestResult.ok(pojoGroupInfo); result = RestResult.ok(pojoGroupInfo);
} }
setResponseContent(result, response); setResponseContent(result, response);
@@ -188,6 +188,8 @@ public final class BrokerConstants {
public static final String GROUP_Disable_Stranger_Invite = "group.disable_stranger_invite"; public static final String GROUP_Disable_Stranger_Invite = "group.disable_stranger_invite";
public static final String GROUP_INFO_MARK_DELETION = "group.enable_mark_deletion";
public static final String USER_HIDE_PROPERTIES = "user.hide_properties"; public static final String USER_HIDE_PROPERTIES = "user.hide_properties";
public static final String USER_KEEP_DISPLAY_NAME_WHEN_DESTROY = "user.keep_display_name_when_destroy"; public static final String USER_KEEP_DISPLAY_NAME_WHEN_DESTROY = "user.keep_display_name_when_destroy";
@@ -27,7 +27,7 @@ public class CreateGroupHandler extends GroupHandler<WFCMessage.CreateGroupReque
if (!StringUtil.isNullOrEmpty(request.getGroup().getGroupInfo().getTargetId())) { if (!StringUtil.isNullOrEmpty(request.getGroup().getGroupInfo().getTargetId())) {
WFCMessage.GroupInfo existGroupInfo = m_messagesStore.getGroupInfo(request.getGroup().getGroupInfo().getTargetId()); WFCMessage.GroupInfo existGroupInfo = m_messagesStore.getGroupInfo(request.getGroup().getGroupInfo().getTargetId());
if (existGroupInfo != null) { if (existGroupInfo != null && existGroupInfo.getDeleted() == 0) {
return ErrorCode.ERROR_CODE_GROUP_ALREADY_EXIST; return ErrorCode.ERROR_CODE_GROUP_ALREADY_EXIST;
} }
} }
@@ -59,7 +59,7 @@ public class CreateGroupHandler extends GroupHandler<WFCMessage.CreateGroupReque
} }
WFCMessage.GroupInfo groupInfo = m_messagesStore.createGroup(fromUser, request.getGroup().getGroupInfo(), request.getGroup().getMembersList(), request.getMemberExtra(), isAdmin); WFCMessage.GroupInfo groupInfo = m_messagesStore.createGroup(fromUser, request.getGroup().getGroupInfo(), request.getGroup().getMembersList(), request.getMemberExtra(), isAdmin);
if (groupInfo != null) { if (groupInfo != null && groupInfo.getDeleted() == 0) {
if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0) { if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0) {
sendGroupNotification(fromUser, groupInfo.getTargetId(), request.getToLineList(), request.getNotifyContent()); sendGroupNotification(fromUser, groupInfo.getTargetId(), request.getToLineList(), request.getNotifyContent());
} else { } else {
@@ -36,6 +36,7 @@ import java.util.function.Function;
import static cn.wildfirechat.common.IMExceptionEvent.EventType.RDBS_Exception; import static cn.wildfirechat.common.IMExceptionEvent.EventType.RDBS_Exception;
import static cn.wildfirechat.proto.ProtoConstants.PersistFlag.Transparent; import static cn.wildfirechat.proto.ProtoConstants.PersistFlag.Transparent;
import static io.moquette.BrokerConstants.GROUP_INFO_MARK_DELETION;
import static io.moquette.server.Constants.MAX_MESSAGE_QUEUE; import static io.moquette.server.Constants.MAX_MESSAGE_QUEUE;
import static cn.wildfirechat.proto.ProtoConstants.SearchUserType.*; import static cn.wildfirechat.proto.ProtoConstants.SearchUserType.*;
import static win.liyufan.im.UserSettingScope.kUserSettingPrivacySearchable; import static win.liyufan.im.UserSettingScope.kUserSettingPrivacySearchable;
@@ -45,6 +46,7 @@ public class DatabaseStore {
private final ThreadPoolExecutorWrapper mScheduler; private final ThreadPoolExecutorWrapper mScheduler;
private boolean disableRemoteMessageSearch = false; private boolean disableRemoteMessageSearch = false;
private boolean encryptMessage = false; private boolean encryptMessage = false;
private boolean keepGroupInfo = false;
public void setDisableRemoteMessageSearch(boolean disableRemoteMessageSearch) { public void setDisableRemoteMessageSearch(boolean disableRemoteMessageSearch) {
this.disableRemoteMessageSearch = disableRemoteMessageSearch; this.disableRemoteMessageSearch = disableRemoteMessageSearch;
} }
@@ -55,6 +57,11 @@ public class DatabaseStore {
public DatabaseStore(ThreadPoolExecutorWrapper scheduler) { public DatabaseStore(ThreadPoolExecutorWrapper scheduler) {
this.mScheduler = scheduler; this.mScheduler = scheduler;
try {
keepGroupInfo = Boolean.parseBoolean(Server.getServer().getConfig().getProperty(GROUP_INFO_MARK_DELETION, "false"));
} catch (Exception e) {
}
} }
TreeMap<Long, Long> reloadUserMessageMaps(String userId) { TreeMap<Long, Long> reloadUserMessageMaps(String userId) {
@@ -1425,7 +1432,8 @@ public class DatabaseStore {
", `_join_type`" + ", `_join_type`" +
", `_private_chat`" + ", `_private_chat`" +
", `_searchable`" + ", `_searchable`" +
", `_member_dt`) values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)" + ", `_deleted`" +
", `_member_dt`) values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)" +
" ON DUPLICATE KEY UPDATE " + " ON DUPLICATE KEY UPDATE " +
"`_name` = ?," + "`_name` = ?," +
"`_portrait` = ?," + "`_portrait` = ?," +
@@ -1436,8 +1444,9 @@ public class DatabaseStore {
"`_mute` = ?" + "`_mute` = ?" +
", `_join_type` = ?" + ", `_join_type` = ?" +
", `_private_chat` = ?" + ", `_private_chat` = ?" +
", `_searchable` = ?, " + ", `_searchable` = ?" +
"`_member_dt` = ?"; ", `_deleted` = ?" +
", `_member_dt` = ?";
statement = connection.prepareStatement(sql); statement = connection.prepareStatement(sql);
@@ -1455,6 +1464,7 @@ public class DatabaseStore {
statement.setInt(index++, groupInfo.getJoinType()); statement.setInt(index++, groupInfo.getJoinType());
statement.setInt(index++, groupInfo.getPrivateChat()); statement.setInt(index++, groupInfo.getPrivateChat());
statement.setInt(index++, groupInfo.getSearchable()); statement.setInt(index++, groupInfo.getSearchable());
statement.setInt(index++, groupInfo.getDeleted());
statement.setLong(index++, groupInfo.getMemberUpdateDt() == 0 ? System.currentTimeMillis() : groupInfo.getUpdateDt()); statement.setLong(index++, groupInfo.getMemberUpdateDt() == 0 ? System.currentTimeMillis() : groupInfo.getUpdateDt());
statement.setString(index++, groupInfo.getName()); statement.setString(index++, groupInfo.getName());
@@ -1467,6 +1477,7 @@ public class DatabaseStore {
statement.setInt(index++, groupInfo.getJoinType()); statement.setInt(index++, groupInfo.getJoinType());
statement.setInt(index++, groupInfo.getPrivateChat()); statement.setInt(index++, groupInfo.getPrivateChat());
statement.setInt(index++, groupInfo.getSearchable()); statement.setInt(index++, groupInfo.getSearchable());
statement.setInt(index++, groupInfo.getDeleted());
statement.setLong(index++, groupInfo.getMemberUpdateDt() == 0 ? System.currentTimeMillis() : groupInfo.getUpdateDt()); statement.setLong(index++, groupInfo.getMemberUpdateDt() == 0 ? System.currentTimeMillis() : groupInfo.getUpdateDt());
int count = statement.executeUpdate(); int count = statement.executeUpdate();
LOG.info("Update rows {}", count); LOG.info("Update rows {}", count);
@@ -3410,8 +3421,12 @@ public class DatabaseStore {
PreparedStatement statement = null; PreparedStatement statement = null;
try { try {
connection = DBUtil.getConnection(); connection = DBUtil.getConnection();
String sql = "delete from t_group where _gid = ?"; String sql;
if(keepGroupInfo) {
sql = "update t_group set _deleted = 1, _dt = _dt+1, _member_count = 0, _member_dt = _member_dt+1 where _gid = ?";
} else {
sql = "delete from t_group where _gid = ?";
}
statement = connection.prepareStatement(sql); statement = connection.prepareStatement(sql);
int index = 1; int index = 1;
@@ -1368,7 +1368,7 @@ public class MemoryMessagesStore implements IMessagesStore {
event.type = type; event.type = type;
PojoGroupInfo pojoGroupInfo = new PojoGroupInfo(); PojoGroupInfo pojoGroupInfo = new PojoGroupInfo();
event.groupInfo = pojoGroupInfo; event.groupInfo = pojoGroupInfo;
if (groupInfo != null) { if (groupInfo != null && groupInfo.getDeleted() == 0) {
pojoGroupInfo.setExtra(groupInfo.getExtra()); pojoGroupInfo.setExtra(groupInfo.getExtra());
pojoGroupInfo.setName(groupInfo.getName()); pojoGroupInfo.setName(groupInfo.getName());
pojoGroupInfo.setOwner(groupInfo.getOwner()); pojoGroupInfo.setOwner(groupInfo.getOwner());
@@ -1900,7 +1900,7 @@ public class MemoryMessagesStore implements IMessagesStore {
WFCMessage.GroupInfo groupInfo = mIMap.get(groupId); WFCMessage.GroupInfo groupInfo = mIMap.get(groupId);
if (groupInfo == null) { if (groupInfo == null) {
groupInfo = databaseStore.getPersistGroupInfo(groupId); groupInfo = databaseStore.getPersistGroupInfo(groupId);
if (groupInfo != null) { if (groupInfo != null && groupInfo.getDeleted() == 0) {
mIMap.set(groupId, groupInfo); mIMap.set(groupId, groupInfo);
} else { } else {
return ErrorCode.ERROR_CODE_NOT_EXIST; return ErrorCode.ERROR_CODE_NOT_EXIST;
@@ -1985,7 +1985,7 @@ public class MemoryMessagesStore implements IMessagesStore {
WFCMessage.GroupInfo groupInfo = mIMap.get(groupId); WFCMessage.GroupInfo groupInfo = mIMap.get(groupId);
if (groupInfo == null) { if (groupInfo == null) {
groupInfo = databaseStore.getPersistGroupInfo(groupId); groupInfo = databaseStore.getPersistGroupInfo(groupId);
if (groupInfo != null) { if (groupInfo != null && groupInfo.getDeleted() == 0) {
mIMap.set(groupId, groupInfo); mIMap.set(groupId, groupInfo);
} else { } else {
return ErrorCode.ERROR_CODE_NOT_EXIST; return ErrorCode.ERROR_CODE_NOT_EXIST;
@@ -2069,13 +2069,6 @@ public class MemoryMessagesStore implements IMessagesStore {
ArrayList<WFCMessage.GroupInfo> out = new ArrayList<>(); ArrayList<WFCMessage.GroupInfo> out = new ArrayList<>();
for (WFCMessage.UserRequest request : requests) { for (WFCMessage.UserRequest request : requests) {
WFCMessage.GroupInfo groupInfo = mIMap.get(request.getUid()); WFCMessage.GroupInfo groupInfo = mIMap.get(request.getUid());
if (groupInfo == null) {
groupInfo = databaseStore.getPersistGroupInfo(request.getUid());
if (groupInfo != null) {
mIMap.set(request.getUid(), groupInfo);
}
}
if (groupInfo != null && groupInfo.getUpdateDt() > request.getUpdateDt()) { if (groupInfo != null && groupInfo.getUpdateDt() > request.getUpdateDt()) {
if(!isAdmin && !StringUtil.isNullOrEmpty(fromUser)) { if(!isAdmin && !StringUtil.isNullOrEmpty(fromUser)) {
WFCMessage.GroupMember gm = getGroupMember(groupInfo.getTargetId(), fromUser); WFCMessage.GroupMember gm = getGroupMember(groupInfo.getTargetId(), fromUser);
@@ -2306,7 +2299,7 @@ public class MemoryMessagesStore implements IMessagesStore {
IMap<String, WFCMessage.GroupInfo> groups = hzInstance.getMap(GROUPS_MAP); IMap<String, WFCMessage.GroupInfo> groups = hzInstance.getMap(GROUPS_MAP);
WFCMessage.GroupInfo groupInfo = groups.get(groupId); WFCMessage.GroupInfo groupInfo = groups.get(groupId);
boolean isMute = false; boolean isMute = false;
if (groupInfo != null) { if (groupInfo != null && groupInfo.getDeleted() == 0) {
if (groupInfo.getOwner().equals(memberId)) { if (groupInfo.getOwner().equals(memberId)) {
return ErrorCode.ERROR_CODE_SUCCESS; return ErrorCode.ERROR_CODE_SUCCESS;
} }
@@ -1,5 +1,6 @@
package cn.wildfirechat.pojos; package cn.wildfirechat.pojos;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -33,3 +34,4 @@ public class GetUserSessionResult {
userSessions = new ArrayList<>(); userSessions = new ArrayList<>();
} }
} }
+8
View File
@@ -1,3 +1,11 @@
/*
* This file is part of the Wildfire Chat package.
* (c) Heavyrain2012 <heavyrain.lee@gmail.com>
*
* For the full copyright and license information; please view the LICENSE
* file that was distributed with this source code.
*/
package cn.wildfirechat.pojos; package cn.wildfirechat.pojos;
public class InputConferenceRequest { public class InputConferenceRequest {
@@ -68,6 +68,7 @@ public class InputCreateGroup extends InputGroupBase {
if(group_info.isSuper_group()) { if(group_info.isSuper_group()) {
groupInfoBuilder.setSuperGroup(1); groupInfoBuilder.setSuperGroup(1);
} }
groupInfoBuilder.setDeleted(0);
groupBuilder.setGroupInfo(groupInfoBuilder); groupBuilder.setGroupInfo(groupInfoBuilder);
if(group.getMembers() != null) { if(group.getMembers() != null) {
@@ -0,0 +1,35 @@
/*
* This file is part of the Wildfire Chat package.
* (c) Heavyrain2012 <heavyrain.lee@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
package cn.wildfirechat.pojos;
public class InputGetUserSK {
private String uid;
private String cid;
public InputGetUserSK(String uid, String cid) {
this.uid = uid;
this.cid = cid;
}
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getCid() {
return cid;
}
public void setCid(String cid) {
this.cid = cid;
}
}
@@ -1,5 +1,14 @@
/*
* This file is part of the Wildfire Chat package.
* (c) Heavyrain2012 <heavyrain.lee@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
package cn.wildfirechat.pojos; package cn.wildfirechat.pojos;
public class OutputReadData { public class OutputReadData {
public String user; public String user;
public Conversation conversation; public Conversation conversation;
@@ -22,6 +22,7 @@ public class PojoGroupInfo {
int max_member_count; int max_member_count;
int history_message; int history_message;
boolean super_group; boolean super_group;
boolean deleted;
public String getTarget_id() { public String getTarget_id() {
return target_id; return target_id;
@@ -126,4 +127,12 @@ public class PojoGroupInfo {
public void setSuper_group(boolean super_group) { public void setSuper_group(boolean super_group) {
this.super_group = super_group; this.super_group = super_group;
} }
public boolean isDeleted() {
return deleted;
}
public void setDeleted(boolean deleted) {
this.deleted = deleted;
}
} }
@@ -1651,6 +1651,16 @@ public final class WFCMessage {
* <code>optional int32 super_group = 16;</code> * <code>optional int32 super_group = 16;</code>
*/ */
int getSuperGroup(); int getSuperGroup();
// optional int32 deleted = 17;
/**
* <code>optional int32 deleted = 17;</code>
*/
boolean hasDeleted();
/**
* <code>optional int32 deleted = 17;</code>
*/
int getDeleted();
} }
/** /**
* Protobuf type {@code GroupInfo} * Protobuf type {@code GroupInfo}
@@ -1783,6 +1793,11 @@ public final class WFCMessage {
superGroup_ = input.readInt32(); superGroup_ = input.readInt32();
break; break;
} }
case 136: {
bitField0_ |= 0x00010000;
deleted_ = input.readInt32();
break;
}
} }
} }
} catch (com.google.protobuf.InvalidProtocolBufferException e) { } catch (com.google.protobuf.InvalidProtocolBufferException e) {
@@ -2214,6 +2229,22 @@ public final class WFCMessage {
return superGroup_; return superGroup_;
} }
// optional int32 deleted = 17;
public static final int DELETED_FIELD_NUMBER = 17;
private int deleted_;
/**
* <code>optional int32 deleted = 17;</code>
*/
public boolean hasDeleted() {
return ((bitField0_ & 0x00010000) == 0x00010000);
}
/**
* <code>optional int32 deleted = 17;</code>
*/
public int getDeleted() {
return deleted_;
}
private void initFields() { private void initFields() {
targetId_ = ""; targetId_ = "";
name_ = ""; name_ = "";
@@ -2231,6 +2262,7 @@ public final class WFCMessage {
maxMemberCount_ = 0; maxMemberCount_ = 0;
historyMessage_ = 0; historyMessage_ = 0;
superGroup_ = 0; superGroup_ = 0;
deleted_ = 0;
} }
private byte memoizedIsInitialized = -1; private byte memoizedIsInitialized = -1;
public final boolean isInitialized() { public final boolean isInitialized() {
@@ -2300,6 +2332,9 @@ public final class WFCMessage {
if (((bitField0_ & 0x00008000) == 0x00008000)) { if (((bitField0_ & 0x00008000) == 0x00008000)) {
output.writeInt32(16, superGroup_); output.writeInt32(16, superGroup_);
} }
if (((bitField0_ & 0x00010000) == 0x00010000)) {
output.writeInt32(17, deleted_);
}
getUnknownFields().writeTo(output); getUnknownFields().writeTo(output);
} }
@@ -2373,6 +2408,10 @@ public final class WFCMessage {
size += com.google.protobuf.CodedOutputStream size += com.google.protobuf.CodedOutputStream
.computeInt32Size(16, superGroup_); .computeInt32Size(16, superGroup_);
} }
if (((bitField0_ & 0x00010000) == 0x00010000)) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(17, deleted_);
}
size += getUnknownFields().getSerializedSize(); size += getUnknownFields().getSerializedSize();
memoizedSerializedSize = size; memoizedSerializedSize = size;
return size; return size;
@@ -2521,6 +2560,8 @@ public final class WFCMessage {
bitField0_ = (bitField0_ & ~0x00004000); bitField0_ = (bitField0_ & ~0x00004000);
superGroup_ = 0; superGroup_ = 0;
bitField0_ = (bitField0_ & ~0x00008000); bitField0_ = (bitField0_ & ~0x00008000);
deleted_ = 0;
bitField0_ = (bitField0_ & ~0x00010000);
return this; return this;
} }
@@ -2613,6 +2654,10 @@ public final class WFCMessage {
to_bitField0_ |= 0x00008000; to_bitField0_ |= 0x00008000;
} }
result.superGroup_ = superGroup_; result.superGroup_ = superGroup_;
if (((from_bitField0_ & 0x00010000) == 0x00010000)) {
to_bitField0_ |= 0x00010000;
}
result.deleted_ = deleted_;
result.bitField0_ = to_bitField0_; result.bitField0_ = to_bitField0_;
onBuilt(); onBuilt();
return result; return result;
@@ -2687,6 +2732,9 @@ public final class WFCMessage {
if (other.hasSuperGroup()) { if (other.hasSuperGroup()) {
setSuperGroup(other.getSuperGroup()); setSuperGroup(other.getSuperGroup());
} }
if (other.hasDeleted()) {
setDeleted(other.getDeleted());
}
this.mergeUnknownFields(other.getUnknownFields()); this.mergeUnknownFields(other.getUnknownFields());
return this; return this;
} }
@@ -3455,6 +3503,39 @@ public final class WFCMessage {
return this; return this;
} }
// optional int32 deleted = 17;
private int deleted_ ;
/**
* <code>optional int32 deleted = 17;</code>
*/
public boolean hasDeleted() {
return ((bitField0_ & 0x00010000) == 0x00010000);
}
/**
* <code>optional int32 deleted = 17;</code>
*/
public int getDeleted() {
return deleted_;
}
/**
* <code>optional int32 deleted = 17;</code>
*/
public Builder setDeleted(int value) {
bitField0_ |= 0x00010000;
deleted_ = value;
onChanged();
return this;
}
/**
* <code>optional int32 deleted = 17;</code>
*/
public Builder clearDeleted() {
bitField0_ = (bitField0_ & ~0x00010000);
deleted_ = 0;
onChanged();
return this;
}
// @@protoc_insertion_point(builder_scope:GroupInfo) // @@protoc_insertion_point(builder_scope:GroupInfo)
} }
@@ -67305,7 +67386,7 @@ public final class WFCMessage {
"dRequest\022\022\n\ntarget_uid\030\001 \002(\t\022\016\n\006reason\030\002" + "dRequest\022\022\n\ntarget_uid\030\001 \002(\t\022\016\n\006reason\030\002" +
" \002(\t\022\r\n\005extra\030\003 \001(\t\":\n\014Conversation\022\014\n\004t" + " \002(\t\022\r\n\005extra\030\003 \001(\t\":\n\014Conversation\022\014\n\004t" +
"ype\030\001 \002(\005\022\016\n\006target\030\002 \002(\t\022\014\n\004line\030\003 \002(\005\"" + "ype\030\001 \002(\005\022\016\n\006target\030\002 \002(\t\022\014\n\004line\030\003 \002(\005\"" +
"\300\002\n\tGroupInfo\022\021\n\ttarget_id\030\001 \001(\t\022\014\n\004name" + "\321\002\n\tGroupInfo\022\021\n\ttarget_id\030\001 \001(\t\022\014\n\004name" +
"\030\002 \002(\t\022\020\n\010portrait\030\003 \001(\t\022\r\n\005owner\030\004 \001(\t\022" + "\030\002 \002(\t\022\020\n\010portrait\030\003 \001(\t\022\r\n\005owner\030\004 \001(\t\022" +
"\014\n\004type\030\005 \002(\005\022\024\n\014member_count\030\006 \001(\005\022\r\n\005e" + "\014\n\004type\030\005 \002(\005\022\024\n\014member_count\030\006 \001(\005\022\r\n\005e" +
"xtra\030\007 \001(\t\022\021\n\tupdate_dt\030\010 \001(\003\022\030\n\020member_" + "xtra\030\007 \001(\t\022\021\n\tupdate_dt\030\010 \001(\003\022\030\n\020member_" +
@@ -67313,172 +67394,172 @@ public final class WFCMessage {
"pe\030\013 \001(\005\022\024\n\014private_chat\030\014 \001(\005\022\022\n\nsearch", "pe\030\013 \001(\005\022\024\n\014private_chat\030\014 \001(\005\022\022\n\nsearch",
"able\030\r \001(\005\022\030\n\020max_member_count\030\016 \001(\005\022\027\n\017" + "able\030\r \001(\005\022\030\n\020max_member_count\030\016 \001(\005\022\027\n\017" +
"history_message\030\017 \001(\005\022\023\n\013super_group\030\020 \001" + "history_message\030\017 \001(\005\022\023\n\013super_group\030\020 \001" +
"(\005\"r\n\013GroupMember\022\021\n\tmember_id\030\001 \002(\t\022\r\n\005" + "(\005\022\017\n\007deleted\030\021 \001(\005\"r\n\013GroupMember\022\021\n\tme" +
"alias\030\002 \001(\t\022\014\n\004type\030\003 \002(\005\022\021\n\tupdate_dt\030\004" + "mber_id\030\001 \002(\t\022\r\n\005alias\030\002 \001(\t\022\014\n\004type\030\003 \002" +
" \001(\003\022\021\n\tcreate_dt\030\005 \001(\003\022\r\n\005extra\030\006 \001(\t\"F" + "(\005\022\021\n\tupdate_dt\030\004 \001(\003\022\021\n\tcreate_dt\030\005 \001(\003" +
"\n\005Group\022\036\n\ngroup_info\030\001 \002(\0132\n.GroupInfo\022" + "\022\r\n\005extra\030\006 \001(\t\"F\n\005Group\022\036\n\ngroup_info\030\001" +
"\035\n\007members\030\002 \003(\0132\014.GroupMember\"\313\001\n\013Chann" + " \002(\0132\n.GroupInfo\022\035\n\007members\030\002 \003(\0132\014.Grou" +
"elMenu\022\014\n\004type\030\001 \002(\t\022\014\n\004name\030\002 \002(\t\022\013\n\003ke" + "pMember\"\313\001\n\013ChannelMenu\022\014\n\004type\030\001 \002(\t\022\014\n" +
"y\030\003 \001(\t\022\013\n\003url\030\004 \001(\t\022\020\n\010media_id\030\005 \001(\t\022\022" + "\004name\030\002 \002(\t\022\013\n\003key\030\003 \001(\t\022\013\n\003url\030\004 \001(\t\022\020\n" +
"\n\narticle_id\030\006 \001(\t\022\016\n\006app_id\030\007 \001(\t\022\020\n\010ap", "\010media_id\030\005 \001(\t\022\022\n\narticle_id\030\006 \001(\t\022\016\n\006a",
"p_page\030\010 \001(\t\022\036\n\010sub_menu\030\t \003(\0132\014.Channel" + "pp_id\030\007 \001(\t\022\020\n\010app_page\030\010 \001(\t\022\036\n\010sub_men" +
"Menu\022\017\n\007menu_id\030\n \001(\t\022\r\n\005extra\030\013 \001(\t\"-\n\017" + "u\030\t \003(\0132\014.ChannelMenu\022\017\n\007menu_id\030\n \001(\t\022\r" +
"ChannelMenuList\022\032\n\004menu\030\001 \003(\0132\014.ChannelM" + "\n\005extra\030\013 \001(\t\"-\n\017ChannelMenuList\022\032\n\004menu" +
"enu\"\340\001\n\013ChannelInfo\022\021\n\ttarget_id\030\001 \001(\t\022\014" + "\030\001 \003(\0132\014.ChannelMenu\"\340\001\n\013ChannelInfo\022\021\n\t" +
"\n\004name\030\002 \002(\t\022\020\n\010portrait\030\003 \001(\t\022\r\n\005owner\030" + "target_id\030\001 \001(\t\022\014\n\004name\030\002 \002(\t\022\020\n\010portrai" +
"\004 \001(\t\022\016\n\006status\030\005 \001(\005\022\014\n\004desc\030\006 \001(\t\022\r\n\005e" + "t\030\003 \001(\t\022\r\n\005owner\030\004 \001(\t\022\016\n\006status\030\005 \001(\005\022\014" +
"xtra\030\007 \001(\t\022\021\n\tupdate_dt\030\010 \001(\003\022\016\n\006secret\030" + "\n\004desc\030\006 \001(\t\022\r\n\005extra\030\007 \001(\t\022\021\n\tupdate_dt" +
"\t \001(\t\022\020\n\010callback\030\n \001(\t\022\021\n\tautomatic\030\013 \001" + "\030\010 \001(\003\022\016\n\006secret\030\t \001(\t\022\020\n\010callback\030\n \001(\t" +
"(\005\022\032\n\004menu\030\014 \003(\0132\014.ChannelMenu\"D\n\021Modify" + "\022\021\n\tautomatic\030\013 \001(\005\022\032\n\004menu\030\014 \003(\0132\014.Chan" +
"ChannelInfo\022\022\n\nchannel_id\030\001 \002(\t\022\014\n\004type\030", "nelMenu\"D\n\021ModifyChannelInfo\022\022\n\nchannel_",
"\002 \002(\005\022\r\n\005value\030\003 \002(\t\"8\n\017TransferChannel\022" + "id\030\001 \002(\t\022\014\n\004type\030\002 \002(\005\022\r\n\005value\030\003 \002(\t\"8\n" +
"\022\n\nchannel_id\030\001 \002(\t\022\021\n\tnew_owner\030\002 \002(\t\"3" + "\017TransferChannel\022\022\n\nchannel_id\030\001 \002(\t\022\021\n\t" +
"\n\017PullChannelInfo\022\022\n\nchannel_id\030\001 \002(\t\022\014\n" + "new_owner\030\002 \002(\t\"3\n\017PullChannelInfo\022\022\n\nch" +
"\004head\030\002 \002(\003\"H\n\023PullChannelListener\022\022\n\nch" + "annel_id\030\001 \002(\t\022\014\n\004head\030\002 \002(\003\"H\n\023PullChan" +
"annel_id\030\001 \002(\t\022\016\n\006offset\030\002 \002(\005\022\r\n\005count\030" + "nelListener\022\022\n\nchannel_id\030\001 \002(\t\022\016\n\006offse" +
"\003 \002(\005\"R\n\031PullChannelListenerResult\022\023\n\013to" + "t\030\002 \002(\005\022\r\n\005count\030\003 \002(\005\"R\n\031PullChannelLis" +
"tal_count\030\001 \002(\005\022\016\n\006offset\030\002 \002(\005\022\020\n\010liste" + "tenerResult\022\023\n\013total_count\030\001 \002(\005\022\016\n\006offs" +
"ner\030\003 \003(\t\"3\n\rListenChannel\022\022\n\nchannel_id" + "et\030\002 \002(\005\022\020\n\010listener\030\003 \003(\t\"3\n\rListenChan" +
"\030\001 \002(\t\022\016\n\006listen\030\002 \002(\005\"E\n\023SearchChannelR" + "nel\022\022\n\nchannel_id\030\001 \002(\t\022\016\n\006listen\030\002 \002(\005\"" +
"esult\022\035\n\007channel\030\001 \003(\0132\014.ChannelInfo\022\017\n\007", "E\n\023SearchChannelResult\022\035\n\007channel\030\001 \003(\0132",
"keyword\030\002 \002(\t\"\235\002\n\016MessageContent\022\014\n\004type" + "\014.ChannelInfo\022\017\n\007keyword\030\002 \002(\t\"\235\002\n\016Messa" +
"\030\001 \002(\005\022\032\n\022searchable_content\030\002 \001(\t\022\024\n\014pu" + "geContent\022\014\n\004type\030\001 \002(\005\022\032\n\022searchable_co" +
"sh_content\030\003 \001(\t\022\017\n\007content\030\004 \001(\t\022\014\n\004dat" + "ntent\030\002 \001(\t\022\024\n\014push_content\030\003 \001(\t\022\017\n\007con" +
"a\030\005 \001(\014\022\021\n\tmediaType\030\006 \001(\005\022\026\n\016remoteMedi" + "tent\030\004 \001(\t\022\014\n\004data\030\005 \001(\014\022\021\n\tmediaType\030\006 " +
"aUrl\030\007 \001(\t\022\024\n\014persist_flag\030\010 \001(\005\022\027\n\017expi" + "\001(\005\022\026\n\016remoteMediaUrl\030\007 \001(\t\022\024\n\014persist_f" +
"re_duration\030\t \001(\005\022\026\n\016mentioned_type\030\n \001(" + "lag\030\010 \001(\005\022\027\n\017expire_duration\030\t \001(\005\022\026\n\016me" +
"\005\022\030\n\020mentioned_target\030\013 \003(\t\022\r\n\005extra\030\014 \001" + "ntioned_type\030\n \001(\005\022\030\n\020mentioned_target\030\013" +
"(\t\022\021\n\tpush_data\030\r \001(\t\"\226\001\n\025AddGroupMember" + " \003(\t\022\r\n\005extra\030\014 \001(\t\022\021\n\tpush_data\030\r \001(\t\"\226" +
"Request\022\020\n\010group_id\030\001 \002(\t\022\"\n\014added_membe" + "\001\n\025AddGroupMemberRequest\022\020\n\010group_id\030\001 \002" +
"r\030\002 \003(\0132\014.GroupMember\022\017\n\007to_line\030\003 \003(\005\022\'", "(\t\022\"\n\014added_member\030\002 \003(\0132\014.GroupMember\022\017",
"\n\016notify_content\030\004 \001(\0132\017.MessageContent\022" + "\n\007to_line\030\003 \003(\005\022\'\n\016notify_content\030\004 \001(\0132" +
"\r\n\005extra\030\005 \001(\t\"{\n\022CreateGroupRequest\022\025\n\005" + "\017.MessageContent\022\r\n\005extra\030\005 \001(\t\"{\n\022Creat" +
"group\030\001 \002(\0132\006.Group\022\017\n\007to_line\030\002 \003(\005\022\'\n\016" + "eGroupRequest\022\025\n\005group\030\001 \002(\0132\006.Group\022\017\n\007" +
"notify_content\030\003 \001(\0132\017.MessageContent\022\024\n" + "to_line\030\002 \003(\005\022\'\n\016notify_content\030\003 \001(\0132\017." +
"\014member_extra\030\004 \001(\t\"a\n\023DismissGroupReque" + "MessageContent\022\024\n\014member_extra\030\004 \001(\t\"a\n\023" +
"st\022\020\n\010group_id\030\001 \002(\t\022\017\n\007to_line\030\002 \003(\005\022\'\n" + "DismissGroupRequest\022\020\n\010group_id\030\001 \002(\t\022\017\n" +
"\016notify_content\030\003 \001(\0132\017.MessageContent\"\245" + "\007to_line\030\002 \003(\005\022\'\n\016notify_content\030\003 \001(\0132\017" +
"\001\n\rFriendRequest\022\020\n\010from_uid\030\001 \001(\t\022\016\n\006to" + ".MessageContent\"\245\001\n\rFriendRequest\022\020\n\010fro" +
"_uid\030\002 \002(\t\022\016\n\006reason\030\003 \002(\t\022\016\n\006status\030\004 \001" + "m_uid\030\001 \001(\t\022\016\n\006to_uid\030\002 \002(\t\022\016\n\006reason\030\003 " +
"(\005\022\021\n\tupdate_dt\030\005 \001(\003\022\030\n\020from_read_statu", "\002(\t\022\016\n\006status\030\004 \001(\005\022\021\n\tupdate_dt\030\005 \001(\003\022\030",
"s\030\006 \001(\010\022\026\n\016to_read_status\030\007 \001(\010\022\r\n\005extra" + "\n\020from_read_status\030\006 \001(\010\022\026\n\016to_read_stat" +
"\030\010 \001(\t\"#\n\rGeneralResult\022\022\n\nerror_code\030\001 " + "us\030\007 \001(\010\022\r\n\005extra\030\010 \001(\t\"#\n\rGeneralResult" +
"\002(\005\"?\n\025GetUploadTokenRequest\022\022\n\nmedia_ty" + "\022\022\n\nerror_code\030\001 \002(\005\"?\n\025GetUploadTokenRe" +
"pe\030\001 \002(\005\022\022\n\nmedia_path\030\002 \002(\t\"S\n\024GetUploa" + "quest\022\022\n\nmedia_type\030\001 \002(\005\022\022\n\nmedia_path\030" +
"dTokenResult\022\016\n\006domain\030\001 \002(\t\022\r\n\005token\030\002 " + "\002 \002(\t\"S\n\024GetUploadTokenResult\022\016\n\006domain\030" +
"\002(\t\022\016\n\006server\030\003 \002(\t\022\014\n\004port\030\004 \001(\005\"H\n\023Han" + "\001 \002(\t\022\r\n\005token\030\002 \002(\t\022\016\n\006server\030\003 \002(\t\022\014\n\004" +
"dleFriendRequest\022\022\n\ntarget_uid\030\001 \002(\t\022\016\n\006" + "port\030\004 \001(\005\"H\n\023HandleFriendRequest\022\022\n\ntar" +
"status\030\002 \002(\005\022\r\n\005extra\030\003 \001(\t\"\023\n\005IDBuf\022\n\n\002" + "get_uid\030\001 \002(\t\022\016\n\006status\030\002 \002(\005\022\r\n\005extra\030\003" +
"id\030\001 \002(\t\"\027\n\tIDListBuf\022\n\n\002id\030\001 \003(\t\"\256\001\n\007Me" + " \001(\t\"\023\n\005IDBuf\022\n\n\002id\030\001 \002(\t\"\027\n\tIDListBuf\022\n" +
"ssage\022#\n\014conversation\030\001 \002(\0132\r.Conversati", "\n\002id\030\001 \003(\t\"\256\001\n\007Message\022#\n\014conversation\030\001",
"on\022\021\n\tfrom_user\030\002 \002(\t\022 \n\007content\030\003 \002(\0132\017" + " \002(\0132\r.Conversation\022\021\n\tfrom_user\030\002 \002(\t\022 " +
".MessageContent\022\022\n\nmessage_id\030\004 \001(\003\022\030\n\020s" + "\n\007content\030\003 \002(\0132\017.MessageContent\022\022\n\nmess" +
"erver_timestamp\030\005 \001(\003\022\017\n\007to_user\030\006 \001(\t\022\n" + "age_id\030\004 \001(\003\022\030\n\020server_timestamp\030\005 \001(\003\022\017" +
"\n\002to\030\007 \003(\t\"\353\001\n\004User\022\013\n\003uid\030\001 \002(\t\022\014\n\004name" + "\n\007to_user\030\006 \001(\t\022\n\n\002to\030\007 \003(\t\"\353\001\n\004User\022\013\n\003" +
"\030\002 \001(\t\022\024\n\014display_name\030\003 \001(\t\022\020\n\010portrait" + "uid\030\001 \002(\t\022\014\n\004name\030\002 \001(\t\022\024\n\014display_name\030" +
"\030\004 \001(\t\022\016\n\006mobile\030\005 \001(\t\022\r\n\005email\030\006 \001(\t\022\017\n" + "\003 \001(\t\022\020\n\010portrait\030\004 \001(\t\022\016\n\006mobile\030\005 \001(\t\022" +
"\007address\030\007 \001(\t\022\017\n\007company\030\010 \001(\t\022\r\n\005extra" + "\r\n\005email\030\006 \001(\t\022\017\n\007address\030\007 \001(\t\022\017\n\007compa" +
"\030\t \001(\t\022\021\n\tupdate_dt\030\n \001(\003\022\016\n\006gender\030\013 \001(" + "ny\030\010 \001(\t\022\r\n\005extra\030\t \001(\t\022\021\n\tupdate_dt\030\n \001" +
"\005\022\016\n\006social\030\014 \001(\t\022\014\n\004type\030\r \001(\005\022\017\n\007delet" + "(\003\022\016\n\006gender\030\013 \001(\005\022\016\n\006social\030\014 \001(\t\022\014\n\004ty" +
"ed\030\016 \001(\005\"c\n\005Robot\022\013\n\003uid\030\001 \002(\t\022\r\n\005state\030", "pe\030\r \001(\005\022\017\n\007deleted\030\016 \001(\005\"c\n\005Robot\022\013\n\003ui",
"\002 \002(\005\022\r\n\005owner\030\003 \001(\t\022\016\n\006secret\030\004 \001(\t\022\020\n\010" + "d\030\001 \002(\t\022\r\n\005state\030\002 \002(\005\022\r\n\005owner\030\003 \001(\t\022\016\n" +
"callback\030\005 \001(\t\022\r\n\005extra\030\006 \001(\t\"(\n\017GetRobo" + "\006secret\030\004 \001(\t\022\020\n\010callback\030\005 \001(\t\022\r\n\005extra" +
"tsResult\022\025\n\005entry\030\001 \003(\0132\006.Robot\"g\n\030Uploa" + "\030\006 \001(\t\"(\n\017GetRobotsResult\022\025\n\005entry\030\001 \003(\013" +
"dDeviceTokenRequest\022\020\n\010platform\030\001 \002(\005\022\020\n" + "2\006.Robot\"g\n\030UploadDeviceTokenRequest\022\020\n\010" +
"\010app_name\030\002 \002(\t\022\024\n\014device_token\030\003 \002(\t\022\021\n" + "platform\030\001 \002(\005\022\020\n\010app_name\030\002 \002(\t\022\024\n\014devi" +
"\tpush_type\030\004 \002(\005\"\201\001\n\026ModifyGroupInfoRequ" + "ce_token\030\003 \002(\t\022\021\n\tpush_type\030\004 \002(\005\"\201\001\n\026Mo" +
"est\022\020\n\010group_id\030\001 \002(\t\022\014\n\004type\030\002 \002(\005\022\r\n\005v" + "difyGroupInfoRequest\022\020\n\010group_id\030\001 \002(\t\022\014" +
"alue\030\003 \002(\t\022\017\n\007to_line\030\004 \003(\005\022\'\n\016notify_co" + "\n\004type\030\002 \002(\005\022\r\n\005value\030\003 \002(\t\022\017\n\007to_line\030\004" +
"ntent\030\005 \001(\0132\017.MessageContent\"\203\001\n\026SetGrou" + " \003(\005\022\'\n\016notify_content\030\005 \001(\0132\017.MessageCo" +
"pManagerRequest\022\020\n\010group_id\030\001 \002(\t\022\014\n\004typ", "ntent\"\203\001\n\026SetGroupManagerRequest\022\020\n\010grou",
"e\030\002 \002(\005\022\017\n\007user_id\030\003 \003(\t\022\017\n\007to_line\030\004 \003(" + "p_id\030\001 \002(\t\022\014\n\004type\030\002 \002(\005\022\017\n\007user_id\030\003 \003(" +
"\005\022\'\n\016notify_content\030\005 \001(\0132\017.MessageConte" + "\t\022\017\n\007to_line\030\004 \003(\005\022\'\n\016notify_content\030\005 \001" +
"nt\"(\n\tInfoEntry\022\014\n\004type\030\001 \002(\005\022\r\n\005value\030\002" + "(\0132\017.MessageContent\"(\n\tInfoEntry\022\014\n\004type" +
" \002(\t\"0\n\023ModifyMyInfoRequest\022\031\n\005entry\030\001 \003" + "\030\001 \002(\005\022\r\n\005value\030\002 \002(\t\"0\n\023ModifyMyInfoReq" +
"(\0132\n.InfoEntry\";\n\rNotifyMessage\022\014\n\004type\030" + "uest\022\031\n\005entry\030\001 \003(\0132\n.InfoEntry\";\n\rNotif" +
"\001 \002(\005\022\014\n\004head\030\002 \002(\003\022\016\n\006target\030\003 \001(\t\"=\n\022P" + "yMessage\022\014\n\004type\030\001 \002(\005\022\014\n\004head\030\002 \002(\003\022\016\n\006" +
"ullMessageRequest\022\n\n\002id\030\001 \002(\003\022\014\n\004type\030\002 " + "target\030\003 \001(\t\"=\n\022PullMessageRequest\022\n\n\002id" +
"\002(\005\022\r\n\005delay\030\003 \001(\003\"M\n\021PullMessageResult\022" + "\030\001 \002(\003\022\014\n\004type\030\002 \002(\005\022\r\n\005delay\030\003 \001(\003\"M\n\021P" +
"\031\n\007message\030\001 \003(\0132\010.Message\022\017\n\007current\030\002 " + "ullMessageResult\022\031\n\007message\030\001 \003(\0132\010.Mess" +
"\002(\003\022\014\n\004head\030\003 \002(\003\"/\n\023PullGroupInfoResult", "age\022\017\n\007current\030\002 \002(\003\022\014\n\004head\030\003 \002(\003\"/\n\023Pu",
"\022\030\n\004info\030\001 \003(\0132\n.GroupInfo\"6\n\026PullGroupM" + "llGroupInfoResult\022\030\n\004info\030\001 \003(\0132\n.GroupI" +
"emberRequest\022\016\n\006target\030\001 \002(\t\022\014\n\004head\030\002 \002" + "nfo\"6\n\026PullGroupMemberRequest\022\016\n\006target\030" +
"(\003\"5\n\025PullGroupMemberResult\022\034\n\006member\030\001 " + "\001 \002(\t\022\014\n\004head\030\002 \002(\003\"5\n\025PullGroupMemberRe" +
"\003(\0132\014.GroupMember\"-\n\013UserRequest\022\013\n\003uid\030" + "sult\022\034\n\006member\030\001 \003(\0132\014.GroupMember\"-\n\013Us" +
"\001 \002(\t\022\021\n\tupdate_dt\030\002 \001(\003\"0\n\017PullUserRequ" + "erRequest\022\013\n\003uid\030\001 \002(\t\022\021\n\tupdate_dt\030\002 \001(" +
"est\022\035\n\007request\030\001 \003(\0132\014.UserRequest\"/\n\nUs" + "\003\"0\n\017PullUserRequest\022\035\n\007request\030\001 \003(\0132\014." +
"erResult\022\023\n\004user\030\001 \002(\0132\005.User\022\014\n\004code\030\002 " + "UserRequest\"/\n\nUserResult\022\023\n\004user\030\001 \002(\0132" +
"\002(\005\"-\n\016PullUserResult\022\033\n\006result\030\001 \003(\0132\013." + "\005.User\022\014\n\004code\030\002 \002(\005\"-\n\016PullUserResult\022\033" +
"UserResult\"^\n\020QuitGroupRequest\022\020\n\010group_" + "\n\006result\030\001 \003(\0132\013.UserResult\"^\n\020QuitGroup" +
"id\030\001 \002(\t\022\017\n\007to_line\030\002 \003(\005\022\'\n\016notify_cont", "Request\022\020\n\010group_id\030\001 \002(\t\022\017\n\007to_line\030\002 \003",
"ent\030\003 \001(\0132\017.MessageContent\"~\n\030RemoveGrou" + "(\005\022\'\n\016notify_content\030\003 \001(\0132\017.MessageCont" +
"pMemberRequest\022\020\n\010group_id\030\001 \002(\t\022\026\n\016remo" + "ent\"~\n\030RemoveGroupMemberRequest\022\020\n\010group" +
"ved_member\030\002 \003(\t\022\017\n\007to_line\030\003 \003(\005\022\'\n\016not" + "_id\030\001 \002(\t\022\026\n\016removed_member\030\002 \003(\t\022\017\n\007to_" +
"ify_content\030\004 \001(\0132\017.MessageContent\"u\n\024Tr" + "line\030\003 \003(\005\022\'\n\016notify_content\030\004 \001(\0132\017.Mes" +
"ansferGroupRequest\022\020\n\010group_id\030\001 \002(\t\022\021\n\t" + "sageContent\"u\n\024TransferGroupRequest\022\020\n\010g" +
"new_owner\030\002 \002(\t\022\017\n\007to_line\030\003 \003(\005\022\'\n\016noti" + "roup_id\030\001 \002(\t\022\021\n\tnew_owner\030\002 \002(\t\022\017\n\007to_l" +
"fy_content\030\004 \001(\0132\017.MessageContent\"\206\001\n\026Mo" + "ine\030\003 \003(\005\022\'\n\016notify_content\030\004 \001(\0132\017.Mess" +
"difyGroupMemberAlias\022\020\n\010group_id\030\001 \002(\t\022\r" + "ageContent\"\206\001\n\026ModifyGroupMemberAlias\022\020\n" +
"\n\005alias\030\002 \002(\t\022\017\n\007to_line\030\003 \003(\005\022\'\n\016notify" + "\010group_id\030\001 \002(\t\022\r\n\005alias\030\002 \002(\t\022\017\n\007to_lin" +
"_content\030\004 \001(\0132\017.MessageContent\022\021\n\tmembe", "e\030\003 \003(\005\022\'\n\016notify_content\030\004 \001(\0132\017.Messag",
"r_id\030\005 \001(\t\"\206\001\n\026ModifyGroupMemberExtra\022\020\n" + "eContent\022\021\n\tmember_id\030\005 \001(\t\"\206\001\n\026ModifyGr" +
"\010group_id\030\001 \002(\t\022\017\n\007to_line\030\002 \003(\005\022\'\n\016noti" + "oupMemberExtra\022\020\n\010group_id\030\001 \002(\t\022\017\n\007to_l" +
"fy_content\030\003 \001(\0132\017.MessageContent\022\r\n\005ext" + "ine\030\002 \003(\005\022\'\n\016notify_content\030\003 \001(\0132\017.Mess" +
"ra\030\004 \001(\t\022\021\n\tmember_id\030\005 \001(\t\"P\n\020UserSetti" + "ageContent\022\r\n\005extra\030\004 \001(\t\022\021\n\tmember_id\030\005" +
"ngEntry\022\r\n\005scope\030\001 \002(\005\022\013\n\003key\030\002 \002(\t\022\r\n\005v" + " \001(\t\"P\n\020UserSettingEntry\022\r\n\005scope\030\001 \002(\005\022" +
"alue\030\003 \002(\t\022\021\n\tupdate_dt\030\004 \002(\003\"A\n\024ModifyU" + "\013\n\003key\030\002 \002(\t\022\r\n\005value\030\003 \002(\t\022\021\n\tupdate_dt" +
"serSettingReq\022\r\n\005scope\030\001 \002(\005\022\013\n\003key\030\002 \002(" + "\030\004 \002(\003\"A\n\024ModifyUserSettingReq\022\r\n\005scope\030" +
"\t\022\r\n\005value\030\003 \002(\t\"\032\n\007Version\022\017\n\007version\030\001" + "\001 \002(\005\022\013\n\003key\030\002 \002(\t\022\r\n\005value\030\003 \002(\t\"\032\n\007Ver" +
" \002(\003\"8\n\024GetUserSettingResult\022 \n\005entry\030\001 " + "sion\022\017\n\007version\030\001 \002(\003\"8\n\024GetUserSettingR" +
"\003(\0132\021.UserSettingEntry\"f\n\006Friend\022\013\n\003uid\030", "esult\022 \n\005entry\030\001 \003(\0132\021.UserSettingEntry\"",
"\001 \002(\t\022\r\n\005state\030\002 \002(\005\022\021\n\tupdate_dt\030\003 \002(\003\022" + "f\n\006Friend\022\013\n\003uid\030\001 \002(\t\022\r\n\005state\030\002 \002(\005\022\021\n" +
"\r\n\005alias\030\004 \001(\t\022\017\n\007blacked\030\005 \001(\005\022\r\n\005extra" + "\tupdate_dt\030\003 \002(\003\022\r\n\005alias\030\004 \001(\t\022\017\n\007black" +
"\030\006 \001(\t\"*\n\020GetFriendsResult\022\026\n\005entry\030\001 \003(" + "ed\030\005 \001(\005\022\r\n\005extra\030\006 \001(\t\"*\n\020GetFriendsRes" +
"\0132\007.Friend\"7\n\026GetFriendRequestResult\022\035\n\005" + "ult\022\026\n\005entry\030\001 \003(\0132\007.Friend\"7\n\026GetFriend" +
"entry\030\001 \003(\0132\016.FriendRequest\"\243\001\n\021ConnectA" + "RequestResult\022\035\n\005entry\030\001 \003(\0132\016.FriendReq" +
"ckPayload\022\020\n\010msg_head\030\001 \001(\003\022\023\n\013friend_he" + "uest\"\243\001\n\021ConnectAckPayload\022\020\n\010msg_head\030\001" +
"ad\030\002 \001(\003\022\026\n\016friend_rq_head\030\003 \001(\003\022\024\n\014sett" + " \001(\003\022\023\n\013friend_head\030\002 \001(\003\022\026\n\016friend_rq_h" +
"ing_head\030\004 \001(\003\022\021\n\tnode_addr\030\005 \001(\t\022\021\n\tnod" + "ead\030\003 \001(\003\022\024\n\014setting_head\030\004 \001(\003\022\021\n\tnode_" +
"e_port\030\006 \001(\005\022\023\n\013server_time\030\007 \001(\003\"P\n\rIMH" + "addr\030\005 \001(\t\022\021\n\tnode_port\030\006 \001(\005\022\023\n\013server_" +
"ttpWrapper\022\r\n\005token\030\001 \002(\t\022\021\n\tclient_id\030\002", "time\030\007 \001(\003\"P\n\rIMHttpWrapper\022\r\n\005token\030\001 \002",
" \002(\t\022\017\n\007request\030\003 \002(\t\022\014\n\004data\030\004 \001(\014\"A\n\021S" + "(\t\022\021\n\tclient_id\030\002 \002(\t\022\017\n\007request\030\003 \002(\t\022\014" +
"earchUserRequest\022\017\n\007keyword\030\001 \002(\t\022\r\n\005fuz" + "\n\004data\030\004 \001(\014\"A\n\021SearchUserRequest\022\017\n\007key" +
"zy\030\002 \001(\005\022\014\n\004page\030\003 \001(\005\"(\n\020SearchUserResu" + "word\030\001 \002(\t\022\r\n\005fuzzy\030\002 \001(\005\022\014\n\004page\030\003 \001(\005\"" +
"lt\022\024\n\005entry\030\001 \003(\0132\005.User\"@\n\026GetChatroomI" + "(\n\020SearchUserResult\022\024\n\005entry\030\001 \003(\0132\005.Use" +
"nfoRequest\022\023\n\013chatroom_id\030\001 \002(\t\022\021\n\tupdat" + "r\"@\n\026GetChatroomInfoRequest\022\023\n\013chatroom_" +
"e_dt\030\002 \001(\003\"\227\001\n\014ChatroomInfo\022\r\n\005title\030\001 \002" + "id\030\001 \002(\t\022\021\n\tupdate_dt\030\002 \001(\003\"\227\001\n\014Chatroom" +
"(\t\022\014\n\004desc\030\002 \001(\t\022\020\n\010portrait\030\003 \001(\t\022\024\n\014me" + "Info\022\r\n\005title\030\001 \002(\t\022\014\n\004desc\030\002 \001(\t\022\020\n\010por" +
"mber_count\030\004 \001(\005\022\021\n\tcreate_dt\030\005 \001(\003\022\021\n\tu" + "trait\030\003 \001(\t\022\024\n\014member_count\030\004 \001(\005\022\021\n\tcre" +
"pdate_dt\030\006 \001(\003\022\r\n\005extra\030\007 \001(\t\022\r\n\005state\030\010" + "ate_dt\030\005 \001(\003\022\021\n\tupdate_dt\030\006 \001(\003\022\r\n\005extra" +
" \001(\005\"F\n\034GetChatroomMemberInfoRequest\022\023\n\013", "\030\007 \001(\t\022\r\n\005state\030\010 \001(\005\"F\n\034GetChatroomMemb",
"chatroom_id\030\001 \002(\t\022\021\n\tmax_count\030\002 \001(\005\";\n\022" + "erInfoRequest\022\023\n\013chatroom_id\030\001 \002(\t\022\021\n\tma" +
"ChatroomMemberInfo\022\024\n\014member_count\030\001 \001(\005" + "x_count\030\002 \001(\005\";\n\022ChatroomMemberInfo\022\024\n\014m" +
"\022\017\n\007members\030\002 \003(\t\"\026\n\010INT64Buf\022\n\n\002id\030\001 \002(" + "ember_count\030\001 \001(\005\022\017\n\007members\030\002 \003(\t\"\026\n\010IN" +
"\003\"4\n\023NotifyRecallMessage\022\n\n\002id\030\001 \002(\003\022\021\n\t" + "T64Buf\022\n\n\002id\030\001 \002(\003\"4\n\023NotifyRecallMessag" +
"from_user\030\002 \002(\t\"/\n\020BlackUserRequest\022\013\n\003u" + "e\022\n\n\002id\030\001 \002(\003\022\021\n\tfrom_user\030\002 \002(\t\"/\n\020Blac" +
"id\030\001 \002(\t\022\016\n\006status\030\002 \002(\005\"\323\001\n\014RouteReques" + "kUserRequest\022\013\n\003uid\030\001 \002(\t\022\016\n\006status\030\002 \002(" +
"t\022\013\n\003app\030\001 \001(\t\022\020\n\010platform\030\002 \001(\005\022\021\n\tpush" + "\005\"\323\001\n\014RouteRequest\022\013\n\003app\030\001 \001(\t\022\020\n\010platf" +
"_type\030\003 \001(\005\022\023\n\013device_name\030\004 \001(\t\022\026\n\016devi" + "orm\030\002 \001(\005\022\021\n\tpush_type\030\003 \001(\005\022\023\n\013device_n" +
"ce_version\030\005 \001(\t\022\022\n\nphone_name\030\006 \001(\t\022\020\n\010" + "ame\030\004 \001(\t\022\026\n\016device_version\030\005 \001(\t\022\022\n\npho" +
"language\030\007 \001(\t\022\024\n\014carrier_name\030\010 \001(\t\022\023\n\013", "ne_name\030\006 \001(\t\022\020\n\010language\030\007 \001(\t\022\024\n\014carri",
"app_version\030\t \001(\t\022\023\n\013sdk_version\030\n \001(\t\"D" + "er_name\030\010 \001(\t\022\023\n\013app_version\030\t \001(\t\022\023\n\013sd" +
"\n\rRouteResponse\022\014\n\004host\030\001 \002(\t\022\021\n\tlong_po" + "k_version\030\n \001(\t\"D\n\rRouteResponse\022\014\n\004host" +
"rt\030\002 \002(\005\022\022\n\nshort_port\030\003 \002(\005\"G\n\017GetToken" + "\030\001 \002(\t\022\021\n\tlong_port\030\002 \002(\005\022\022\n\nshort_port\030" +
"Request\022\017\n\007user_id\030\001 \002(\t\022\021\n\tclient_id\030\002 " + "\003 \002(\005\"G\n\017GetTokenRequest\022\017\n\007user_id\030\001 \002(" +
"\002(\t\022\020\n\010platform\030\003 \001(\005\"r\n\022LoadRemoteMessa" + "\t\022\021\n\tclient_id\030\002 \002(\t\022\020\n\010platform\030\003 \001(\005\"r" +
"ges\022#\n\014conversation\030\001 \002(\0132\r.Conversation" + "\n\022LoadRemoteMessages\022#\n\014conversation\030\001 \002" +
"\022\022\n\nbefore_uid\030\002 \002(\003\022\r\n\005count\030\003 \002(\005\022\024\n\014c" + "(\0132\r.Conversation\022\022\n\nbefore_uid\030\002 \002(\003\022\r\n" +
"ontent_type\030\004 \003(\005\"a\n\020MultiCastMessage\022\021\n" + "\005count\030\003 \002(\005\022\024\n\014content_type\030\004 \003(\005\"a\n\020Mu" +
"\tfrom_user\030\001 \002(\t\022 \n\007content\030\002 \002(\0132\017.Mess" + "ltiCastMessage\022\021\n\tfrom_user\030\001 \002(\t\022 \n\007con" +
"ageContent\022\n\n\002to\030\003 \003(\t\022\014\n\004line\030\004 \002(\005\"E\n\035", "tent\030\002 \002(\0132\017.MessageContent\022\n\n\002to\030\003 \003(\t\022",
"RecallMultiCastMessageRequest\022\022\n\nmessage" + "\014\n\004line\030\004 \002(\005\"E\n\035RecallMultiCastMessageR" +
"_id\030\001 \002(\003\022\020\n\010receiver\030\002 \003(\t\"@\n\017AuthCodeR" + "equest\022\022\n\nmessage_id\030\001 \002(\003\022\020\n\010receiver\030\002" +
"equest\022\021\n\ttarget_id\030\001 \002(\t\022\014\n\004type\030\002 \002(\005\022" + " \003(\t\"@\n\017AuthCodeRequest\022\021\n\ttarget_id\030\001 \002" +
"\014\n\004host\030\003 \002(\t\"o\n\030ApplicationConfigReques" + "(\t\022\014\n\004type\030\002 \002(\005\022\014\n\004host\030\003 \002(\t\"o\n\030Applic" +
"t\022\r\n\005appId\030\001 \002(\t\022\017\n\007appType\030\002 \002(\005\022\021\n\ttim" + "ationConfigRequest\022\r\n\005appId\030\001 \002(\t\022\017\n\007app" +
"estamp\030\003 \002(\003\022\r\n\005nonce\030\004 \002(\t\022\021\n\tsignature" + "Type\030\002 \002(\005\022\021\n\ttimestamp\030\003 \002(\003\022\r\n\005nonce\030\004" +
"\030\005 \002(\tB/\n\025cn.wildfirechat.protoB\nWFCMess" + " \002(\t\022\021\n\tsignature\030\005 \002(\tB/\n\025cn.wildfirech" +
"ageZ\n./go;proto" "at.protoB\nWFCMessageZ\n./go;proto"
}; };
com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() { new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
@@ -67502,7 +67583,7 @@ public final class WFCMessage {
internal_static_GroupInfo_fieldAccessorTable = new internal_static_GroupInfo_fieldAccessorTable = new
com.google.protobuf.GeneratedMessage.FieldAccessorTable( com.google.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_GroupInfo_descriptor, internal_static_GroupInfo_descriptor,
new java.lang.String[] { "TargetId", "Name", "Portrait", "Owner", "Type", "MemberCount", "Extra", "UpdateDt", "MemberUpdateDt", "Mute", "JoinType", "PrivateChat", "Searchable", "MaxMemberCount", "HistoryMessage", "SuperGroup", }); new java.lang.String[] { "TargetId", "Name", "Portrait", "Owner", "Type", "MemberCount", "Extra", "UpdateDt", "MemberUpdateDt", "Mute", "JoinType", "PrivateChat", "Searchable", "MaxMemberCount", "HistoryMessage", "SuperGroup", "Deleted", });
internal_static_GroupMember_descriptor = internal_static_GroupMember_descriptor =
getDescriptor().getMessageTypes().get(3); getDescriptor().getMessageTypes().get(3);
internal_static_GroupMember_fieldAccessorTable = new internal_static_GroupMember_fieldAccessorTable = new
@@ -203,6 +203,9 @@ group.visible_quit_or_kickoff_notification 0
## 是否禁止陌生人拉人入群,默认为false ## 是否禁止陌生人拉人入群,默认为false
group.disable_stranger_invite false group.disable_stranger_invite false
## 群组信息是否标记删除
group.enable_mark_deletion false
## 隐藏用户信息属性类型,2是性别,3是电话号码,4是邮箱,5是地址,6是公司信息,7是社交账号,8是Extra信息。当需要隐藏多个时以英文逗号分开; ## 隐藏用户信息属性类型,2是性别,3是电话号码,4是邮箱,5是地址,6是公司信息,7是社交账号,8是Extra信息。当需要隐藏多个时以英文逗号分开;
## 本配置是为了提高安全性,避免把对应信息同步到客户端,这样就能防止程序被破解从而拿到用户关键信息。仅对客户端有效,server api不受影响。 ## 本配置是为了提高安全性,避免把对应信息同步到客户端,这样就能防止程序被破解从而拿到用户关键信息。仅对客户端有效,server api不受影响。
## 注意,修改本配置不会对已经同步的信息产生影响。 ## 注意,修改本配置不会对已经同步的信息产生影响。