/// <summary> /// Recalls the async. /// </summary> /// <returns>The async.</returns> /// <param name="message">Message.</param> public Task <AVIMRecalledMessage> RecallAsync(IAVIMMessage message) { var tcs = new TaskCompletionSource <AVIMRecalledMessage>(); var patchCmd = new PatchCommand().Recall(message); RunCommandAsync(patchCmd) .OnSuccess(t => { var recalledMsg = new AVIMRecalledMessage(); AVIMMessage.CopyMetaData(message, recalledMsg); tcs.SetResult(recalledMsg); }); return(tcs.Task); }
/// <summary> /// Modifies the aysnc. /// </summary> /// <returns>The aysnc.</returns> /// <param name="oldMessage">要修改的消息对象</param> /// <param name="newMessage">新的消息对象</param> public Task <IAVIMMessage> UpdateAsync(IAVIMMessage oldMessage, IAVIMMessage newMessage) { var tcs = new TaskCompletionSource <IAVIMMessage>(); var patchCmd = new PatchCommand().Modify(oldMessage, newMessage); this.RunCommandAsync(patchCmd) .OnSuccess(t => { // 从旧消息对象中拷贝数据 AVIMMessage.CopyMetaData(oldMessage, newMessage); // 获取更新时间戳 var response = t.Result.Item2; if (response.TryGetValue("lastPatchTime", out object updatedAtObj) && long.TryParse(updatedAtObj.ToString(), out long updatedAt)) { newMessage.UpdatedAt = updatedAt; } tcs.SetResult(newMessage); }); return(tcs.Task); }