From bc72d46bb353ee56ee2fcd4dd5ea615385c9d621 Mon Sep 17 00:00:00 2001 From: Paul Schneider Date: Sun, 20 Sep 2026 00:21:07 +0100 Subject: [PATCH] Use AvaloniaEdit --- src/PostIt/Directory.Packages.props | 1 + src/PostIt/PostIt/App.axaml | 1 + src/PostIt/PostIt/PostIt.csproj | 1 + .../PostIt/ViewModels/Blogs/BlogsViewModel.cs | 16 ++++++++++++++-- src/PostIt/PostIt/Views/Blogs/BlogsPage.axaml | 15 +++++++++------ 5 files changed, 26 insertions(+), 8 deletions(-) diff --git a/src/PostIt/Directory.Packages.props b/src/PostIt/Directory.Packages.props index e8804a8bf..84dcde991 100644 --- a/src/PostIt/Directory.Packages.props +++ b/src/PostIt/Directory.Packages.props @@ -8,6 +8,7 @@ + diff --git a/src/PostIt/PostIt/App.axaml b/src/PostIt/PostIt/App.axaml index 85e94ebc9..b89a4aef4 100644 --- a/src/PostIt/PostIt/App.axaml +++ b/src/PostIt/PostIt/App.axaml @@ -11,5 +11,6 @@ + diff --git a/src/PostIt/PostIt/PostIt.csproj b/src/PostIt/PostIt/PostIt.csproj index a6f01cc31..3216cebb2 100644 --- a/src/PostIt/PostIt/PostIt.csproj +++ b/src/PostIt/PostIt/PostIt.csproj @@ -23,6 +23,7 @@ + diff --git a/src/PostIt/PostIt/ViewModels/Blogs/BlogsViewModel.cs b/src/PostIt/PostIt/ViewModels/Blogs/BlogsViewModel.cs index 726129f12..a1e016e7f 100644 --- a/src/PostIt/PostIt/ViewModels/Blogs/BlogsViewModel.cs +++ b/src/PostIt/PostIt/ViewModels/Blogs/BlogsViewModel.cs @@ -11,6 +11,7 @@ using Yavsc.Blogspot; using Yavsc.Api.Client; using Yavsc.Abstract.Files; using PostIt.Helpers; +using AvaloniaEdit.Document; namespace PostIt.ViewModels; @@ -36,8 +37,19 @@ public partial class BlogsViewModel : ViewModelBase, IActionStatusViewModel /// Editor buffer for the post body. Same pattern as /// . + + public string DraftArticle + { + get => DraftArticleDocument.Text; + set { + OnPropertyChanging(nameof(DraftArticle)); + DraftArticleDocument = new TextDocument(value); + this.OnPropertyChanged(nameof(DraftArticle)); + } + } + [ObservableProperty] - public partial string DraftArticle { get; set; } + public partial TextDocument DraftArticleDocument {get; set;} /// Editor buffer for the post's publication state. /// Reflects the server-side IsPublished flag (the @@ -381,6 +393,7 @@ public partial class BlogsViewModel : ViewModelBase, IActionStatusViewModel WindowTitle = "PostIt"; DraftTitle = string.Empty; DraftArticle = string.Empty; + DraftIsPublished = false; IsLoaded = false; // Production path: DI injects the canonical Settings singleton @@ -464,7 +477,6 @@ public partial class BlogsViewModel : ViewModelBase, IActionStatusViewModel // enable as soon as the user has typed a non-whitespace // title, regardless of whether a post is selected. partial void OnDraftTitleChanged(string value) => SaveCommand.NotifyCanExecuteChanged(); - partial void OnDraftArticleChanged(string value) => SaveCommand.NotifyCanExecuteChanged(); private async Task RefreshPostsAsync() diff --git a/src/PostIt/PostIt/Views/Blogs/BlogsPage.axaml b/src/PostIt/PostIt/Views/Blogs/BlogsPage.axaml index 5c5fb2564..a20f27195 100644 --- a/src/PostIt/PostIt/Views/Blogs/BlogsPage.axaml +++ b/src/PostIt/PostIt/Views/Blogs/BlogsPage.axaml @@ -4,9 +4,9 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:vm="using:PostIt.ViewModels" xmlns:postitControls="using:PostIt.Controls" + xmlns:AvaloniaEdit="clr-namespace:AvaloniaEdit;assembly=AvaloniaEdit" xmlns:models="using:Yavsc.Blogspot" xmlns:views="using:PostIt.Views.Blogs" - xmlns:AvaloniaEdit="clr-namespace:AvaloniaEdit;assembly=AvaloniaEdit" xmlns:md="using:MarkdownViewer.Core.Controls" mc:Ignorable="d" x:Class="PostIt.Views.Blogs.BlogsPage" @@ -132,11 +132,14 @@ - + + +