internal void UpdatePresence(XmppJid jid, Presence presence) { lock (syncObject) { XmppContactResource resource = resources .Where(contactResource => contactResource.ResourceId.Equals(jid)) .SingleOrDefault(); if (resource == null) { resource = new XmppContactResource(session, this, jid); resources.Add(resource); } resource.Update(presence); // Remove the resource information if the contact has gone offline if (!resource.IsDefaultResource && resource.Presence.PresenceStatus == XmppPresenceState.Offline) { resources.Remove(resource); } //NotifyPropertyChanged(() => Presence); //NotifyPropertyChanged(() => Resource); } }
internal void AddDefaultResource() { var defaultPresence = new Presence(); var contactResource = new XmppContactResource(session, this, ContactId); var resourceJid = new XmppJid(contactId.UserName, ContactId.DomainName, Guid.NewGuid().ToString()); // Add a default resource defaultPresence.TypeSpecified = true; defaultPresence.From = resourceJid; defaultPresence.Type = PresenceType.Unavailable; defaultPresence.Items.Add(XmppContactResource.DefaultPresencePriorityValue); contactResource.Update(defaultPresence); resources.Add(contactResource); }