Files
meeting-assistant/MeetingAssistant/MeetingNotes/ObsidianMeetingNoteOpener.cs
T

35 lines
1.1 KiB
C#

using System.Diagnostics;
using Microsoft.Extensions.Options;
namespace MeetingAssistant.MeetingNotes;
public sealed class ObsidianMeetingNoteOpener : IMeetingNoteOpener
{
private readonly MeetingAssistantOptions options;
private readonly ILogger<ObsidianMeetingNoteOpener> logger;
public ObsidianMeetingNoteOpener(
IOptions<MeetingAssistantOptions> options,
ILogger<ObsidianMeetingNoteOpener> logger)
{
this.options = options.Value;
this.logger = logger;
}
public async Task OpenAsync(string notePath, CancellationToken cancellationToken)
{
if (options.Recording.OpenMeetingNoteDelay > TimeSpan.Zero)
{
await Task.Delay(options.Recording.OpenMeetingNoteDelay, cancellationToken);
}
var uri = $"obsidian://open?path={Uri.EscapeDataString(Path.GetFullPath(notePath))}";
Process.Start(new ProcessStartInfo
{
FileName = uri,
UseShellExecute = true
});
logger.LogInformation("Opened meeting note in Obsidian via {ObsidianUri}", uri);
}
}