Refactor FileProvider implementation to replicated approach
Nobody has claimed this yet.
- Dominant language
- Swift
- Stars
- 2.5k
- Forks
- 1k
- Avg merge
- 2d 18h
- Merged PRs (30d)
- 13
Description
[...]
Recomendation to fix this:
Since iOS 16 there is another way to implement the FileProvider. See: https://developer.apple.com/documentation/fileprovider/nsfileproviderreplicatedextensionThe NSFileProviderReplicatedExtension might make sense in the use case of NC for iOS, because you don't want to take care of files on the file providers file system. The NC FileProviderExtension just should take care of xyncing the files properly.
As far as I understood the code there a couple of updates needed, but this can help solving several issues with file syncing that had been edited in other apps through the iOS File explorer.Also it might be good to add files to the WorkingSet in NSFileProviderEnumerator that has been marked as "Available offline". So it is convenient that those files (like favorites) are always stay in sync until the internet connection is lost.
Also wit the new way of syncing items through NSFileProvidedReplicatedExtension it's possible to keep track of materialized and non materialized items (as far as I understood, that's new). So, NC iOS App keeps track of changes through those items, and if there is a change it triggers an update of the local copy of the item through the fileProvider in the background.
I don't know (searched for it, but couldn't find) if you guys want to include devices older than iOS 16. In that case this change would not yet be possible, but it's really worth taking this change the replicated provider implementation into account, because it will boost user experience to a whole new level.
Originally posted by @Pit-Storm in #3401
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by locating the current iOS FileProvider implementation and its NSFileProviderEnumerator usage, then read Apple’s NSFileProviderReplicatedExtension documentation for the iOS 16 requirements. Clarify support for devices older than iOS 16 and define how offline WorkingSet items and materialized versus non-materialized changes should behave before scoping the refactor.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- ios, swift
- Domain
- mobile-dev
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100