Uploads
Nobody has claimed this yet.
- Dominant language
- Swift
- Stars
- 251
- Forks
- 142
- Avg merge
- 2d 17h
- Merged PRs (30d)
- 3
Description
Letting users to upload content from their devices is one of the most important scenarios in a syncing client. Let's summarize and discuss a bit about the ways to upload content.
Manual uploads
Users can select those content to be uploaded. Steps (roughly):
- User browses to the target folder
- User selects the option to upload new content
- Folder picker is shown
- User chooses one (or more) items to be uploaded
- Items are queued
Instant uploads
UI in settings view already developed: https://github.com/owncloud/ios-app/pull/33
Once the option is enabled in settings view and fits the user set up (only wifi, pics/videos), the content of the camera is queued.
Sharing
3rd party apps can share content with ownCloud. After selecting the item to be shared, folder picker to select target folder should be displayed. Once the user selects target folder, the content will be queued.
Files app
Upgrades of oC contents by other apps are queued as well. File provider will take care.
Concerns:
After content is queued, through the app (and underlying SDK), the user has to be able to manage the uploads with a view:
Uploads view
To check the status of the uploads, and interact with them.
Status of uploads:
-
Pending: files queued, to be uploaded. Information to be shown:
- Name of the file
- Target folder, including the account name
- Option to cancel
-
On course: currently being performed. Information to be shown:
- Name of the file
- Progress bar (including the % is a n2h)
- Option to cancel
- Options to pause/resume, once webDav endpoint supports chunks. Checking before if currently the core supports this. (https://github.com/owncloud/ios-app/issues/101#issuecomment-454869473)
-
Failed: something wrong happened. Depending on the cause, user can select next action to do (check below). Information to be shown:
- Name of the file
- Target folder, including the account name
- Reason of the failure
- Indicate/enable any way to retry (by tapping, swiping or whatever...)
- Option to discard
-
Success: Information to be shown:
- Name of the file
- Target folder, including the account name
- Timestamp of the success
Different ways to show the user all these lists:
- Consecutive list (current iOS & Android)
- Tabs
- Other iOS resources
The uploads view should also include options to clear all and each one of the lists above.
Failed uploads
Failed uploads deserve a separate management, so the cause of the failure will point to a different use case.
List of posible errors and the action to do when the user retries:
- Lack of connection -> check if connection is available. If not, remains as failed. If it is, move all failed to pending.
- Credentials error -> point to edit view
- Target folder removed -> choose a new location
- Source file removed -> only option to discard
- Server maintenance mode -> check if server is in maintenance. If it is, remains as failed. If not, move all failed to pending.
- Firewall rule bans the upload: will depend on the rule... further specification TO DO.
- Antivirus bans the upload -> only option to discard
- No quota available -> check if enough qouta. If it is, move all failed to pending. If not, remains as failed.
NOTE: Some of them will depend on the server responses.
An option to retry all failed uploads regardless the causing error should be put together with the clearing list options mentioned above.
More topics related can be added and discussed.
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
This is a broad design discussion covering manual, instant, shared, and Files-app uploads plus an uploads-management view. Start by reviewing the referenced settings-view pull request and ownCloud SDK issue 23. Done would require agreed behavior and implementation scope for queuing, status lists, cancellation, retries, and failure handling.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- ios, swift
- Domain
- mobile
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100