Skip to content

Commit 028e33d

Browse files
committed
add GroupMuteMemberNotificationContent
1 parent d0ec182 commit 028e33d

File tree

7 files changed

+137
-3
lines changed

7 files changed

+137
-3
lines changed

chat/kit/src/main/java/cn/wildfire/chat/kit/conversation/message/viewholder/SimpleNotificationMessageContentViewHolder.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import cn.wildfirechat.message.notification.CreateGroupNotificationContent;
1919
import cn.wildfirechat.message.notification.DismissGroupNotificationContent;
2020
import cn.wildfirechat.message.notification.GroupJoinTypeNotificationContent;
21+
import cn.wildfirechat.message.notification.GroupMuteMemberNotificationContent;
2122
import cn.wildfirechat.message.notification.GroupMuteNotificationContent;
2223
import cn.wildfirechat.message.notification.GroupPrivateChatNotificationContent;
2324
import cn.wildfirechat.message.notification.GroupSetManagerNotificationContent;
@@ -46,6 +47,7 @@
4647
GroupPrivateChatNotificationContent.class,
4748
GroupJoinTypeNotificationContent.class,
4849
GroupSetManagerNotificationContent.class,
50+
GroupMuteMemberNotificationContent.class,
4951
AddParticipantsMessageContent.class
5052
// TODO add more
5153

chat/kit/src/main/java/cn/wildfire/chat/kit/group/GroupViewModel.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,7 @@ public List<GroupMember> getMutedMembers(String groupId) {
384384
List<GroupMember> managers = new ArrayList<>();
385385
if (members != null) {
386386
for (GroupMember member : members) {
387-
if (member.type == GroupMember.GroupMemberType.Silent) {
387+
if (member.type == GroupMember.GroupMemberType.Muted) {
388388
managers.add(member);
389389
}
390390
}

chat/kit/src/main/java/cn/wildfire/chat/kit/group/manage/GroupMemberMuteListFragment.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public void onUserClick(UIUserInfo userInfo) {
7676
new MaterialDialog.Builder(getActivity())
7777
.items(Collections.singleton("取消禁言"))
7878
.itemsCallback((dialog, itemView, position, text) -> {
79-
groupViewModel.setGroupManager(groupInfo.target, false, Collections.singletonList(userInfo.getUserInfo().uid), null, Collections.singletonList(0));
79+
groupViewModel.muteGroupMember(groupInfo.target, false, Collections.singletonList(userInfo.getUserInfo().uid), null, Collections.singletonList(0));
8080
})
8181
.cancelable(true)
8282
.build()

client/src/main/java/cn/wildfirechat/client/ClientService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@
6565
import cn.wildfirechat.message.notification.CreateGroupNotificationContent;
6666
import cn.wildfirechat.message.notification.DismissGroupNotificationContent;
6767
import cn.wildfirechat.message.notification.GroupJoinTypeNotificationContent;
68+
import cn.wildfirechat.message.notification.GroupMuteMemberNotificationContent;
6869
import cn.wildfirechat.message.notification.GroupMuteNotificationContent;
6970
import cn.wildfirechat.message.notification.GroupPrivateChatNotificationContent;
7071
import cn.wildfirechat.message.notification.GroupSetManagerNotificationContent;
@@ -2029,6 +2030,7 @@ public void onCreate() {
20292030
mBinder.registerMessageContent(GroupJoinTypeNotificationContent.class.getName());
20302031
mBinder.registerMessageContent(GroupPrivateChatNotificationContent.class.getName());
20312032
mBinder.registerMessageContent(GroupSetManagerNotificationContent.class.getName());
2033+
mBinder.registerMessageContent(GroupMuteMemberNotificationContent.class.getName());
20322034
} catch (RemoteException e) {
20332035
e.printStackTrace();
20342036
}

client/src/main/java/cn/wildfirechat/message/core/MessageContentType.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ public interface MessageContentType {
4646
int CONTENT_TYPE_CHANGE_PRIVATECHAT = 115;
4747
int CONTENT_TYPE_CHANGE_SEARCHABLE = 116;
4848
int CONTENT_TYPE_SET_MANAGER = 117;
49+
//禁言/取消禁言群成员的通知消息
50+
int CONTENT_TYPE_MUTE_MEMBER = 118;
4951

5052
int ContentType_Call_Start = 400;
5153
int ContentType_Call_End = 402;
Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
package cn.wildfirechat.message.notification;
2+
3+
import android.os.Parcel;
4+
5+
import org.json.JSONArray;
6+
import org.json.JSONException;
7+
import org.json.JSONObject;
8+
9+
import java.util.ArrayList;
10+
import java.util.List;
11+
12+
import cn.wildfirechat.message.Message;
13+
import cn.wildfirechat.message.core.ContentTag;
14+
import cn.wildfirechat.message.core.MessagePayload;
15+
import cn.wildfirechat.message.core.PersistFlag;
16+
import cn.wildfirechat.remote.ChatManager;
17+
18+
import static cn.wildfirechat.message.core.MessageContentType.CONTENT_TYPE_MUTE_MEMBER;
19+
20+
@ContentTag(type = CONTENT_TYPE_MUTE_MEMBER, flag = PersistFlag.Persist)
21+
public class GroupMuteMemberNotificationContent extends NotificationMessageContent {
22+
public String groupId;
23+
public String operator;
24+
// 操作类型,1禁言,0取消禁言
25+
public int type;
26+
public List<String> memberIds;
27+
28+
@Override
29+
public String formatNotification(Message message) {
30+
StringBuilder sb = new StringBuilder();
31+
if (fromSelf) {
32+
sb.append("您");
33+
} else {
34+
sb.append(ChatManager.Instance().getGroupMemberDisplayName(groupId, operator));
35+
}
36+
sb.append("把");
37+
if (memberIds != null) {
38+
for (String member : memberIds) {
39+
sb.append(" ");
40+
sb.append(ChatManager.Instance().getGroupMemberDisplayName(groupId, member));
41+
}
42+
sb.append(" ");
43+
}
44+
if (type == 0) {
45+
sb.append("取消禁言");
46+
} else {
47+
sb.append("设置禁言");
48+
}
49+
50+
return sb.toString();
51+
}
52+
53+
@Override
54+
public MessagePayload encode() {
55+
MessagePayload payload = new MessagePayload();
56+
try {
57+
JSONObject objWrite = new JSONObject();
58+
objWrite.put("g", groupId);
59+
objWrite.put("o", operator);
60+
objWrite.put("n", type + "");
61+
objWrite.put("ms", new JSONArray(memberIds));
62+
payload.binaryContent = objWrite.toString().getBytes();
63+
} catch (JSONException e) {
64+
e.printStackTrace();
65+
}
66+
67+
return payload;
68+
}
69+
70+
@Override
71+
public void decode(MessagePayload payload) {
72+
try {
73+
if (payload.binaryContent != null) {
74+
JSONObject jsonObject = new JSONObject(new String(payload.binaryContent));
75+
groupId = jsonObject.optString("g");
76+
operator = jsonObject.optString("o");
77+
type = Integer.parseInt(jsonObject.optString("n", "0"));
78+
memberIds = new ArrayList<>();
79+
JSONArray jsonArray = jsonObject.getJSONArray("ms");
80+
if (jsonArray != null) {
81+
for (int i = 0; i < jsonArray.length(); i++) {
82+
memberIds.add(jsonArray.getString(i));
83+
}
84+
}
85+
}
86+
} catch (JSONException e) {
87+
e.printStackTrace();
88+
}
89+
}
90+
91+
92+
@Override
93+
public int describeContents() {
94+
return 0;
95+
}
96+
97+
@Override
98+
public void writeToParcel(Parcel dest, int flags) {
99+
super.writeToParcel(dest, flags);
100+
dest.writeString(this.groupId);
101+
dest.writeString(this.operator);
102+
dest.writeInt(this.type);
103+
dest.writeStringList(this.memberIds);
104+
}
105+
106+
public GroupMuteMemberNotificationContent() {
107+
}
108+
109+
protected GroupMuteMemberNotificationContent(Parcel in) {
110+
super(in);
111+
this.groupId = in.readString();
112+
this.operator = in.readString();
113+
this.type = in.readInt();
114+
this.memberIds = in.createStringArrayList();
115+
}
116+
117+
public static final Creator<GroupMuteMemberNotificationContent> CREATOR = new Creator<GroupMuteMemberNotificationContent>() {
118+
@Override
119+
public GroupMuteMemberNotificationContent createFromParcel(Parcel source) {
120+
return new GroupMuteMemberNotificationContent(source);
121+
}
122+
123+
@Override
124+
public GroupMuteMemberNotificationContent[] newArray(int size) {
125+
return new GroupMuteMemberNotificationContent[size];
126+
}
127+
};
128+
}

client/src/main/java/cn/wildfirechat/model/GroupMember.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public enum GroupMemberType {
1313
Normal(0),
1414
Manager(1),
1515
Owner(2),
16-
Silent(3),
16+
Muted(3),
1717
Removed(4);
1818

1919
private int value;

0 commit comments

Comments
 (0)