android icon indicating copy to clipboard operation
android copied to clipboard

[SPIKE] Spaces

Open abelgardep opened this issue 2 years ago • 1 comments

Spaces were introduced in oCIS, so Android should implement them.

  • How Spaces work
  • How Spaces could fit in the current UI
  • How Spaces API could fit in the current synchronization architecture
  • How Spaces API could fit in the new architecture
  • First mockups or ideas to integrate them into Android

iOS implementation: https://github.com/owncloud/ios-app/pull/1101

abelgardep avatar Apr 29 '22 08:04 abelgardep

Here https://confluence.owncloud.com/display/PROD/Spaces spaces overview.

michl19 avatar May 03 '22 16:05 michl19

PM definition: https://github.com/owncloud/ocis/issues/4316 Some spaces operations: https://owncloud.dev/ocis/development/beta-testplan/#spaces Graph API: https://owncloud.dev/libre-graph-api/

jesmrec avatar Nov 16 '22 11:11 jesmrec

Ocis is now available but android client lacks of spaces functionality. Any idea when this will be implemented?

pandalec avatar Dec 03 '22 09:12 pandalec

Ocis is now available but android client lacks of spaces functionality. Any idea when this will be implemented?

Next 3.0 release contains big architectural changes, that needed implementation first.

You can test it already with the betas: https://owncloud.com/beta-testing/#android

Spaces for ownCloud Infinite Scale is the next most priority item on the roadmap, but there is no ETA yet. Happy to publish early pre-release builds soon… 🤞

michaelstingl avatar Dec 05 '22 08:12 michaelstingl

First mockups to introduce Spaces on the Android App

Option A

The spaces of the user will be listed on the navigation drawer. We considered this because it's kind of similar to the web approach. And we would keep a similar structure on the android App.

Drawer content would change. Help and Send feedback options were already inside the settings. Settings and Privacy Policy would be relocated inside the drawer. As icons on the picture or as they were but at the bottom, below the quota.

Once the user clicks on a space, the space content will be shown in a pretty similar way to the current list (Maybe adding a title, subtitle, description, and image. We can check option B, it would be pretty similar)

Pros

  • Pretty similar structure to web.
  • Kind of easy to switch between spaces

Cons

  • Drawer content will have big changes and will be really different from the current one so it may confuse users.
  • When a user has several spaces, we would introduce a scrollable drawer which could be not UX friendly.
  • Drawer content will change dynamically when new spaces are created or deleted, which is confusing
  • Navigation and state management will be harder.
  • oc10 will have an almost empty drawer.
Spaces list Space content
1st option spaces 1st option - spaces - info

Option B

The spaces of the user will be listed on a new tab inside the bottom navigation bar. We considered this because it's kind of similar to other android Apps like Google Drive.

The drawer will be the same. The bottom navigation bar will be pretty similar, with just one new item. Ideally, the new spaces item will be visible only for oCIS accounts.

The Files tab will be the "Personal" space. It could be renamed for oCIS accounts. So there are no changes from the user's point of view and will be easier for the user to identify what's going on.

The new Spaces item will show a list of the spaces. Grid view to show the image, title, subtitle, and description. MVP won't have the Create a new Space option and the Create a new Space location can change with no problem. Probably we will need a 3dot menu on each space to show different options like renaming, edit descriptions, or whatever but out of the scope of the first implementation.

Once the user clicks on a space, a new screen shows the space's info and its content. This screen won't have the bottom nav bar or the drawer so we can keep it simple and guide the user through it. File listing format will be the same as the one we already have to provide an easier transition.

Pros

  • No major changes for oC10 users. oCIS users will have a new tab
  • Easier to handle navigation and state management

Cons

  • Differs a little bit from other clients' implementation
Spaces list Space content
spaces list Space content

@michaelstingl @tbsbdr @jesmrec @JuancaG05

abelgardep avatar Dec 07 '22 14:12 abelgardep

Voting B from my side. It's also important to give new and fresh views to users and customers. Grid view in list of spaces is also available in web, and iOS will take that direction afaik.

jesmrec avatar Dec 07 '22 15:12 jesmrec

Voting B as its navigation concept seem very simple to me. Thanks a lot for the scribbles!

tbsbdr avatar Dec 07 '22 16:12 tbsbdr

Things to check and implement. If something is missing, please comment. From these set of ideas, the list of issues to implement should be created.

Technical - internal (BD, storage)

  • Persist which type of account is. Create new field in files table? With the account type (oC10 / oCIS). Or new table (see below). oC10 accounts will skip everything regarding spaces. Migration.

  • Persist space info:

    • Add new field in table files called space, or add the space name in front of “remotePath” field. To know which space the file belongs to. Migration.
    • Create table spaces including name, id, modification date, owner, quota, webDavURL and eTag (check spaces's changes, in files and in name, description and so on...). Everything from API. Add such content to table when account is attached. Migration. Bad thing: need to check how to update changes.
  • Create table users with the id from graph/v1.0/me. It's used for the spaces permissions, which are assigned to user ids like 3ae8361b-51f0-4e3a-be77-17bf29fbbfe8. Could be added the type of account (oC10 / oCIS) for the user. It may need migration.

  • Create table for user permissions: every user could have a different permission level for every space. Depending on the permission level, some operations are allowed/banned (check below).

  • Downloaded / Av. off stuff to path in Scoped Storage: account/space/path_to_the_item f. ex:

[email protected] |_ Personal   |_ Folder1   |_ Folder2 |_ Shares |_ Space1   |_ ... |_ Space2   |_ ...

Only for oCIS accounts. oC10 keeps the legacy path.

  • Received shares will need to save status (pending, accepted and declined)

  • Document provider: for every account, showing list of spaces as a folder list. Then browsing into it.

UI - visual

  • Create Spaces view showing title, and image. Subtitle and description may not required for the list. Only for oCIS accounts. Click to select space, then show list of files inside. If option "B" above is selected, drawer will not change. But, the account selector in drawer should point to the new spaces selector instead the list of files, for oCIS accounts. Create an empty view for the case no spaces are available.

  • Change bottom bar: add Spaces shortcut and change "Files" for "Personal" if the account is oCIS. Question: browsing a space and then, clicking on uploads (or any other shortcut), the way to recover the space list is clicking spaces shortcut and selecting the space? (two clicks). Av. offline and links shortcut will show stuff of the current space, or the whole account.

  • Inject in the upper side of the files view the space name, image, subtitle and description for spaces (not personal, not shares). Fancy stuff, not first prio.

  • List of files in spaces. Handle permissions depending on the user. Graph API returns permission level for every space member:

    • Viewer (download and preview): hide fab, share, move, copy, rename, remove operations. Av offline? Not posible to upload…
    • Editor (upload, edit, delete, download and preview): hide share
    • Manager (share, upload, edit, delete, download and preview): hide nothing.
  • Copy/Move operations: only available for the current space ¿?

  • Shares to be shown in a different way. They have to be accepted or refused by the user. This one will need special attention. Show three lists: pending, accepted and declined. "Shared with others" and "Links" could be postponed or reused by the existing shortcuts.

jesmrec avatar Dec 07 '22 17:12 jesmrec

Option B is the best IMO. Some comments regarding @jesmrec's comment:

Only for oCIS accounts. oC10 keeps the legacy path.

If we are going to perform a migration, maybe it is better to edit also oC10 files path so that they belong to the "Personal" space by default. By doing this, I think we can avoid headaches in the future and treat every file the same way, knowing they all belong to a space.

If option "B" above is selected, drawer will not change. But, the account selector in drawer should point to the new spaces selector instead the list of files, for oCIS accounts.

IMO, it could point to the "Personal" space directly, which corresponds to the current list of files view. In the web version, when you login in an account, you are driven to the "Personal" space. If we point to the spaces selector, we'll require at least 1 click to see a list of files everytime the user changes of account in the app, and I think it could be more frequent for the user to navigate their "Personal" space? Discussable.

JuancaG05 avatar Dec 09 '22 08:12 JuancaG05

Notes from our discussion 9.12.2022

with @JuancaG05 @jesmrec @michaelstingl @tbsbdr

  • Decision: We'll go with Option B 🤩
  • Timeline: Please estimate if we can provide a first prototype until 31.1.2023 where one can access Spaces in the Android App.

Remarks

  • Bottom bar: Available offline and links could move to the sidebar in the future
  • Space Header: Space Title, subtitle & description - would be nice to see a more hifi scribble as a second step to get an impression how the header could look like
  • Migration from oc10 is a complex topic, needs extra concepting - postpone at least until Q2 / 2023
  • Bottom Bar: will always be visible, click on "Spaces" will return to space root
  • Space Header: Is only shown in the "Space root" (not shown if you navigate down a folder hierarchy in a space)

tbsbdr avatar Dec 09 '22 10:12 tbsbdr

Spike done, let's start the development 💯

abelgardep avatar Dec 13 '22 09:12 abelgardep