using Avalonia.Platform.Storage; using Cowain.Base.Models; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Cowain.Base.Helpers; public static class FileDialogHelper { public static IStorageProvider? Provider { get; set; } public static async Task> OpenFileDialogAsync() { var files = await OpenFileDialogAsync(new List() { FilePickerFileTypes.All }, false); if (!files.IsSuccess || files.Data is null || !files.Data.Any()) return ResultModel.Error(files.ErrorMessage); return ResultModel.Success(files.Data.First()); } public static async Task> OpenFileDialogAsync(List? fileTypes) { var files = await OpenFileDialogAsync(fileTypes, false); if (!files.IsSuccess || files.Data is null || !files.Data.Any()) return ResultModel.Error(files.ErrorMessage); return ResultModel.Success(files.Data.First()); } public static async Task>> OpenFileDialogAsync(List? fileTypes, bool multiple = false) { if (Provider is null) return ResultModel>.Error("Provider is null"); var result = await Provider.OpenFilePickerAsync(new FilePickerOpenOptions() { Title = "Open File", FileTypeFilter = fileTypes, AllowMultiple = multiple, }); if (result is null) return ResultModel>.Error("file is null"); return ResultModel>.Success(result); } public static async Task> SaveFileDialogAsync() { return await SaveFileDialogAsync(new List() { FilePickerFileTypes.All }); } public static async Task> SaveFileDialogAsync(List? fileTypes) { if (Provider is null) return ResultModel.Error("Provider is null"); var result = await Provider.SaveFilePickerAsync(new FilePickerSaveOptions() { Title = "Save File", FileTypeChoices = fileTypes, }); if (result is null) return ResultModel.Error("file is null"); return ResultModel.Success(result); } }