Example #1
0
        public override void Execute(Tag data = null)
        {
            if (data != null)
            {
                if (Manager.Settings.EnableReceipt && data is tags.jabber.client.message)
                {
                    //XEP-0184 enabled
                    var rec = data.Elements().FirstOrDefault(el => el.Name.LocalName == tags.xmpp.receipts.Namespace.received.LocalName);
                    if (rec != null)
                        Manager.Events.Receipt(this, data); //it's a receipt, not going to show as message
                    else
                    {
                        //it's not a recipt, gotta show it
                        Manager.Events.Receive(this, data);

                        //if there's receipt request, I'll send it in AckState
                        var req = data.Elements().FirstOrDefault(e => e.Name.LocalName == tags.xmpp.receipts.Namespace.request.LocalName);
                        if (req != null && req.Name.NamespaceName == tags.xmpp.receipts.Namespace.Name)
                        {
                            Manager.State = new AckState(Manager);
                            Manager.State.Execute(data);
                        }
                    }
                }
                else
                    Manager.Events.Receive(this, data); //XEP-0184 disabled
            }
        }