Closed Bug 1034088 Opened 7 years ago Closed 7 years ago

FindMyDevice inconsistent enabled state when device is offline

Categories

(Firefox OS Graveyard :: FindMyDevice, defect)

ARM
Gonk (Firefox OS)
defect
Not set
normal

Tracking

(blocking-b2g:2.0+, b2g-v2.0 verified, b2g-v2.1 verified)

VERIFIED FIXED
2.1 S1 (1aug)
blocking-b2g 2.0+
Tracking Status
b2g-v2.0 --- verified
b2g-v2.1 --- verified

People

(Reporter: gerard-majax, Assigned: ggp)

References

Details

Attachments

(2 files)

46 bytes, text/x-github-pull-request
gerard-majax
: review+
Details | Review
7.48 MB, video/mp4
Details
Flame, master of today. While reviewing bug 1000323, I came accross of this spurious UX feedback.

STR:
 0. Enable data/WiFi
 1. Go to Settings, Find My Device
 2. Create an account or signin, and enable "Locate my device"
 3. Reboot
 4. Disable data/WiFi
 5. Open Settings
 6. Open Find My Device section

Expected:
 I have the "Locate my device" checkbox enabled, and maybe something that says that I have no data connectivity hence the feature cannot work until some network is online

Actual:
 At step 5, the text under the section name says "Enabled", but when entering the panel, I get the very same UI than when I have not yet created an account or signed in.

From a user point of view, I really think it's a bad UX leading to confusing state.
I'm not convinced we should block over this, but I agree the UX could be much better.

If we decide this doesn't block, then it should probably be a duplicate of bug 998489. If we do want to fix this for 2.0, then perhaps we can reuse the string we already have [1] and display it somewhere else, rather than just alert()ing it when the login button is clicked. We'd need UX guidance on that, though.

1- https://github.com/mozilla-b2g/gaia/blob/master/apps/settings/locales/settings.en-US.properties#L726
(In reply to Guilherme Gonçalves [:ggp] from comment #1)
> I'm not convinced we should block over this, but I agree the UX could be
> much better.
> 
> If we decide this doesn't block, then it should probably be a duplicate of
> bug 998489. If we do want to fix this for 2.0, then perhaps we can reuse the
> string we already have [1] and display it somewhere else, rather than just
> alert()ing it when the login button is clicked. We'd need UX guidance on
> that, though.
> 
> 1-
> https://github.com/mozilla-b2g/gaia/blob/master/apps/settings/locales/
> settings.en-US.properties#L726

Do you know there is ModalDialog in Gaia ? That's better than alert().

And no, I disagree, this is a major bad UX feedback: people will not kill the settings app by themselves, and we are reporting back a WRONG state.
hey ggp - this should be pretty simple to fix, I'd think?

When the fmd code loads in settings, add a listener for 'online' and 'offline' events fired by window, and check navigator.onLine to figure out the current state, maybe something like

window.addEventListener('offline', onNetworkChange);
window.addEventListener('online', onNetworkChange);
onNetworkChange();
function onNetworkChange() {
  if (navigator.onLine) {
    // enable normal stuff
  } else {
    // display a "sorry please enable network" panel.
    // probably could just use the approved string from the alert msg.
  }
}

You'd probably need something slightly different for the fmd item in the main settings menu vs. the fmd settings panel. Let me know if this seems unclear.
I think this flow could do with a better end state than the sign up screen.

ni jsavory
Flags: needinfo?(jsavory)
:jsavory, we want to use this string: 

"This device is currently offline. Connect to a network and try again."

We just need to know how we want to present it to the user...

Thank you!
Assignee: nobody → jsavory
(In reply to Erin Lancaster [:elan] from comment #5)
> :jsavory, we want to use this string: 
> 
> "This device is currently offline. Connect to a network and try again."
> 
> We just need to know how we want to present it to the user...
> 
> Thank you!

I consider this to be a very nice-to-have and bot a blocker for release. I sense some string changes involved here (re-using existing strings is also considered a string change as it needs a new string id, fyi. Checking with :flod/"pike will be best here) so we should be cautious on the approach of fixing this in 2.0 even if end up not blocking and go by the approval route.
Flags: needinfo?(vkrishnamoorthy)
These results do not reproduce if you put your phone on Airplane Mode.

You will reach the Sign in/Create an Account page. Click on Sign in/Create an Account.

Actual: You will receive a message that says "This device is currently offline. Connect to a network and try again."
Breaking this down further from a product perspective, 

Severity:
the current behavior is confusing to the user as the user is prompted to sign in or create a new FxA account when in reality the user has created an account already and enabled FMD. So definitely a bad experience.

Probability of Occurrence: 
My opinion here is that the probability of occurrence is low as the user has to reboot the device, disable data, go to settings and open the FMD menu to see this error.

Given that the probability of occurrence is low, I am tending towards this being kept in the nom state and not moved to a blocker state. 

The reason to have it in the nom state is that 2.0 is about polish and to gerard-majax's point, the end state is wrong.

jsavory is looking at options for a better end state.
Flags: needinfo?(vkrishnamoorthy)
(In reply to vkrishnamoorthy@mozilla.com [:Vishy] from comment #8)
> Breaking this down further from a product perspective, 
> 
> Severity:
> the current behavior is confusing to the user as the user is prompted to
> sign in or create a new FxA account when in reality the user has created an
> account already and enabled FMD. So definitely a bad experience.
> 
> Probability of Occurrence: 
> My opinion here is that the probability of occurrence is low as the user has
> to reboot the device, disable data, go to settings and open the FMD menu to
> see this error.
> 
> Given that the probability of occurrence is low, I am tending towards this
> being kept in the nom state and not moved to a blocker state. 
> 
> The reason to have it in the nom state is that 2.0 is about polish and to
> gerard-majax's point, the end state is wrong.
We cannot keep bugs in the nom queue for long as these are not actionable by anyon e:-/, so clearing the nom here. If we end up coming up with a low risk solution without strings before 21, we can consider uplift to 2.0
> 
> jsavory is looking at options for a better end state.
blocking-b2g: 2.0? → backlog
(In reply to bhavana bajaj [:bajaj] [NOT reading Bugmail, needInfo please] from comment #9)
> We cannot keep bugs in the nom queue for long as these are not actionable by
> anyon e:-/, so clearing the nom here. If we end up coming up with a low risk
> solution without strings before 21, we can consider uplift to 2.0
> > 
> > jsavory is looking at options for a better end state.

Makes sense, we are also exploring other STRs that bring us to this state. If we have an STR with higher probability, we can re nom
I think in this case, the user should be presented with the FMD toggle settings screen. If the user has no internet connection and tries to enable/disable FMD they should be presented with a confirmation screen:
Body text "This device is currently offline. Connect to a network and try again." Single button: "Ok"

This way the user can see the status of the FMD but cannot change it until they are connected.
Flags: needinfo?(jsavory)
Attached file gaia pull request
We can solve this by caching FxA's login state in a setting, then using the cache when offline. The pull request also contains the patch for bug 1000323 until it lands, so we avoid conflicts.
Attachment #8457481 - Flags: review?(lissyx+mozillians)
Comment on attachment 8457481 [details] [review]
gaia pull request

Works as expected, the panel says that Find My Device is enabled even when I'm offline.
Attachment #8457481 - Flags: review?(lissyx+mozillians) → review+
Assignee: jsavory → ggoncalves
Keywords: checkin-needed
Master: https://github.com/mozilla-b2g/gaia/commit/92395337d42e15c33d329c66e404e6a827807b0b
Status: NEW → RESOLVED
Closed: 7 years ago
Keywords: checkin-needed
Resolution: --- → FIXED
Target Milestone: --- → 2.1 S1 (1aug)
[Blocking Requested - why for this release]: This provides high UX value and has low risk.
blocking-b2g: backlog → 2.0?
Moving to backlog as product weighed in as not a blocker
blocking-b2g: 2.0? → backlog
[Blocking Requested - why for this release]: After discussing this further, the STR is more common than  we initially thought it to be. For example, the bad experience can be reproduced when the device is offline and there is no need to reboot the device as I had mentioned in comment 8 previously.

Please uplift this for 2.0 as it provides a much better experience
blocking-b2g: backlog → 2.0?
blocking-b2g: 2.0? → 2.0+
Attached video verify_video.MP4
This issue has been verified successfully on Flame v2.1 & v2.0
See attachment: verify_video.MP4
Reproducing rate: 0/5
Flame 2.1 versions:
Gaia-Rev        5655269098c7e82254e56933f1af05b4abe2a2f3
Gecko-Rev       https://hg.mozilla.org/releases/mozilla-b2g34_v2_1/rev/86608c9389b5
Build-ID        20141204001201
Version         34.0
Device-Name     flame
FW-Release      4.4.2
FW-Incremental  eng.cltbld.20141204.034958
FW-Date         Thu Dec  4 03:50:09 EST 2014
Bootloader      L1TC00011880

Flame 2.0 versions:
Gaia-Rev        8d1e868864c8a8f1e037685f0656d1da70d08c06
Gecko-Rev       https://hg.mozilla.org/releases/mozilla-b2g32_v2_0/rev/ff1100ba2ab8
Build-ID        20141204000228
Version         32.0
Device-Name     flame
FW-Release      4.4.2
FW-Incremental  eng.cltbld.20141204.040425
FW-Date         Thu Dec  4 04:04:36 EST 2014
Bootloader      L1TC00011880
Status: RESOLVED → VERIFIED
You need to log in before you can comment on or make changes to this bug.