From 2d2fcf94acb23678d5d087e4e2d647e22c6f5f78 Mon Sep 17 00:00:00 2001 From: Emmanuel Hansen Date: Thu, 9 Mar 2023 13:06:38 +0000 Subject: [PATCH] add async suffix --- .../Platform/Storage/AndroidStorageItem.cs | 33 +++++++++++-------- .../Storage/FileIO/BclStorageFolder.cs | 4 +-- .../Platform/Storage/IStorageFolder.cs | 4 +-- 3 files changed, 24 insertions(+), 17 deletions(-) diff --git a/src/Android/Avalonia.Android/Platform/Storage/AndroidStorageItem.cs b/src/Android/Avalonia.Android/Platform/Storage/AndroidStorageItem.cs index 2dc0fa774b..f0c22d7f38 100644 --- a/src/Android/Avalonia.Android/Platform/Storage/AndroidStorageItem.cs +++ b/src/Android/Avalonia.Android/Platform/Storage/AndroidStorageItem.cs @@ -172,7 +172,7 @@ internal class AndroidStorageFolder : AndroidStorageItem, IStorageBookmarkFolder { } - public async Task CreateFile(string name) + public async Task CreateFileAsync(string name) { var mimeType = MimeTypeMap.Singleton?.GetMimeTypeFromExtension(MimeTypeMap.GetFileExtensionFromUrl(name)) ?? "application/octet-stream"; var newFile = Document.CreateFile(mimeType, name); @@ -185,7 +185,7 @@ internal class AndroidStorageFolder : AndroidStorageItem, IStorageBookmarkFolder return new AndroidStorageFile(Activity, newFile.Uri, this); } - public async Task CreateFolder(string name) + public async Task CreateFolderAsync(string name) { var newFolder = Document?.CreateDirectory(name); @@ -211,7 +211,7 @@ internal class AndroidStorageFolder : AndroidStorageItem, IStorageBookmarkFolder async Task DeleteContents(AndroidStorageFolder storageFolder) { - foreach (var file in storageFolder.GetItemsAsync()) + await foreach (var file in storageFolder.GetItemsAsync()) { if(file is AndroidStorageFolder folder) { @@ -288,14 +288,14 @@ internal class AndroidStorageFolder : AndroidStorageItem, IStorageBookmarkFolder async Task MoveRecursively(AndroidStorageFolder storageFolder, AndroidStorageFolder destination) { - destination = await destination.CreateFolder(storageFolder.Name) as AndroidStorageFolder; + destination = await destination.CreateFolderAsync(storageFolder.Name) as AndroidStorageFolder; if (destination == null) { return null; } - foreach (var file in storageFolder.GetItemsAsync()) + await foreach (var file in storageFolder.GetItemsAsync()) { if (file is AndroidStorageFolder folder) { @@ -498,20 +498,27 @@ internal sealed class AndroidStorageFile : AndroidStorageItem, IStorageBookmarkF } } - async Task MoveFileByCopy() + async Task MoveFileByCopy() { - var newFile = await storageFolder.CreateFile(Name) as AndroidStorageFile; + var newFile = await storageFolder.CreateFileAsync(Name) as AndroidStorageFile; - if (newFile != null) + try { - using var input = await OpenReadAsync(); - using var output = await newFile.OpenWriteAsync(); + if (newFile != null) + { + using var input = await OpenReadAsync(); + using var output = await newFile.OpenWriteAsync(); - await input.CopyToAsync(output); + await input.CopyToAsync(output); - await DeleteAsync(); + await DeleteAsync(); - return new AndroidStorageFile(Activity, newFile.Uri, storageFolder); + return new AndroidStorageFile(Activity, newFile.Uri, storageFolder); + } + } + catch + { + newFile?.DeleteAsync(); } return null; diff --git a/src/Avalonia.Base/Platform/Storage/FileIO/BclStorageFolder.cs b/src/Avalonia.Base/Platform/Storage/FileIO/BclStorageFolder.cs index b9e74104c8..8c657fb787 100644 --- a/src/Avalonia.Base/Platform/Storage/FileIO/BclStorageFolder.cs +++ b/src/Avalonia.Base/Platform/Storage/FileIO/BclStorageFolder.cs @@ -113,7 +113,7 @@ internal class BclStorageFolder : IStorageBookmarkFolder return null; } - public async Task CreateFile(string name) + public async Task CreateFileAsync(string name) { var fileName = System.IO.Path.Combine(DirectoryInfo.FullName, name); var newFile = new FileInfo(fileName); @@ -123,7 +123,7 @@ internal class BclStorageFolder : IStorageBookmarkFolder return new BclStorageFile(newFile); } - public async Task CreateFolder(string name) + public async Task CreateFolderAsync(string name) { var newFolder = DirectoryInfo.CreateSubdirectory(name); diff --git a/src/Avalonia.Base/Platform/Storage/IStorageFolder.cs b/src/Avalonia.Base/Platform/Storage/IStorageFolder.cs index 61feeba79a..a9d1ff3669 100644 --- a/src/Avalonia.Base/Platform/Storage/IStorageFolder.cs +++ b/src/Avalonia.Base/Platform/Storage/IStorageFolder.cs @@ -23,12 +23,12 @@ public interface IStorageFolder : IStorageItem /// /// The display name /// A new pointing to the moved file. If not null, the current storage item becomes invalid - Task CreateFile(string name); + Task CreateFileAsync(string name); /// /// Creates a folder with specified name as a child of the current storage folder /// /// The display name /// A new pointing to the moved file. If not null, the current storage item becomes invalid - Task CreateFolder(string name); + Task CreateFolderAsync(string name); }