diff --git a/CHANGELOG.md b/CHANGELOG.md
index bb078c37c..68f0bc6b9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -20,16 +20,6 @@
* L'administration est maintenant restreinte aux emails configurés dans les paramétres applicatifs de Yavsc.Org (`appsettings-org.json`)
-### Fixed
-
-* [PostIt] Correction du rendu des images incorporées dans les billets :
- le résolveur fournit désormais un flux mémoire repositionnable, à son
- début, pour éviter l'échec du décodage des images issues d'un flux HTTP.
-* [PostIt] Suppression des erreurs de binding au démarrage du lecteur
- lorsqu'aucun billet n'est sélectionné ; la commande des liens est
- raccordée lors du changement de contexte. Les échecs HTTP des images
- sont désormais journalisés avec leur URL dans la catégorie `BlogImages`.
-
## [1.0.8-rc25] - unstable
### Added
diff --git a/contrib/blog-edit.png b/contrib/blog-edit.png
new file mode 100644
index 000000000..4175f5153
Binary files /dev/null and b/contrib/blog-edit.png differ
diff --git a/contrib/blog-view.png b/contrib/blog-view.png
new file mode 100644
index 000000000..04625dbc9
Binary files /dev/null and b/contrib/blog-view.png differ
diff --git a/src/PostIt/PostIt.Desktop/PostIt.Desktop.csproj b/src/PostIt/PostIt.Desktop/PostIt.Desktop.csproj
index 46df5025f..1d429de95 100644
--- a/src/PostIt/PostIt.Desktop/PostIt.Desktop.csproj
+++ b/src/PostIt/PostIt.Desktop/PostIt.Desktop.csproj
@@ -24,4 +24,4 @@
-
\ No newline at end of file
+
diff --git a/src/PostIt/PostIt.Tests/BlogReaderTests.cs b/src/PostIt/PostIt.Tests/BlogReaderTests.cs
index d80557895..b56e88ccf 100644
--- a/src/PostIt/PostIt.Tests/BlogReaderTests.cs
+++ b/src/PostIt/PostIt.Tests/BlogReaderTests.cs
@@ -130,7 +130,8 @@ public class BlogReaderTests
var page = new BlogsPage();
var reader = page.FindControl("ArticleReader")!;
var engine = Assert.IsAssignableFrom(reader.Engine);
- Assert.Null(engine.HyperlinkCommand);
+ Assert.NotNull(engine.HyperlinkCommand);
+ Assert.False(engine.HyperlinkCommand.CanExecute("https://example.test/"));
page.DataContext = vm;
var nav = new NavigationPage();
await nav.PushAsync(page);
@@ -152,7 +153,8 @@ public class BlogReaderTests
Dispatcher.UIThread.RunJobs();
Assert.Empty(vm.ReaderTitle);
Assert.Null(vm.ReaderDateModified);
- Assert.Null(engine.HyperlinkCommand);
+ Assert.NotNull(engine.HyperlinkCommand);
+ Assert.False(engine.HyperlinkCommand.CanExecute("https://example.test/"));
Assert.DoesNotContain(sink.Entries, entry => entry.Area == LogArea.Binding);
}
finally
diff --git a/src/PostIt/PostIt/Views/Blogs/BlogsPage.axaml.cs b/src/PostIt/PostIt/Views/Blogs/BlogsPage.axaml.cs
index aebaa35f7..fec5da5bf 100644
--- a/src/PostIt/PostIt/Views/Blogs/BlogsPage.axaml.cs
+++ b/src/PostIt/PostIt/Views/Blogs/BlogsPage.axaml.cs
@@ -4,20 +4,32 @@ using Avalonia.Controls;
using Avalonia.Platform.Storage;
using Avalonia.Controls.Primitives;
using Avalonia.Interactivity;
+using CommunityToolkit.Mvvm.Input;
using Markdown.Avalonia;
namespace PostIt.Views.Blogs;
public partial class BlogsPage : ContentPage
{
+ private static readonly RelayCommand DisabledLinkCommand =
+ new(static _ => { }, static _ => false);
+
public BlogsPage()
{
InitializeComponent();
- DataContextChanged += (_, _) =>
+ DataContextChanged += (_, _) => UpdateHyperlinkCommand();
+ UpdateHyperlinkCommand();
+ }
+
+ private void UpdateHyperlinkCommand()
+ {
+ if (ArticleReader.Engine is IMarkdownEngine2 engine)
{
- if (ArticleReader.Engine is IMarkdownEngine2 engine)
- engine.HyperlinkCommand = (DataContext as ViewModels.BlogsViewModel)?.OpenResourceCommand;
- };
+ if (DataContext is ViewModels.BlogsViewModel vm)
+ engine.HyperlinkCommand = vm.OpenResourceCommand;
+ else
+ engine.HyperlinkCommand = DisabledLinkCommand;
+ }
}
protected override async void OnApplyTemplate(TemplateAppliedEventArgs e)