Files
AX-Copilot-Codex/.decompiledproj/AxCopilot/Services/SessionTrackingService.cs

53 lines
1001 B
C#

using System;
using Microsoft.Win32;
namespace AxCopilot.Services;
public sealed class SessionTrackingService : IDisposable
{
private DateTime? _unlockTime;
private bool _disposed;
public SessionTrackingService()
{
_unlockTime = DateTime.Now;
SystemEvents.SessionSwitch += OnSessionSwitch;
}
private void OnSessionSwitch(object sender, SessionSwitchEventArgs e)
{
if (e.Reason == SessionSwitchReason.SessionLock)
{
FlushActiveTime();
}
else if (e.Reason == SessionSwitchReason.SessionUnlock || e.Reason == SessionSwitchReason.SessionLogon)
{
_unlockTime = DateTime.Now;
}
}
private void FlushActiveTime()
{
if (_unlockTime.HasValue)
{
int num = (int)(DateTime.Now - _unlockTime.Value).TotalSeconds;
if (num > 0)
{
UsageStatisticsService.AddActiveSeconds(num);
}
_unlockTime = null;
}
}
public void Dispose()
{
if (!_disposed)
{
_disposed = true;
FlushActiveTime();
SystemEvents.SessionSwitch -= OnSessionSwitch;
}
}
}