fix: Add method by which to clear MeetingInfo xSig when there are no bookings

This commit is contained in:
Trevor Payne
2022-09-28 00:46:05 -05:00
parent 526cd13298
commit def3d35fb5
2 changed files with 55 additions and 20 deletions

View File

@@ -37,6 +37,9 @@ namespace PepperDash.Essentials.Devices.Common.Codec
private int _meetingWarningMinutes = 5;
private bool _nullMeeting { get; set; }
private Meeting _previousChangedMeeting;
private eMeetingEventChangeType _previousChangeType = eMeetingEventChangeType.Unknown;
@@ -91,6 +94,23 @@ namespace PepperDash.Essentials.Devices.Common.Codec
/// <param name="meeting"></param>
private void OnMeetingChange(eMeetingEventChangeType changeType, Meeting meeting)
{
if (meeting == null)
{
var message = _nullMeeting
? "*****************OnMeetingChange No meetings to update*****************"
: "*****************OnMeetingChange No meetings present. Clearing List*****************";
Debug.Console(2, message);
if (_nullMeeting) return;
_nullMeeting = true;
var handler = MeetingEventChange;
if (handler != null)
{
handler(this, new MeetingEventArgs() { ChangeType = eMeetingEventChangeType.Unknown, Meeting = null });
}
return;
}
_nullMeeting = false;
Debug.Console(2, "*****************OnMeetingChange. id: {0} changeType: {1}**********************", meeting.Id, changeType);
if (changeType != (changeType & meeting.NotifiedChangeTypes))
{
@@ -119,6 +139,11 @@ namespace PepperDash.Essentials.Devices.Common.Codec
// Iterate the meeting list and check if any meeting need to do anything
const double meetingTimeEpsilon = 0.05;
if (Meetings.Count < 1)
{
OnMeetingChange(eMeetingEventChangeType.Unknown, null);
return;
}
foreach (var m in Meetings)
{
var changeType = eMeetingEventChangeType.Unknown;

View File

@@ -831,6 +831,10 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
codec.CodecSchedule.MeetingsListHasChanged += (sender, args) => UpdateMeetingsList(codec, trilist, joinMap);
codec.CodecSchedule.MeetingEventChange += (sender, args) =>
{
if (args.Meeting == null)
{
UpdateMeetingsList(codec, trilist, joinMap);
}
if (args.ChangeType == eMeetingEventChangeType.MeetingStartWarning)
{
UpdateMeetingsList(codec, trilist, joinMap);
@@ -909,6 +913,12 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
var stringIndex = 0;
var meetingIndex = 0;
if (meetings.Count == 0)
{
var clearBytes = XSigHelpers.ClearOutputs();
return Encoding.GetEncoding(XSigEncoding).GetString(clearBytes, 0, clearBytes.Length);
}
var tokenArray = new XSigToken[_meetingsToDisplay * offset];
/*
* Digitals
@@ -1290,28 +1300,28 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
};
var joinCodec = this as IJoinCalls;
if (joinCodec != null)
{
trilist.SetSigFalseAction(joinMap.JoinAllCalls.JoinNumber, () => joinCodec.JoinAllCalls());
if (joinCodec != null)
{
trilist.SetSigFalseAction(joinMap.JoinAllCalls.JoinNumber, () => joinCodec.JoinAllCalls());
for (int i = 0; i < joinMap.JoinCallStart.JoinSpan; i++)
{
trilist.SetSigFalseAction((uint)(joinMap.JoinCallStart.JoinNumber + i), () =>
{
var call = ActiveCalls[i];
if (call != null)
{
joinCodec.JoinCall(call);
}
else
{
Debug.Console(0, this, "[Join Call] Unable to find call at index '{0}'", i);
}
});
}
}
for (int i = 0; i < joinMap.JoinCallStart.JoinSpan; i++)
{
trilist.SetSigFalseAction((uint) (joinMap.JoinCallStart.JoinNumber + i), () =>
{
var call = ActiveCalls[i];
if (call != null)
{
joinCodec.JoinCall(call);
}
else
{
Debug.Console(0, this, "[Join Call] Unable to find call at index '{0}'", i);
}
});
}
}
var holdCodec = this as IHasCallHold;
var holdCodec = this as IHasCallHold;
if (holdCodec != null)
{
trilist.SetSigFalseAction(joinMap.HoldAllCalls.JoinNumber, () =>