* LCIMConversation.cs:
* LCIMConversationController.cs: chore: 完善对话接口
parent
99975d9f7f
commit
ae8fbfa830
|
@ -164,6 +164,9 @@ namespace LeanCloud.Realtime {
|
||||||
internal LCIMConversation(LCIMClient client) {
|
internal LCIMConversation(LCIMClient client) {
|
||||||
Client = client;
|
Client = client;
|
||||||
customProperties = new Dictionary<string, object>();
|
customProperties = new Dictionary<string, object>();
|
||||||
|
ids = new HashSet<string>();
|
||||||
|
mutedIds = new HashSet<string>();
|
||||||
|
customProperties = new Dictionary<string, object>();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -210,7 +213,9 @@ namespace LeanCloud.Realtime {
|
||||||
if (clientIds == null || clientIds.Count() == 0) {
|
if (clientIds == null || clientIds.Count() == 0) {
|
||||||
throw new ArgumentNullException(nameof(clientIds));
|
throw new ArgumentNullException(nameof(clientIds));
|
||||||
}
|
}
|
||||||
return await Client.ConversationController.AddMembers(Id, clientIds);
|
LCIMPartiallySuccessResult result = await Client.ConversationController.AddMembers(Id, clientIds);
|
||||||
|
ids.UnionWith(result.SuccessfulClientIdList);
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -222,7 +227,9 @@ namespace LeanCloud.Realtime {
|
||||||
if (removeIds == null || removeIds.Count() == 0) {
|
if (removeIds == null || removeIds.Count() == 0) {
|
||||||
throw new ArgumentNullException(nameof(removeIds));
|
throw new ArgumentNullException(nameof(removeIds));
|
||||||
}
|
}
|
||||||
return await Client.ConversationController.RemoveMembers(Id, removeIds);
|
LCIMPartiallySuccessResult result = await Client.ConversationController.RemoveMembers(Id, removeIds);
|
||||||
|
ids.RemoveWhere(id => result.SuccessfulClientIdList.Contains(id));
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -294,7 +301,11 @@ namespace LeanCloud.Realtime {
|
||||||
if (clientIds == null || clientIds.Count() == 0) {
|
if (clientIds == null || clientIds.Count() == 0) {
|
||||||
throw new ArgumentNullException(nameof(clientIds));
|
throw new ArgumentNullException(nameof(clientIds));
|
||||||
}
|
}
|
||||||
return await Client.ConversationController.MuteMembers(Id, clientIds);
|
LCIMPartiallySuccessResult result = await Client.ConversationController.MuteMembers(Id, clientIds);
|
||||||
|
if (result.SuccessfulClientIdList != null) {
|
||||||
|
mutedIds.UnionWith(result.SuccessfulClientIdList);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -306,7 +317,11 @@ namespace LeanCloud.Realtime {
|
||||||
if (clientIds == null || clientIds.Count() == 0) {
|
if (clientIds == null || clientIds.Count() == 0) {
|
||||||
throw new ArgumentNullException(nameof(clientIds));
|
throw new ArgumentNullException(nameof(clientIds));
|
||||||
}
|
}
|
||||||
return await Client.ConversationController.UnmuteMembers(Id, clientIds);
|
LCIMPartiallySuccessResult result = await Client.ConversationController.UnmuteMembers(Id, clientIds);
|
||||||
|
if (result.SuccessfulClientIdList != null) {
|
||||||
|
mutedIds.RemoveWhere(id => result.SuccessfulClientIdList.Contains(id));
|
||||||
|
}
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -375,9 +375,11 @@ namespace LeanCloud.Realtime.Internal.Controller {
|
||||||
string next = null) {
|
string next = null) {
|
||||||
ConvCommand conv = new ConvCommand {
|
ConvCommand conv = new ConvCommand {
|
||||||
Cid = convId,
|
Cid = convId,
|
||||||
Limit = limit,
|
Limit = limit
|
||||||
Next = next
|
|
||||||
};
|
};
|
||||||
|
if (next != null) {
|
||||||
|
conv.Next = next;
|
||||||
|
}
|
||||||
GenericCommand request = NewCommand(CommandType.Conv, OpType.QueryShutup);
|
GenericCommand request = NewCommand(CommandType.Conv, OpType.QueryShutup);
|
||||||
request.ConvMessage = conv;
|
request.ConvMessage = conv;
|
||||||
GenericCommand response = await Client.Connection.SendRequest(request);
|
GenericCommand response = await Client.Connection.SendRequest(request);
|
||||||
|
@ -399,9 +401,11 @@ namespace LeanCloud.Realtime.Internal.Controller {
|
||||||
string next = null) {
|
string next = null) {
|
||||||
BlacklistCommand black = new BlacklistCommand {
|
BlacklistCommand black = new BlacklistCommand {
|
||||||
SrcCid = convId,
|
SrcCid = convId,
|
||||||
Limit = limit,
|
Limit = limit
|
||||||
Next = next
|
|
||||||
};
|
};
|
||||||
|
if (next != null) {
|
||||||
|
black.Next = next;
|
||||||
|
}
|
||||||
GenericCommand request = NewCommand(CommandType.Blacklist, OpType.Query);
|
GenericCommand request = NewCommand(CommandType.Blacklist, OpType.Query);
|
||||||
request.BlacklistMessage = black;
|
request.BlacklistMessage = black;
|
||||||
GenericCommand response = await Client.Connection.SendRequest(request);
|
GenericCommand response = await Client.Connection.SendRequest(request);
|
||||||
|
@ -620,7 +624,7 @@ namespace LeanCloud.Realtime.Internal.Controller {
|
||||||
private async Task OnMembersJoined(ConvCommand convMessage) {
|
private async Task OnMembersJoined(ConvCommand convMessage) {
|
||||||
LCIMConversation conversation = await Client.GetOrQueryConversation(convMessage.Cid);
|
LCIMConversation conversation = await Client.GetOrQueryConversation(convMessage.Cid);
|
||||||
ReadOnlyCollection<string> joinedIds = new ReadOnlyCollection<string>(convMessage.M);
|
ReadOnlyCollection<string> joinedIds = new ReadOnlyCollection<string>(convMessage.M);
|
||||||
conversation.ids.Union(joinedIds);
|
conversation.ids.UnionWith(joinedIds);
|
||||||
Client.OnMembersJoined?.Invoke(conversation, joinedIds, convMessage.InitBy);
|
Client.OnMembersJoined?.Invoke(conversation, joinedIds, convMessage.InitBy);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -666,7 +670,7 @@ namespace LeanCloud.Realtime.Internal.Controller {
|
||||||
private async Task OnMembersMuted(ConvCommand convMessage) {
|
private async Task OnMembersMuted(ConvCommand convMessage) {
|
||||||
LCIMConversation conversation = await Client.GetOrQueryConversation(convMessage.Cid);
|
LCIMConversation conversation = await Client.GetOrQueryConversation(convMessage.Cid);
|
||||||
ReadOnlyCollection<string> mutedMemberIds = new ReadOnlyCollection<string>(convMessage.M);
|
ReadOnlyCollection<string> mutedMemberIds = new ReadOnlyCollection<string>(convMessage.M);
|
||||||
conversation.mutedIds.Union(mutedMemberIds);
|
conversation.mutedIds.UnionWith(mutedMemberIds);
|
||||||
Client.OnMembersMuted?.Invoke(conversation, mutedMemberIds, convMessage.InitBy);
|
Client.OnMembersMuted?.Invoke(conversation, mutedMemberIds, convMessage.InitBy);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue