using System; using AsyncAwaitBestPractices; using Avalonia.Controls; using StabilityMatrix.Avalonia.Controls; using StabilityMatrix.Avalonia.Models; using StabilityMatrix.Core.Attributes; using StabilityMatrix.Core.Services; namespace StabilityMatrix.Avalonia.Views; [Singleton] public partial class OpenArtBrowserPage : UserControlBase { private readonly ISettingsManager settingsManager; public OpenArtBrowserPage(ISettingsManager settingsManager) { this.settingsManager = settingsManager; InitializeComponent(); } private void ScrollViewer_OnScrollChanged(object? sender, ScrollChangedEventArgs e) { if (sender is not ScrollViewer scrollViewer) return; if (scrollViewer.Offset.Y == 0) return; var isAtEnd = Math.Abs(scrollViewer.Offset.Y - scrollViewer.ScrollBarMaximum.Y) < 1f; if ( isAtEnd && settingsManager.Settings.IsWorkflowInfiniteScrollEnabled && DataContext is IInfinitelyScroll scroll ) { scroll.LoadNextPageAsync().SafeFireAndForget(); } } }