Skip to content

Commit 4312daf

Browse files
authored
Fix: Browser StorageItem methods not working and handle conversion issue (#19708)
* Fix names in browser StorageHelpers methods import * Fix returning handlers instead of files in BrowserStorageProvider * Fix returning handles instead of storage items in Move, GetFile and GetFolder methods
1 parent 1f40464 commit 4312daf

File tree

2 files changed

+26
-18
lines changed

2 files changed

+26
-18
lines changed

src/Browser/Avalonia.Browser/Interop/StorageHelper.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,16 +56,16 @@ internal static partial class StorageHelper
5656
[JSImport("StorageProvider.createAcceptType", AvaloniaModule.StorageModuleName)]
5757
public static partial JSObject CreateAcceptType(string description, string[] mimeTypes, string[]? extensions);
5858

59-
[JSImport("StorageProvider.deleteAsync", AvaloniaModule.StorageModuleName)]
59+
[JSImport("StorageItem.deleteAsync", AvaloniaModule.StorageModuleName)]
6060
public static partial Task DeleteAsync(JSObject fileHandle);
6161

62-
[JSImport("StorageProvider.moveAsync", AvaloniaModule.StorageModuleName)]
62+
[JSImport("StorageItem.moveAsync", AvaloniaModule.StorageModuleName)]
6363
public static partial Task<JSObject?> MoveAsync(JSObject fileHandle, JSObject destinationFolder);
6464

65-
[JSImport("StorageProvider.createFile", AvaloniaModule.StorageModuleName)]
65+
[JSImport("StorageItem.createFile", AvaloniaModule.StorageModuleName)]
6666
public static partial Task<JSObject?> CreateFile(JSObject folderHandle, string name);
6767

68-
[JSImport("StorageProvider.createFolder", AvaloniaModule.StorageModuleName)]
68+
[JSImport("StorageItem.createFolder", AvaloniaModule.StorageModuleName)]
6969
public static partial Task<JSObject?> CreateFolder(JSObject folderHandle, string name);
7070

7171
[JSImport("StorageItem.getFile", AvaloniaModule.StorageModuleName)]

src/Browser/Avalonia.Browser/Storage/BrowserStorageProvider.cs

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -235,11 +235,13 @@ public Task DeleteAsync()
235235
throw new InvalidOperationException("Destination folder must be initialized the StorageProvider API.");
236236
}
237237

238-
var storageItem = await StorageHelper.MoveAsync(FileHandle, folder.FileHandle);
239-
if (storageItem is null)
238+
var itemHandle = await StorageHelper.MoveAsync(FileHandle, folder.FileHandle);
239+
if (itemHandle is null)
240240
{
241241
return null;
242242
}
243+
244+
var storageItem = StorageHelper.StorageItemFromHandle(itemHandle)!;
243245

244246
var kind = storageItem.GetPropertyAsString("kind");
245247
return kind switch
@@ -356,12 +358,13 @@ public async IAsyncEnumerable<IStorageItem> GetItemsAsync()
356358
{
357359
try
358360
{
359-
var storageFile = await StorageHelper.CreateFile(FileHandle, name);
360-
if (storageFile is null)
361+
var fileHandle = await StorageHelper.CreateFile(FileHandle, name);
362+
if (fileHandle is null)
361363
{
362364
return null;
363365
}
364-
366+
367+
var storageFile = StorageHelper.StorageItemFromHandle(fileHandle)!;
365368
return new JSStorageFile(storageFile);
366369
}
367370
catch (JSException ex) when (ex.Message == BrowserStorageProvider.NoPermissionsMessage)
@@ -374,13 +377,14 @@ public async IAsyncEnumerable<IStorageItem> GetItemsAsync()
374377
{
375378
try
376379
{
377-
var storageFile = await StorageHelper.CreateFolder(FileHandle, name);
378-
if (storageFile is null)
380+
var folderHandler = await StorageHelper.CreateFolder(FileHandle, name);
381+
if (folderHandler is null)
379382
{
380383
return null;
381384
}
382-
383-
return new JSStorageFolder(storageFile);
385+
386+
var storageFolder = StorageHelper.StorageItemFromHandle(folderHandler)!;
387+
return new JSStorageFolder(storageFolder);
384388
}
385389
catch (JSException ex) when (ex.Message == BrowserStorageProvider.NoPermissionsMessage)
386390
{
@@ -392,13 +396,15 @@ public async IAsyncEnumerable<IStorageItem> GetItemsAsync()
392396
{
393397
try
394398
{
395-
var storageFile = await StorageHelper.GetFolder(FileHandle, name);
396-
if (storageFile is null)
399+
var folderHandle = await StorageHelper.GetFolder(FileHandle, name);
400+
if (folderHandle is null)
397401
{
398402
return null;
399403
}
404+
405+
var storageFolder = StorageHelper.StorageItemFromHandle(folderHandle)!;
400406

401-
return new JSStorageFolder(storageFile);
407+
return new JSStorageFolder(storageFolder);
402408
}
403409
catch (JSException ex) when (ShouldSupressErrorOnFileAccess(ex))
404410
{
@@ -410,11 +416,13 @@ public async IAsyncEnumerable<IStorageItem> GetItemsAsync()
410416
{
411417
try
412418
{
413-
var storageFile = await StorageHelper.GetFile(FileHandle, name);
414-
if (storageFile is null)
419+
var fileHandle = await StorageHelper.GetFile(FileHandle, name);
420+
if (fileHandle is null)
415421
{
416422
return null;
417423
}
424+
425+
var storageFile = StorageHelper.StorageItemFromHandle(fileHandle)!;
418426

419427
return new JSStorageFile(storageFile);
420428
}

0 commit comments

Comments
 (0)