[SPIKE] Spaces
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
Here https://confluence.owncloud.com/display/PROD/Spaces spaces overview.
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/
Ocis is now available but android client lacks of spaces functionality. Any idea when this will be implemented?
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… 🤞
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 |
|---|---|
![]() |
![]() |
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 |
|---|---|
![]() |
![]() |
@michaelstingl @tbsbdr @jesmrec @JuancaG05
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.
Voting B as its navigation concept seem very simple to me. Thanks a lot for the scribbles!
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
filestable? 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
filescalled space, or add the space name in front of “remotePath” field. To know which space the file belongs to. Migration. - Create table
spacesincluding 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.
- Add new field in table
-
Create table
userswith the id fromgraph/v1.0/me. It's used for the spaces permissions, which are assigned to user ids like3ae8361b-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_itemf. 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.
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.
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.2023where one can access Spaces in the Android App.
Remarks
- Bottom bar:
Available offlineandlinkscould 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)
Spike done, let's start the development 💯



