Browse Source

Remove unused CanOpenRead/CanOpenWrite

pull/10343/head
Max Katz 3 years ago
parent
commit
e975468e92
  1. 35
      samples/ControlCatalog/Pages/DialogsPage.xaml.cs
  2. 6
      src/Android/Avalonia.Android/Platform/Storage/AndroidStorageItem.cs
  3. 6
      src/Avalonia.Base/Platform/Storage/FileIO/BclStorageFile.cs
  4. 12
      src/Avalonia.Base/Platform/Storage/IStorageFile.cs
  5. 4
      src/Avalonia.Diagnostics/Diagnostics/Screenshots/FilePickerHandler.cs
  6. 2
      src/Browser/Avalonia.Browser/Storage/BrowserStorageProvider.cs
  7. 6
      src/iOS/Avalonia.iOS/Storage/IOSStorageItem.cs

35
samples/ControlCatalog/Pages/DialogsPage.xaml.cs

@ -223,7 +223,7 @@ namespace ControlCatalog.Pages
ShowOverwritePrompt = false ShowOverwritePrompt = false
}); });
if (file is not null && file.CanOpenWrite) if (file is not null)
{ {
// Sync disposal of StreamWriter is not supported on WASM // Sync disposal of StreamWriter is not supported on WASM
#if NET6_0_OR_GREATER #if NET6_0_OR_GREATER
@ -298,31 +298,26 @@ namespace ControlCatalog.Pages
if (item is IStorageFile file) if (item is IStorageFile file)
{ {
resultText += @$" resultText += @$"
CanOpenRead: {file.CanOpenRead}
CanOpenWrite: {file.CanOpenWrite}
Content: Content:
"; ";
if (file.CanOpenRead)
{
#if NET6_0_OR_GREATER #if NET6_0_OR_GREATER
await using var stream = await file.OpenReadAsync(); await using var stream = await file.OpenReadAsync();
#else #else
using var stream = await file.OpenReadAsync(); using var stream = await file.OpenReadAsync();
#endif #endif
using var reader = new System.IO.StreamReader(stream); using var reader = new System.IO.StreamReader(stream);
// 4GB file test, shouldn't load more than 10000 chars into a memory. // 4GB file test, shouldn't load more than 10000 chars into a memory.
const int length = 10000; const int length = 10000;
var buffer = ArrayPool<char>.Shared.Rent(length); var buffer = ArrayPool<char>.Shared.Rent(length);
try try
{ {
var charsRead = await reader.ReadAsync(buffer, 0, length); var charsRead = await reader.ReadAsync(buffer, 0, length);
resultText += new string(buffer, 0, charsRead); resultText += new string(buffer, 0, charsRead);
} }
finally finally
{ {
ArrayPool<char>.Shared.Return(buffer); ArrayPool<char>.Shared.Return(buffer);
}
} }
} }

6
src/Android/Avalonia.Android/Platform/Storage/AndroidStorageItem.cs

@ -177,11 +177,7 @@ internal sealed class AndroidStorageFile : AndroidStorageItem, IStorageBookmarkF
public AndroidStorageFile(Activity activity, AndroidUri uri) : base(activity, uri, false) public AndroidStorageFile(Activity activity, AndroidUri uri) : base(activity, uri, false)
{ {
} }
public bool CanOpenRead => true;
public bool CanOpenWrite => true;
public Task<Stream> OpenReadAsync() => Task.FromResult(OpenContentStream(Activity, Uri, false) public Task<Stream> OpenReadAsync() => Task.FromResult(OpenContentStream(Activity, Uri, false)
?? throw new InvalidOperationException("Failed to open content stream")); ?? throw new InvalidOperationException("Failed to open content stream"));

6
src/Avalonia.Base/Platform/Storage/FileIO/BclStorageFile.cs

@ -18,11 +18,7 @@ internal class BclStorageFile : IStorageBookmarkFile
} }
public FileInfo FileInfo { get; } public FileInfo FileInfo { get; }
public bool CanOpenRead => true;
public bool CanOpenWrite => true;
public string Name => FileInfo.Name; public string Name => FileInfo.Name;
public virtual bool CanBookmark => true; public virtual bool CanBookmark => true;

12
src/Avalonia.Base/Platform/Storage/IStorageFile.cs

@ -10,22 +10,12 @@ namespace Avalonia.Platform.Storage;
[NotClientImplementable] [NotClientImplementable]
public interface IStorageFile : IStorageItem public interface IStorageFile : IStorageItem
{ {
/// <summary>
/// Returns true, if file is readable.
/// </summary>
bool CanOpenRead { get; }
/// <summary> /// <summary>
/// Opens a stream for read access. /// Opens a stream for read access.
/// </summary> /// </summary>
/// <exception cref="System.UnauthorizedAccessException" /> /// <exception cref="System.UnauthorizedAccessException" />
Task<Stream> OpenReadAsync(); Task<Stream> OpenReadAsync();
/// <summary>
/// Returns true, if file is writeable.
/// </summary>
bool CanOpenWrite { get; }
/// <summary> /// <summary>
/// Opens stream for writing to the file. /// Opens stream for writing to the file.
/// </summary> /// </summary>

4
src/Avalonia.Diagnostics/Diagnostics/Screenshots/FilePickerHandler.cs

@ -68,10 +68,6 @@ namespace Avalonia.Diagnostics.Screenshots
{ {
return null; return null;
} }
if (!result.CanOpenWrite)
{
throw new InvalidOperationException("Read-only file was selected.");
}
return await result.OpenWriteAsync(); return await result.OpenWriteAsync();
} }

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

@ -216,7 +216,6 @@ internal class JSStorageFile : JSStorageItem, IStorageBookmarkFile
{ {
} }
public bool CanOpenRead => true;
public async Task<Stream> OpenReadAsync() public async Task<Stream> OpenReadAsync()
{ {
try try
@ -230,7 +229,6 @@ internal class JSStorageFile : JSStorageItem, IStorageBookmarkFile
} }
} }
public bool CanOpenWrite => true;
public async Task<Stream> OpenWriteAsync() public async Task<Stream> OpenWriteAsync()
{ {
try try

6
src/iOS/Avalonia.iOS/Storage/IOSStorageItem.cs

@ -94,11 +94,7 @@ internal sealed class IOSStorageFile : IOSStorageItem, IStorageBookmarkFile
public IOSStorageFile(NSUrl url) : base(url) public IOSStorageFile(NSUrl url) : base(url)
{ {
} }
public bool CanOpenRead => true;
public bool CanOpenWrite => true;
public Task<Stream> OpenReadAsync() public Task<Stream> OpenReadAsync()
{ {
return Task.FromResult<Stream>(new IOSSecurityScopedStream(Url, FileAccess.Read)); return Task.FromResult<Stream>(new IOSSecurityScopedStream(Url, FileAccess.Read));

Loading…
Cancel
Save