Smuxi.Engine.XmppProtocolManager.OnPresence C# (CSharp) Method

OnPresence() private method

private OnPresence ( object sender, Presence pres ) : void
sender object
pres agsXMPP.protocol.client.Presence
return void
        void OnPresence(object sender, Presence pres)
        {
            Trace.Call(sender, pres);

            Jid jid = pres.From;
            if (jid == JabberClient.MyJID) return; // we don't care about ourself
            if (pres.Capabilities != null && pres.Type == PresenceType.available) {
                // only test capabilities of users going online or changing something in their online state
                RequestCapabilities(jid, pres.Capabilities);
            }

            if (pres.MucUser != null || pres.Muc != null) {
                var groupChat = (XmppGroupChatModel) Session.GetChat(jid.Bare, ChatType.Group, this);
                if (groupChat == null) {
                    var builder = CreateMessageBuilder();
                    builder.AppendEventPrefix();
                    builder.AppendErrorText(_("Received a presence update from {0}, but there's no corresponding chat window"), pres.From.Bare);
                    Session.AddMessageToChat(NetworkChat, builder.ToMessage());
                    if (pres.Type == PresenceType.error) {
                        var msg = CreateGroupChatPresenceErrorMessage(pres);
                        Session.AddMessageToChat(NetworkChat, msg);
                    } else {
                        MucManager.LeaveRoom(jid.Bare, jid.Resource);
                    }
                } else {
                    OnGroupChatPresence(groupChat, pres);
                }
            } else {
                OnPrivateChatPresence(pres);
            }
        }