Skip to content

Conversation

@CDRussell
Copy link
Member

@CDRussell CDRussell commented Mar 22, 2019

Task/Issue URL: https://app.asana.com/0/715106103902962/1109166030178654
iOS equivalent PR: duckduckgo/iOS#420
Tech Design URL:
CC

Description

Adds a new flow for users to leave feedback from the Settings page.

This new flow tries to better capture the nature of the feedback by getting users to identify the category of the problem (is their feedback about missing features, bugs, search results etc...)

Description of the flow

There is an initial happy / sad clarifier.
Screenshot 2019-03-22 at 17 07 34

Happy Flow

Rate, give more details or finish

In the happy flow, the users will be offered to chance to give us more info or to rate us, or to end the journey there.

They will only see this screen if they can rate us (app installed from Play Store) - otherwise this screen will be skipped and they'll be shown the "more details" page instead.

device-2019-03-22-172037

More details page

Screenshot 2019-03-22 at 17 07 38

Sad Flow

In this flow, the user will be shown a list of main reasons why they might be unhappy and asked to pick from the list.
Screenshot 2019-03-22 at 17 07 46

Depending on the option chosen, they'll either navigate to choosing a subreason, a page to provide "extra details", or they'll see a broken site page.

When choosing a subreason, they'll always end with navigating to the open ended "share details" page.

Missing Browser features

This will show subcategories. Choosing a subcategory will navigate to the open ended "share details" page.

Website loading issues

This will show a new broken site page (note, the existing "report broken site" screen is left as is)

Search results not good enough

This will show show subcategories. Choosing a subcategory will navigate to the open ended "share details" page.

Customization

This will show subcategories. Choosing a subcategory will navigate to the open ended "share details" page.

#### None of these
This will jump straight to the open ended "share details" page.

Steps to test this PR:

  1. Test all the flows, for each path observing pixel data and and the HTTP POST network request that happens when (if) you reach the terminal journey in that flow
  2. Repeat with other (dark/light) theme

See the internal ticket for where details on where to look to verify pixel and POST data.


Internal references:

Software Engineering Expectations
Technical Design Template

…feedback_disambiguation

# Conflicts:
#	app/src/main/java/com/duckduckgo/app/browser/BrowserActivity.kt
#	build.gradle
Replace faces with PNGs as vector drawables were rendering poorly
Also renamed old "feedback" classes to "broken site" naming
@CDRussell CDRussell requested a review from subsymbolic as a code owner March 22, 2019 17:16
@CDRussell CDRussell removed the request for review from subsymbolic March 22, 2019 17:16
Copy link
Contributor

@subsymbolic subsymbolic left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I noticed a crash when in split screen landscape mode and then dragging app to be fullscreen again.

Process: com.duckduckgo.mobile.android, PID: 5564
    java.lang.IllegalStateException: rootScrollView must not be null
        at com.duckduckgo.app.feedback.ui.negative.openended.ShareOpenEndedFeedbackFragment$configureListeners$$inlined$doOnPreDraw$1.onPreDraw(View.kt:348)
        at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:977)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2349)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1392)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6752)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)
        at android.view.Choreographer.doCallbacks(Choreographer.java:723)
        at android.view.Choreographer.doFrame(Choreographer.java:658)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)
        at android.os.Handler.handleCallback(Handler.java:790)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6494)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

@subsymbolic
Copy link
Contributor

@CDRussell I have reviewed and tested the code and validated that the flows make sense and work. In terms of verifying every permutation, I haven't done that. Is this something Azad/Chris could do?

Copy link
Contributor

@subsymbolic subsymbolic left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is getting close. A couple of tidy ups and UX issue:

  • When rotating on text entry screen, text is lost
  • When rotating on option selection list / recycler screens, there is an unexpected slide animation

@CDRussell CDRussell requested a review from subsymbolic March 28, 2019 15:36
Copy link
Contributor

@subsymbolic subsymbolic left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great work!

@CDRussell CDRussell merged commit 7b12ba7 into develop Mar 28, 2019
@CDRussell CDRussell deleted the feature/feedback_disambiguation branch March 28, 2019 16:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants