/// <summary> /// Handle incomming messages /// </summary> /// <param name="sender"></param> /// <param name="message"></param> private void OnMessage(object sender, Message message) { Trace.WriteLine("XMPP: OnMessage: " + message.ToString()); if (!message.HasTag("event")) { return; } // Check for the activity changed data, see here: https://github.com/swissmanu/harmonyhubjs-client/blob/master/docs/protocol/startActivityFinished.md var eventElement = message.SelectSingleElement("event"); var eventData = eventElement.GetData(); if (eventData == null) { return; } foreach (var pair in eventData.Split(':')) { if (!pair.StartsWith("activityId")) { continue; } var activityId = pair.Split('=')[1]; OnActivityChanged?.Invoke(this, activityId); } }
//PropertyChanges (generally for UI) public void UpdateActivity(string activity, double progress = -1) { if (Activity != activity) { ActivityProgress = -1; Activity = activity; OnActivityChanged?.Invoke(this, activity); TriggerPropChange(nameof(Activity), nameof(IsIdle)); } if (ActivityProgress != progress) { ActivityProgress = progress; TriggerPropChange(nameof(ActivityProgress), nameof(HasActivityProgress)); } }