owncloud / owncloud/ios-app

Uploads

Open
#101 5 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Epic feature:uploads
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:

  • 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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.