using System.Threading.Tasks;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.ApplicationLifetimes;
using ReactiveUI;
namespace DesertPaintCodex.Util
{
public static class DialogUtil
{
public static async Task ShowDialog<View, ViewModel, ReturnType>(
InteractionContext<ViewModel, ReturnType> interaction) where View : Window, new()
{
if (Application.Current.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
{
View dialog = new() {DataContext = interaction.Input};
ReturnType result = await dialog.ShowDialog<ReturnType>(desktop.MainWindow);
interaction.SetOutput(result);
}
}
}
}