예제 #1
0
        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);
        }
예제 #2
0
        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);
            });
        }
예제 #3
0
        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);
            });
        }