Public Access
35 lines
1.1 KiB
C#
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);
|
|
}
|
|
}
|