Skip to content

Commit

Permalink
add GroupMuteMemberNotificationContent
Browse files Browse the repository at this point in the history
  • Loading branch information
siqiii committed May 31, 2020
1 parent d0ec182 commit 028e33d
Show file tree
Hide file tree
Showing 7 changed files with 137 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import cn.wildfirechat.message.notification.CreateGroupNotificationContent;
import cn.wildfirechat.message.notification.DismissGroupNotificationContent;
import cn.wildfirechat.message.notification.GroupJoinTypeNotificationContent;
import cn.wildfirechat.message.notification.GroupMuteMemberNotificationContent;
import cn.wildfirechat.message.notification.GroupMuteNotificationContent;
import cn.wildfirechat.message.notification.GroupPrivateChatNotificationContent;
import cn.wildfirechat.message.notification.GroupSetManagerNotificationContent;
Expand Down Expand Up @@ -46,6 +47,7 @@
GroupPrivateChatNotificationContent.class,
GroupJoinTypeNotificationContent.class,
GroupSetManagerNotificationContent.class,
GroupMuteMemberNotificationContent.class,
AddParticipantsMessageContent.class
// TODO add more

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -384,7 +384,7 @@ public List<GroupMember> getMutedMembers(String groupId) {
List<GroupMember> managers = new ArrayList<>();
if (members != null) {
for (GroupMember member : members) {
if (member.type == GroupMember.GroupMemberType.Silent) {
if (member.type == GroupMember.GroupMemberType.Muted) {
managers.add(member);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ public void onUserClick(UIUserInfo userInfo) {
new MaterialDialog.Builder(getActivity())
.items(Collections.singleton("取消禁言"))
.itemsCallback((dialog, itemView, position, text) -> {
groupViewModel.setGroupManager(groupInfo.target, false, Collections.singletonList(userInfo.getUserInfo().uid), null, Collections.singletonList(0));
groupViewModel.muteGroupMember(groupInfo.target, false, Collections.singletonList(userInfo.getUserInfo().uid), null, Collections.singletonList(0));
})
.cancelable(true)
.build()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@
import cn.wildfirechat.message.notification.CreateGroupNotificationContent;
import cn.wildfirechat.message.notification.DismissGroupNotificationContent;
import cn.wildfirechat.message.notification.GroupJoinTypeNotificationContent;
import cn.wildfirechat.message.notification.GroupMuteMemberNotificationContent;
import cn.wildfirechat.message.notification.GroupMuteNotificationContent;
import cn.wildfirechat.message.notification.GroupPrivateChatNotificationContent;
import cn.wildfirechat.message.notification.GroupSetManagerNotificationContent;
Expand Down Expand Up @@ -2029,6 +2030,7 @@ public void onCreate() {
mBinder.registerMessageContent(GroupJoinTypeNotificationContent.class.getName());
mBinder.registerMessageContent(GroupPrivateChatNotificationContent.class.getName());
mBinder.registerMessageContent(GroupSetManagerNotificationContent.class.getName());
mBinder.registerMessageContent(GroupMuteMemberNotificationContent.class.getName());
} catch (RemoteException e) {
e.printStackTrace();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@ public interface MessageContentType {
int CONTENT_TYPE_CHANGE_PRIVATECHAT = 115;
int CONTENT_TYPE_CHANGE_SEARCHABLE = 116;
int CONTENT_TYPE_SET_MANAGER = 117;
//禁言/取消禁言群成员的通知消息
int CONTENT_TYPE_MUTE_MEMBER = 118;

int ContentType_Call_Start = 400;
int ContentType_Call_End = 402;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
package cn.wildfirechat.message.notification;

import android.os.Parcel;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.List;

import cn.wildfirechat.message.Message;
import cn.wildfirechat.message.core.ContentTag;
import cn.wildfirechat.message.core.MessagePayload;
import cn.wildfirechat.message.core.PersistFlag;
import cn.wildfirechat.remote.ChatManager;

import static cn.wildfirechat.message.core.MessageContentType.CONTENT_TYPE_MUTE_MEMBER;

@ContentTag(type = CONTENT_TYPE_MUTE_MEMBER, flag = PersistFlag.Persist)
public class GroupMuteMemberNotificationContent extends NotificationMessageContent {
public String groupId;
public String operator;
// 操作类型,1禁言,0取消禁言
public int type;
public List<String> memberIds;

@Override
public String formatNotification(Message message) {
StringBuilder sb = new StringBuilder();
if (fromSelf) {
sb.append("您");
} else {
sb.append(ChatManager.Instance().getGroupMemberDisplayName(groupId, operator));
}
sb.append("把");
if (memberIds != null) {
for (String member : memberIds) {
sb.append(" ");
sb.append(ChatManager.Instance().getGroupMemberDisplayName(groupId, member));
}
sb.append(" ");
}
if (type == 0) {
sb.append("取消禁言");
} else {
sb.append("设置禁言");
}

return sb.toString();
}

@Override
public MessagePayload encode() {
MessagePayload payload = new MessagePayload();
try {
JSONObject objWrite = new JSONObject();
objWrite.put("g", groupId);
objWrite.put("o", operator);
objWrite.put("n", type + "");
objWrite.put("ms", new JSONArray(memberIds));
payload.binaryContent = objWrite.toString().getBytes();
} catch (JSONException e) {
e.printStackTrace();
}

return payload;
}

@Override
public void decode(MessagePayload payload) {
try {
if (payload.binaryContent != null) {
JSONObject jsonObject = new JSONObject(new String(payload.binaryContent));
groupId = jsonObject.optString("g");
operator = jsonObject.optString("o");
type = Integer.parseInt(jsonObject.optString("n", "0"));
memberIds = new ArrayList<>();
JSONArray jsonArray = jsonObject.getJSONArray("ms");
if (jsonArray != null) {
for (int i = 0; i < jsonArray.length(); i++) {
memberIds.add(jsonArray.getString(i));
}
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}


@Override
public int describeContents() {
return 0;
}

@Override
public void writeToParcel(Parcel dest, int flags) {
super.writeToParcel(dest, flags);
dest.writeString(this.groupId);
dest.writeString(this.operator);
dest.writeInt(this.type);
dest.writeStringList(this.memberIds);
}

public GroupMuteMemberNotificationContent() {
}

protected GroupMuteMemberNotificationContent(Parcel in) {
super(in);
this.groupId = in.readString();
this.operator = in.readString();
this.type = in.readInt();
this.memberIds = in.createStringArrayList();
}

public static final Creator<GroupMuteMemberNotificationContent> CREATOR = new Creator<GroupMuteMemberNotificationContent>() {
@Override
public GroupMuteMemberNotificationContent createFromParcel(Parcel source) {
return new GroupMuteMemberNotificationContent(source);
}

@Override
public GroupMuteMemberNotificationContent[] newArray(int size) {
return new GroupMuteMemberNotificationContent[size];
}
};
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ public enum GroupMemberType {
Normal(0),
Manager(1),
Owner(2),
Silent(3),
Muted(3),
Removed(4);

private int value;
Expand Down

0 comments on commit 028e33d

Please sign in to comment.