-
Notifications
You must be signed in to change notification settings - Fork 1.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Essentials.FileSystem refactored to interface and singleton #4633
Essentials.FileSystem refactored to interface and singleton #4633
Conversation
/azp run |
Azure Pipelines successfully started running 2 pipeline(s). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There are some build errors here:
/Users/builder/azdo/_work/2/s/src/Essentials/src/FileSystem/FileSystem.ios.cs(83,34): error CS0506: 'BookmarkDataFileResult.OpenReadAsync()': cannot override inherited member 'FileBase.OpenReadAsync()' because it is not marked virtual, abstract, or override [/Users/builder/azdo/_work/2/s/src/Essentials/src/Essentials.csproj]
/Users/builder/azdo/_work/2/s/src/Essentials/src/FileSystem/FileSystem.ios.cs(172,34): error CS0506: 'UIDocumentFileResult.OpenReadAsync()': cannot override inherited member 'FileBase.OpenReadAsync()' because it is not marked virtual, abstract, or override [/Users/builder/azdo/_work/2/s/src/Essentials/src/Essentials.csproj]
/Users/builder/azdo/_work/2/s/src/Essentials/src/FileSystem/FileSystem.ios.cs(194,34): error CS0506: 'UIImageFileResult.OpenReadAsync()': cannot override inherited member 'FileBase.OpenReadAsync()' because it is not marked virtual, abstract, or override [/Users/builder/azdo/_work/2/s/src/Essentials/src/Essentials.csproj]
/Users/builder/azdo/_work/2/s/src/Essentials/src/FileSystem/FileSystem.ios.cs(215,34): error CS0506: 'PHAssetFileResult.OpenReadAsync()': cannot override inherited member 'FileBase.OpenReadAsync()' because it is not marked virtual, abstract, or override [/Users/builder/azdo/_work/2/s/src/Essentials/src/Essentials.csproj]
/Users/builder/azdo/_work/2/s/src/Essentials/src/FileSystem/FileSystem.shared.cs(145,4): error CS0103: The name 'Init' does not exist in the current context [/Users/builder/azdo/_work/2/s/src/Essentials/src/Essentials.csproj]
/Users/builder/azdo/_work/2/s/src/Essentials/src/FileSystem/FileSystem.shared.cs(175,19): error CS1501: No overload for method 'GetContentType' takes 1 arguments [/Users/builder/azdo/_work/2/s/src/Essentials/src/Essentials.csproj]
/Users/builder/azdo/_work/2/s/src/Essentials/src/FileSystem/FileSystem.shared.cs(208,7): error CS0103: The name 'Current' does not exist in the current context [/Users/builder/azdo/_work/2/s/src/Essentials/src/Essentials.csproj]
/Users/builder/azdo/_work/2/s/src/Essentials/src/FileSystem/FileSystem.ios.cs(83,34): error CS0506: 'BookmarkDataFileResult.OpenReadAsync()': cannot override inherited member 'FileBase.OpenReadAsync()' because it is not marked virtual, abstract, or override [/Users/builder/azdo/_work/2/s/src/Essentials/src/Essentials.csproj]
/Users/builder/azdo/_work/2/s/src/Essentials/src/FileSystem/FileSystem.ios.cs(172,34): error CS0506: 'UIDocumentFileResult.OpenReadAsync()': cannot override inherited member 'FileBase.OpenReadAsync()' because it is not marked virtual, abstract, or override [/Users/builder/azdo/_work/2/s/src/Essentials/src/Essentials.csproj]
/Users/builder/azdo/_work/2/s/src/Essentials/src/FileSystem/FileSystem.ios.cs(194,34): error CS0506: 'UIImageFileResult.OpenReadAsync()': cannot override inherited member 'FileBase.OpenReadAsync()' because it is not marked virtual, abstract, or override [/Users/builder/azdo/_work/2/s/src/Essentials/src/Essentials.csproj]
/Users/builder/azdo/_work/2/s/src/Essentials/src/FileSystem/FileSystem.ios.cs(215,34): error CS0506: 'PHAssetFileResult.OpenReadAsync()': cannot override inherited member 'FileBase.OpenReadAsync()' because it is not marked virtual, abstract, or override [/Users/builder/azdo/_work/2/s/src/Essentials/src/Essentials.csproj]
/Users/builder/azdo/_work/2/s/src/Essentials/src/FileSystem/FileSystem.shared.cs(145,4): error CS0103: The name 'Init' does not exist in the current context [/Users/builder/azdo/_work/2/s/src/Essentials/src/Essentials.csproj]
/Users/builder/azdo/_work/2/s/src/Essentials/src/FileSystem/FileSystem.shared.cs(175,19): error CS1501: No overload for method 'GetContentType' takes 1 arguments [/Users/builder/azdo/_work/2/s/src/Essentials/src/Essentials.csproj]
/Users/builder/azdo/_work/2/s/src/Essentials/src/FileSystem/FileSystem.shared.cs(208,7): error CS0103: The name 'Current' does not exist in the current context [/Users/builder/azdo/_work/2/s/src/Essentials/src/Essentials.csproj]
/Users/builder/azdo/_work/2/s/src/Essentials/src/FileSystem/FileSystem.shared.cs(145,4): error CS0103: The name 'Init' does not exist in the current context [/Users/builder/azdo/_work/2/s/src/Essentials/src/Essentials.csproj]
/Users/builder/azdo/_work/2/s/src/Essentials/src/FileSystem/FileSystem.shared.cs(175,19): error CS1501: No overload for method 'GetContentType' takes 1 arguments [/Users/builder/azdo/_work/2/s/src/Essentials/src/Essentials.csproj]
/Users/builder/azdo/_work/2/s/src/Essentials/src/FileSystem/FileSystem.shared.cs(208,7): error CS0103: The name 'Current' does not exist in the current context [/Users/builder/azdo/_work/2/s/src/Essentials/src/Essentials.csproj]
/Users/builder/azdo/_work/2/s/src/Essentials/src/FileSystem/FileSystem.android.cs(11,50): error CS0736: 'FileSystemImplementation' does not implement instance interface member 'IFileSystem.CacheDirectory'. 'FileSystemImplementation.CacheDirectory' cannot implement the interface member because it is static. [/Users/builder/azdo/_work/2/s/src/Essentials/src/Essentials.csproj]
/Users/builder/azdo/_work/2/s/src/Essentials/src/FileSystem/FileSystem.android.cs(11,50): error CS0736: 'FileSystemImplementation' does not implement instance interface member 'IFileSystem.AppDataDirectory'. 'FileSystemImplementation.AppDataDirectory' cannot implement the interface member because it is static. [/Users/builder/azdo/_work/2/s/src/Essentials/src/Essentials.csproj]
Ops, I have seen later that it is still in progress.
This one was a bit thougher than the others. I pushed all working refactorings as PR and added H1 WORK IN PROGRESS (I have no sufficient rights to mark PR as draft, or label it or assign). This was done merely so we would not double our work (syncing efforts). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just going to mention it for completeness, but I think this is different, should the return FileResult
be IFileResult
(like the screenshots api #4699)
This might be different as FileResult
might very well be a representation of a file on disk. However, what happens if some unit testing system or platform wants/needs to represent a file system as a virtual one? Like say a single blob with offsets?
@@ -87,6 +128,20 @@ internal static string Clean(string extension, bool trimLeadingPeriod = false) | |||
return extension; | |||
} | |||
} | |||
|
|||
#nullable enable |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The nullable scope should also cover Current, so ight as well use a single block.
WORK IN PROGRESS
Description of Change
Implements #
Additions made
PR Checklist
Does this PR touch anything that might affect accessibility?
If any of the above checkboxes apply to your PR, then the PR will need to provide testing to demonstrate that accessibility still works.