using MeetingAssistant.Notifications; using MeetingAssistant.Recording; namespace MeetingAssistant.MacOs; public sealed class MacOsMeetingInactivityPromptService(DesktopUserRequestStore requests) : IMeetingInactivityPromptService { private const string Kind = "meeting-inactivity"; public Task ShowStopPromptAsync(MeetingInactivityPromptRequest request, Func handleResponseAsync, CancellationToken cancellationToken) { requests.Add(new DesktopUserRequestSpec( Kind, "Stop meeting?", $"No transcript text has arrived for {request.InactivityDuration.TotalMinutes:0.#} minutes.", TimeSpan.FromMinutes(1), [new("stop", "Stop"), new("continue", "Continue"), new("pause", "Pause transcription")]), cancellationToken, (action, token) => handleResponseAsync(MeetingInactivityPromptActions.ParseResponse(action), token)); return Task.CompletedTask; } public Task DismissAllAsync(CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); requests.DismissKind(Kind); return Task.CompletedTask; } }