NoteMAUI/NoteContent/NoteLinkManager.cs

48 lines
1.7 KiB
C#

using System.Text.RegularExpressions;
using Microsoft.Maui.Controls;
namespace NotesDataAnalyst.NoteContent
{
public static class NoteLinkManager
{
private static readonly Regex LinkPattern = new(@"<a href=""note:(.*?)"">(.*?)</a>", RegexOptions.Compiled);
// Метод для вставки HTML-ссылки на заметку
public static string InsertLink(string currentText, Note selectedNote)
{
string linkText = $"<a href=\"note:{selectedNote.Id}\">{selectedNote.Title}</a>";
return currentText + " " + linkText;
}
// Метод для извлечения ссылок в HTML
public static List<(string Id, string Title)> ParseLinks(string html)
{
var links = new List<(string Id, string Title)>();
var matches = LinkPattern.Matches(html);
foreach (Match match in matches)
{
string id = match.Groups[1].Value;
string title = match.Groups[2].Value;
links.Add((id, title));
}
return links;
}
// Реализуем метод NavigateToNoteByIdAsync для перехода к заметке по Id
public static async Task NavigateToNoteByIdAsync(string noteId, INavigation navigation)
{
var note = App.Database.GetAllNotes().FirstOrDefault(n => n.Id == noteId);
if (note != null)
{
await navigation.PushAsync(new NoteDetailPage(note));
}
else
{
await Application.Current.MainPage.DisplayAlert("Ошибка", "Заметка не найдена", "OK");
}
}
}
}