private async Task MucClient_PrivateMessageReceived(object Sender, RoomOccupantMessageEventArgs e) { RoomNode RoomNode = await this.GetRoomNode(e.RoomId, e.Domain); OccupantNode Occupant = RoomNode.GetOccupantNode(e.NickName, null, null, null); MainWindow.ParseChatMessage(e, out string Message, out bool IsMarkdown, out DateTime Timestamp); MainWindow.currentInstance.MucPrivateChatMessage(e.From, XmppClient.GetBareJID(e.To), Message, e.ThreadID, IsMarkdown, Timestamp, Occupant, e.From); }
private async Task MucClient_RoomSubject(object Sender, RoomOccupantMessageEventArgs e) { RoomNode RoomNode = await this.GetRoomNode(e.RoomId, e.Domain); if (!RoomNode.Entered) { return; } MainWindow.UpdateGui(() => { MainWindow.currentInstance.MucChatSubject(e.From, XmppClient.GetBareJID(e.To), RoomNode, e.Subject); }); }
private async Task MucClient_RoomOccupantMessage(object Sender, RoomOccupantMessageEventArgs e) { RoomNode RoomNode = await this.GetRoomNode(e.RoomId, e.Domain); string NickName = XmppClient.GetResource(e.From); ChatItemType Type = ChatItemType.Received; if (!string.IsNullOrEmpty(NickName) && RoomNode.NickName == NickName) { bool HasDelay = false; foreach (XmlNode N in e.Message.ChildNodes) { if (N is XmlElement E && E.LocalName == "delay") { HasDelay = true; break; } } if (!HasDelay) { return; } Type = ChatItemType.Transmitted; } RoomNode.EnterIfNotAlready(true); MainWindow.UpdateGui(() => { MainWindow.ParseChatMessage(e, out string Message, out bool IsMarkdown, out DateTime Timestamp); MainWindow.currentInstance.MucGroupChatMessage(e.From, XmppClient.GetBareJID(e.To), Message, e.ThreadID, IsMarkdown, Timestamp, Type, RoomNode, RoomNode.Header); }); }