Closed Bug 1001704 Opened 6 years ago Closed 3 years ago

app for import/export of apps via SD card

Categories

(Firefox OS Graveyard :: Gaia, defect)

x86
macOS
defect
Not set
normal

Tracking

(tracking-b2g:backlog)

RESOLVED WONTFIX
tracking-b2g backlog

People

(Reporter: dietrich, Assigned: dietrich)

References

Details

Attachments

(2 files)

No description provided.
Link to Github pull-request: https://github.com/mozilla-b2g/gaia/pull/18704
WIP patch

Basics in place:

* List installed apps, touch to export
* List apps detected in backup/apps on SD card, touch to import

TODO:

* Needs to hook up to the not-yet-landed import/export APIs
* Needs some styling improvements
* Tests
* Error handling
* Confirmation prompts?
Assignee: nobody → dietrich
Attachment #8413026 - Flags: feedback?(fabrice)
Depends on: 982874
Comment on attachment 8413026 [details] [review]
Link to Github pull-request: https://github.com/mozilla-b2g/gaia/pull/18704

I was able to use it with some small changes to test the api.
Attachment #8413026 - Flags: feedback?(fabrice) → feedback+
Changes I had to do:
- use the device-storage:sdcard permission

- in main.js, import()/export()/getAppManifest() return promises that resolve to whatever makes sense. None of these are synchronous.
(In reply to Fabrice Desré [:fabrice] from comment #3)
> Changes I had to do:
> - use the device-storage:sdcard permission

Interesting - using in Nightly didn't throw any kind of errors reading/writing to SD card ("fake-sdcard" dir in profile).
There are preferences which can bypass the permissions checks.
if device.storage.prompt.testing is true then all permissions checks bypassed.
PR updated. Tested against import/export patch and works correctly - can export an app to sdcard and then import it, and it works fine.

Would be nice if import()'s promise resolved to the app object, so we can notify "{app name} installed, suckaaaa!".

Still need to clean up with live updating of import screen, error handling, notifications, tests, etc.

Fabrice, where can i find all the possible errors that could result from an import? eg, already installed, app is certified, etc.
(In reply to Dietrich Ayala (:dietrich) from comment #6)
> PR updated. Tested against import/export patch and works correctly - can
> export an app to sdcard and then import it, and it works fine.
> 
> Would be nice if import()'s promise resolved to the app object, so we can
> notify "{app name} installed, suckaaaa!".

That's done in the latest patch. Note that you should also use getManifest() in the import screen to display the app name instead of the file name.

> Still need to clean up with live updating of import screen, error handling,
> notifications, tests, etc.

Yep, I think it's time to get UX input.

> Fabrice, where can i find all the possible errors that could result from an
> import? eg, already installed, app is certified, etc.

Look at the latest patch, I put them all in comments of ImportExport.jsm
I don't think they are useful to display to the user - just logging them to the console to debug should be enough.
Pull-request updated, screenshot attached.

Requesting input from UX.

Still WIP, but need input on:

* Name of app
* Header text
* Placement of tabs (top or bottom)

I stole the app list styles from the Permissions screen of the Settings app. Might want to move all that into /shared. Or not bother, since the Settings styles are kind of a rats nest.
Flags: needinfo?(firefoxos-ux-bugzilla)
Updated PR with l10n, confirmations, notifications.
Flagging Carrie to give feedback on Contacts.
Flags: needinfo?(firefoxos-ux-bugzilla) → needinfo?(cawang)
(In reply to Stephany Wilkes from comment #10)
> Flagging Carrie to give feedback on Contacts.

Nothing involving Contacts here :)

The UX feedback that would be most appreciated:

1. General layout. I've got two tabs (Import/Export), each with a list of apps (replicating app listing used in Settings). Do we need a header? What would it say?

2. App name. It should involve or convey "import", "export" and "sd card". That's a lot.

3. Interaction. Right now it prompts when you install/export, and because that process may take some time, it notifies when complete. Here's a flow that would pretty well cover the points where things get async and may take some time:

* user selects an app to import/export
* modal prompt "install/export app {name}?"
* toaster "app install/export started"
* notification "app install/export complete!"
This is not the Contact issue. ni? Omega on Settings. Thanks!
Flags: needinfo?(cawang) → needinfo?(ofeng)
@Stephany,
It looks like a whole new app, neither Contacts nor Settings. So Stephany, could you help clarify who are the PM and UX owner, and the OS target? And then we can get resource to evaluate it, thanks!

@Dietrich,
Is this app for Developers only or for end users?
What's the purpose of it? (It seems to export/import apps to/from SD card, but I don't understand why user needs to do this.)
Flags: needinfo?(swilkes)
Flags: needinfo?(ofeng)
Flags: needinfo?(dietrich)
My understanding is that it is needed for Tarako since sideloading is a very common scenario in the markets that device is targeting.

For example, the corner store seller would load up an SD card with apps, install on the phone before selling it. This is quite normal scenario that I have seen with Android devices in Thailand, Cambodia, Laos, Vietnam, Indonesia.

Fabrice, can you connect us with whoever passed along this requirement to you?
Flags: needinfo?(dietrich) → needinfo?(fabrice)
(In reply to Dietrich Ayala (:dietrich) from comment #14)

> Fabrice, can you connect us with whoever passed along this requirement to
> you?

You want to talk to Steven Yang that I just cc-ed.
Flags: needinfo?(fabrice)
I have no idea who the PM and UX owner are for this, and the OS (release) target. Dietrich, can you clarify so I can juggle resources? Thanks!
Flags: needinfo?(swilkes) → needinfo?(dietrich)
See previous comments wherein I ask who owns this :)

The user research for Tarako market makes pretty clear that this is needed, especially by people at stores who are setting up phones for their customers. Sideloading of tons of apps is a standard practice for Android in these markets.

This is something that doesn't even necessarily need to ship on every phone, but needs to be available to the OEMs and other downstream partners.

So regardless of who owns this, some UX feedback would be helpful to move it forward.
Flags: needinfo?(dietrich) → needinfo?(styang)
This is a feature request from China partners, but we didn't commit it.
blocking-b2g: --- → backlog
Flags: needinfo?(styang)
blocking-b2g: backlog → ---
Firefox OS is not being worked on
Status: NEW → RESOLVED
Closed: 3 years ago
Resolution: --- → WONTFIX
You need to log in before you can comment on or make changes to this bug.