Lumi/companion/plugins/Lumi.Companion.SongOverlay/Providers/IMediaProvider.cs
2026-07-24 14:44:27 +02:00

25 lines
773 B
C#

namespace Lumi.Companion.SongOverlay.Providers;
internal interface IMediaProvider : IAsyncDisposable
{
string Id { get; }
string DisplayName { get; }
event EventHandler<ProviderStateChangedEventArgs>? StateChanged;
event EventHandler<string>? AvailabilityChanged;
Task StartAsync(CancellationToken cancellationToken);
Task StopAsync(CancellationToken cancellationToken);
Task<MediaSnapshot?> GetSnapshotAsync(CancellationToken cancellationToken);
}
internal sealed class ProviderStateChangedEventArgs : EventArgs
{
public ProviderStateChangedEventArgs(string reason, MediaSnapshot? snapshot)
{
Reason = reason;
Snapshot = snapshot;
}
public string Reason { get; }
public MediaSnapshot? Snapshot { get; }
}