forked from Manuel/meeting-assistant
31 lines
1.2 KiB
C#
31 lines
1.2 KiB
C#
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<MeetingInactivityPromptResponse, CancellationToken, Task> 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;
|
|
}
|
|
}
|