98 lines
2.8 KiB
C#
98 lines
2.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace TeamsNetphoneLink.Communication
|
|
{
|
|
public class TeamsGraphEventHandlers
|
|
{
|
|
private readonly object _lock = new object();
|
|
private readonly List<EventHandler<PresenceChangedEventArgs>> _activityChangedHandlers = new List<EventHandler<PresenceChangedEventArgs>>();
|
|
private readonly List<EventHandler<PresenceChangedEventArgs>> _availabilityChangedHandlers = new List<EventHandler<PresenceChangedEventArgs>>();
|
|
|
|
public event EventHandler<PresenceChangedEventArgs> ActivityChanged
|
|
{
|
|
add
|
|
{
|
|
lock (_lock)
|
|
{
|
|
_activityChangedHandlers.Add(value);
|
|
}
|
|
}
|
|
remove
|
|
{
|
|
lock (_lock)
|
|
{
|
|
_activityChangedHandlers.Remove(value);
|
|
}
|
|
}
|
|
}
|
|
|
|
public event EventHandler<PresenceChangedEventArgs> AvailabilityChanged
|
|
{
|
|
add
|
|
{
|
|
lock (_lock)
|
|
{
|
|
_availabilityChangedHandlers.Add(value);
|
|
}
|
|
}
|
|
remove
|
|
{
|
|
lock (_lock)
|
|
{
|
|
_availabilityChangedHandlers.Remove(value);
|
|
}
|
|
}
|
|
}
|
|
|
|
protected void OnActivityChanged(Microsoft.Graph.Models.Presence presence)
|
|
{
|
|
lock (_lock)
|
|
{
|
|
var args = new PresenceChangedEventArgs(presence);
|
|
foreach (var handler in _activityChangedHandlers)
|
|
{
|
|
handler?.Invoke(this, args);
|
|
}
|
|
}
|
|
}
|
|
|
|
protected void OnAvailabilityChanged(Microsoft.Graph.Models.Presence presence)
|
|
{
|
|
lock (_lock)
|
|
{
|
|
var args = new PresenceChangedEventArgs(presence);
|
|
foreach (var handler in _availabilityChangedHandlers)
|
|
{
|
|
handler?.Invoke(this, args);
|
|
}
|
|
}
|
|
}
|
|
|
|
public void RemoveAllEventHandlers()
|
|
{
|
|
foreach (var handler in _activityChangedHandlers)
|
|
{
|
|
_availabilityChangedHandlers.Remove(handler);
|
|
}
|
|
foreach (var handler in _availabilityChangedHandlers)
|
|
{
|
|
_availabilityChangedHandlers.Remove(handler);
|
|
}
|
|
}
|
|
}
|
|
|
|
public class PresenceChangedEventArgs : EventArgs
|
|
{
|
|
public Microsoft.Graph.Models.Presence Presence { get; }
|
|
|
|
public PresenceChangedEventArgs(Microsoft.Graph.Models.Presence presence)
|
|
{
|
|
Presence = presence;
|
|
}
|
|
}
|
|
}
|