Browse Source

Rename TryGetFileFromPath-like method to end with Async suffix

Max Katz 2 years ago
parent
commit
e6b8914b7d

+ 3 - 3
samples/ControlCatalog/Pages/DialogsPage.xaml.cs

@@ -40,7 +40,7 @@ namespace ControlCatalog.Pages
 
                 if (Enum.TryParse<WellKnownFolder>(currentFolderBox.Text, true, out var folderEnum))
                 {
-                    lastSelectedDirectory = await GetStorageProvider().TryGetWellKnownFolder(folderEnum);
+                    lastSelectedDirectory = await GetStorageProvider().TryGetWellKnownFolderAsync(folderEnum);
                 }
                 else
                 {
@@ -51,7 +51,7 @@ namespace ControlCatalog.Pages
 
                     if (folderLink is not null)
                     {
-                        lastSelectedDirectory = await GetStorageProvider().TryGetFolderFromPath(folderLink);
+                        lastSelectedDirectory = await GetStorageProvider().TryGetFolderFromPathAsync(folderLink);
                     }
                 }
             };
@@ -148,7 +148,7 @@ namespace ControlCatalog.Pages
                 }
                 else
                 {
-                    SetFolder(await GetStorageProvider().TryGetFolderFromPath(result));
+                    SetFolder(await GetStorageProvider().TryGetFolderFromPathAsync(result));
                     results.Items = new[] { result };
                     resultsVisible.IsVisible = true;
                 }

+ 3 - 3
src/Avalonia.Base/Platform/Storage/FileIO/BclStorageProvider.cs

@@ -34,7 +34,7 @@ internal abstract class BclStorageProvider : IStorageProvider
             : Task.FromResult<IStorageBookmarkFolder?>(null);
     }
 
-    public virtual Task<IStorageFile?> TryGetFileFromPath(Uri filePath)
+    public virtual Task<IStorageFile?> TryGetFileFromPathAsync(Uri filePath)
     {
         if (filePath.IsAbsoluteUri)
         {
@@ -48,7 +48,7 @@ internal abstract class BclStorageProvider : IStorageProvider
         return Task.FromResult<IStorageFile?>(null);
     }
 
-    public virtual Task<IStorageFolder?> TryGetFolderFromPath(Uri folderPath)
+    public virtual Task<IStorageFolder?> TryGetFolderFromPathAsync(Uri folderPath)
     {
         if (folderPath.IsAbsoluteUri)
         {
@@ -62,7 +62,7 @@ internal abstract class BclStorageProvider : IStorageProvider
         return Task.FromResult<IStorageFolder?>(null);
     }
 
-    public virtual Task<IStorageFolder?> TryGetWellKnownFolder(WellKnownFolder wellKnownFolder)
+    public virtual Task<IStorageFolder?> TryGetWellKnownFolderAsync(WellKnownFolder wellKnownFolder)
     {
         // Note, this BCL API returns different values depending on the .NET version.
         // We should also document it. 

+ 3 - 3
src/Avalonia.Base/Platform/Storage/IStorageProvider.cs

@@ -66,7 +66,7 @@ public interface IStorageProvider
     /// It also might ask user for the permission, and throw an exception if it was denied.
     /// </remarks>
     /// <returns>File or null if it doesn't exist.</returns>
-    Task<IStorageFile?> TryGetFileFromPath(Uri filePath);
+    Task<IStorageFile?> TryGetFileFromPathAsync(Uri filePath);
     
     /// <summary>
     /// Attempts to read folder from the file-system by its path.
@@ -78,12 +78,12 @@ public interface IStorageProvider
     /// It also might ask user for the permission, and throw an exception if it was denied.
     /// </remarks>
     /// <returns>Folder or null if it doesn't exist.</returns>
-    Task<IStorageFolder?> TryGetFolderFromPath(Uri folderPath);
+    Task<IStorageFolder?> TryGetFolderFromPathAsync(Uri folderPath);
     
     /// <summary>
     /// Attempts to read folder from the file-system by its path
     /// </summary>
     /// <param name="wellKnownFolder">Well known folder identifier.</param>
     /// <returns>Folder or null if it doesn't exist.</returns>
-    Task<IStorageFolder?> TryGetWellKnownFolder(WellKnownFolder wellKnownFolder);
+    Task<IStorageFolder?> TryGetWellKnownFolderAsync(WellKnownFolder wellKnownFolder);
 }

+ 22 - 23
src/Avalonia.Base/Platform/Storage/StorageProviderExtensions.cs

@@ -8,48 +8,47 @@ namespace Avalonia.Platform.Storage;
 /// </summary>
 public static class StorageProviderExtensions
 {
-    /// <inheritdoc cref="IStorageProvider.TryGetFileFromPath"/>
-    public static Task<IStorageFile?> TryGetFileFromPath(this IStorageProvider provider, string filePath)
+    /// <inheritdoc cref="IStorageProvider.TryGetFileFromPathAsync"/>
+    public static Task<IStorageFile?> TryGetFileFromPathAsync(this IStorageProvider provider, string filePath)
     {
-        return provider.TryGetFileFromPath(StorageProviderHelpers.FilePathToUri(filePath));
+        return provider.TryGetFileFromPathAsync(StorageProviderHelpers.FilePathToUri(filePath));
     }
 
-    /// <inheritdoc cref="IStorageProvider.TryGetFolderFromPath"/>
-    public static Task<IStorageFolder?> TryGetFolderFromPath(this IStorageProvider provider, string folderPath)
+    /// <inheritdoc cref="IStorageProvider.TryGetFolderFromPathAsync"/>
+    public static Task<IStorageFolder?> TryGetFolderFromPathAsync(this IStorageProvider provider, string folderPath)
     {
-        return provider.TryGetFolderFromPath(StorageProviderHelpers.FilePathToUri(folderPath));
+        return provider.TryGetFolderFromPathAsync(StorageProviderHelpers.FilePathToUri(folderPath));
     }
 
-    internal static string? TryGetFullPath(this IStorageFolder folder)
+    /// <summary>
+    /// Gets the local file system path of the item as a string.
+    /// </summary>
+    /// <param name="item">Storage folder or file.</param>
+    /// <returns>Full local path to the folder or file if possible, otherwise null.</returns>
+    /// <remarks>
+    /// Android platform usually uses "content:" virtual file paths
+    /// and Browser platform has isolated access without full paths,
+    /// so on these platforms this method will return null.
+    /// </remarks>
+    public static string? TryGetLocalPath(this IStorageItem item)
     {
         // We can avoid double escaping of the path by checking for BclStorageFolder.
         // Ideally, `folder.Path.LocalPath` should also work, as that's only available way for the users.
-        if (folder is BclStorageFolder storageFolder)
+        if (item is BclStorageFolder storageFolder)
         {
             return storageFolder.DirectoryInfo.FullName;
         }
-
-        if (folder.Path is { IsAbsoluteUri: true, Scheme: "file" } absolutePath)
-        {
-            return absolutePath.LocalPath;
-        }
-
-        // android "content:", browser and ios relative links go here. 
-        return null;
-    }
-    
-    internal static string? TryGetFullPath(this IStorageFile file)
-    {
-        if (file is BclStorageFile storageFolder)
+        if (item is BclStorageFile storageFile)
         {
-            return storageFolder.FileInfo.FullName;
+            return storageFile.FileInfo.FullName;
         }
 
-        if (file.Path is { IsAbsoluteUri: true, Scheme: "file" } absolutePath)
+        if (item.Path is { IsAbsoluteUri: true, Scheme: "file" } absolutePath)
         {
             return absolutePath.LocalPath;
         }
 
+        // android "content:", browser and ios relative links go here. 
         return null;
     }
 }

+ 3 - 3
src/Avalonia.Controls/Platform/Dialogs/SystemDialogImpl.cs

@@ -27,7 +27,7 @@ namespace Avalonia.Controls.Platform
 
                 var files = await filePicker.OpenFilePickerAsync(options);
                 return files
-                    .Select(file => file.TryGetFullPath() ?? file.Name)
+                    .Select(file => file.TryGetLocalPath() ?? file.Name)
                     .ToArray();
             }
             else if (dialog is SaveFileDialog saveDialog)
@@ -46,7 +46,7 @@ namespace Avalonia.Controls.Platform
                     return null;
                 }
 
-                var filePath = file.TryGetFullPath() ?? file.Name;
+                var filePath = file.TryGetLocalPath() ?? file.Name;
                 return new[] { filePath };
             }
             return null;
@@ -64,7 +64,7 @@ namespace Avalonia.Controls.Platform
 
             var folders = await filePicker.OpenFolderPickerAsync(options);
             return folders
-                .Select(folder => folder.TryGetFullPath() ?? folder.Name)
+                .Select(folder => folder.TryGetLocalPath() ?? folder.Name)
                 .FirstOrDefault(u => u is not null);
         }
     }

+ 2 - 2
src/Avalonia.Diagnostics/Diagnostics/Screenshots/FilePickerHandler.cs

@@ -54,8 +54,8 @@ namespace Avalonia.Diagnostics.Screenshots
         protected override async Task<Stream?> GetStream(Control control)
         {
             var storageProvider = GetTopLevel(control).StorageProvider;
-            var defaultFolder = await storageProvider.TryGetFolderFromPath(_screenshotRoot)
-                                ?? await storageProvider.TryGetWellKnownFolder(WellKnownFolder.Pictures);
+            var defaultFolder = await storageProvider.TryGetFolderFromPathAsync(_screenshotRoot)
+                                ?? await storageProvider.TryGetWellKnownFolderAsync(WellKnownFolder.Pictures);
 
             var result = await storageProvider.SaveFilePickerAsync(new FilePickerSaveOptions
             {

+ 1 - 1
src/Avalonia.Dialogs/Internal/ManagedFileChooserViewModel.cs

@@ -260,7 +260,7 @@ namespace Avalonia.Dialogs.Internal
 
         public void Navigate(IStorageFolder path, string initialSelectionName = null)
         {
-            var fullDirectoryPath = path?.TryGetFullPath() ?? Directory.GetCurrentDirectory();
+            var fullDirectoryPath = path?.TryGetLocalPath() ?? Directory.GetCurrentDirectory();
             
             Navigate(fullDirectoryPath, initialSelectionName);
         }

+ 1 - 1
src/Avalonia.Dialogs/ManagedFileDialogExtensions.cs

@@ -51,7 +51,7 @@ namespace Avalonia.Dialogs
 
             var files = await impl.OpenFilePickerAsync(dialog.ToFilePickerOpenOptions());
             return files
-                .Select(file => file.TryGetFullPath() ?? file.Name)
+                .Select(file => file.TryGetLocalPath() ?? file.Name)
                 .ToArray();
         }
     }

+ 1 - 1
src/Avalonia.FreeDesktop/DBusSystemDialog.cs

@@ -88,7 +88,7 @@ namespace Avalonia.FreeDesktop
 
             if (options.SuggestedFileName is { } currentName)
                 chooserOptions.Add("current_name", currentName);
-            if (options.SuggestedStartLocation?.TryGetFullPath() is { } folderPath)
+            if (options.SuggestedStartLocation?.TryGetLocalPath() is { } folderPath)
                 chooserOptions.Add("current_folder", Encoding.UTF8.GetBytes(folderPath));
             objectPath = await _fileChooser.SaveFileAsync(parentWindow, options.Title ?? string.Empty, chooserOptions);
 

+ 3 - 3
src/Avalonia.Native/SystemDialogs.cs

@@ -33,7 +33,7 @@ namespace Avalonia.Native
         {
             using var events = new SystemDialogEvents();
 
-            var suggestedDirectory = options.SuggestedStartLocation?.TryGetFullPath() ?? string.Empty;
+            var suggestedDirectory = options.SuggestedStartLocation?.TryGetLocalPath() ?? string.Empty;
 
             _native.OpenFileDialog((IAvnWindow)_window.Native,
                                     events,
@@ -53,7 +53,7 @@ namespace Avalonia.Native
         {
             using var events = new SystemDialogEvents();
 
-            var suggestedDirectory = options.SuggestedStartLocation?.TryGetFullPath() ?? string.Empty;
+            var suggestedDirectory = options.SuggestedStartLocation?.TryGetLocalPath() ?? string.Empty;
 
             _native.SaveFileDialog((IAvnWindow)_window.Native,
                         events,
@@ -72,7 +72,7 @@ namespace Avalonia.Native
         {
             using var events = new SystemDialogEvents();
 
-            var suggestedDirectory = options.SuggestedStartLocation?.TryGetFullPath() ?? string.Empty;
+            var suggestedDirectory = options.SuggestedStartLocation?.TryGetLocalPath() ?? string.Empty;
 
             _native.SelectFolderDialog((IAvnWindow)_window.Native, events, options.AllowMultiple.AsComBool(), options.Title ?? "", suggestedDirectory);
 

+ 6 - 6
src/Avalonia.X11/NativeDialogs/CompositeStorageProvider.cs

@@ -62,21 +62,21 @@ internal class CompositeStorageProvider : IStorageProvider
         return await provider.OpenFolderBookmarkAsync(bookmark).ConfigureAwait(false);
     }
 
-    public async Task<IStorageFile?> TryGetFileFromPath(Uri filePath)
+    public async Task<IStorageFile?> TryGetFileFromPathAsync(Uri filePath)
     {
         var provider = await EnsureStorageProvider().ConfigureAwait(false);
-        return await provider.TryGetFileFromPath(filePath).ConfigureAwait(false);
+        return await provider.TryGetFileFromPathAsync(filePath).ConfigureAwait(false);
     }
 
-    public async Task<IStorageFolder?> TryGetFolderFromPath(Uri folderPath)
+    public async Task<IStorageFolder?> TryGetFolderFromPathAsync(Uri folderPath)
     {
         var provider = await EnsureStorageProvider().ConfigureAwait(false);
-        return await provider.TryGetFolderFromPath(folderPath).ConfigureAwait(false);
+        return await provider.TryGetFolderFromPathAsync(folderPath).ConfigureAwait(false);
     }
 
-    public async Task<IStorageFolder?> TryGetWellKnownFolder(WellKnownFolder wellKnownFolder)
+    public async Task<IStorageFolder?> TryGetWellKnownFolderAsync(WellKnownFolder wellKnownFolder)
     {
         var provider = await EnsureStorageProvider().ConfigureAwait(false);
-        return await provider.TryGetWellKnownFolder(wellKnownFolder).ConfigureAwait(false);
+        return await provider.TryGetWellKnownFolderAsync(wellKnownFolder).ConfigureAwait(false);
     }
 }

+ 1 - 1
src/Avalonia.X11/NativeDialogs/GtkNativeFileDialogs.cs

@@ -196,7 +196,7 @@ namespace Avalonia.X11.NativeDialogs
                 gtk_dialog_add_button(dlg, open, GtkResponseType.Cancel);
             }
 
-            var folderLocalPath = initialFolder?.TryGetFullPath();
+            var folderLocalPath = initialFolder?.TryGetLocalPath();
             if (folderLocalPath is not null)
             {
                 using var dir = new Utf8Buffer(folderLocalPath);

+ 1 - 1
src/Windows/Avalonia.Win32/Win32StorageProvider.cs

@@ -131,7 +131,7 @@ namespace Avalonia.Win32
                         }
                     }
 
-                    if (folder?.TryGetFullPath() is { } folderPath)
+                    if (folder?.TryGetLocalPath() is { } folderPath)
                     {
                         var riid = UnmanagedMethods.ShellIds.IShellItem;
                         if (UnmanagedMethods.SHCreateItemFromParsingName(folderPath, IntPtr.Zero, ref riid, out var directoryShellItem)