From 321a213e801cc131b89c44b4a54c641130964dc6 Mon Sep 17 00:00:00 2001 From: Craig Russell Date: Thu, 14 Feb 2019 13:15:54 +0000 Subject: [PATCH 01/47] WIP feedback disambiguation redesign --- app/src/main/AndroidManifest.xml | 3 +- .../duckduckgo/app/browser/BrowserActivity.kt | 2 + .../app/feedback/ui/FeedbackActivity.kt | 50 +----- .../app/feedback/ui/FeedbackViewModel.kt | 52 ------ .../res/drawable/ic_positive_feedback.xml | 27 ++++ app/src/main/res/layout/activity_feedback.xml | 152 +----------------- app/src/main/res/layout/content_feedback.xml | 72 +++++++++ app/src/main/res/values/strings.xml | 2 +- 8 files changed, 116 insertions(+), 244 deletions(-) create mode 100644 app/src/main/res/drawable/ic_positive_feedback.xml create mode 100644 app/src/main/res/layout/content_feedback.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 17ad677c4ebd..003867d0cbec 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -109,8 +109,7 @@ android:parentActivityName=".BrowserActivity" /> + android:label="@string/feedbackActivityTitle" /> - viewModel.onBrokenSiteChanged(isChecked) - } - feedbackMessage.addTextChangedListener(object : TextChangedWatcher() { - override fun afterTextChanged(editable: Editable) { - viewModel.onFeedbackMessageChanged(editable.toString()) - } - }) - brokenSiteUrl.addTextChangedListener(object : TextChangedWatcher() { - override fun afterTextChanged(editable: Editable) { - viewModel.onBrokenSiteUrlChanged(editable.toString()) - } - }) - submitButton.setOnClickListener { - viewModel.onSubmitPressed() - } } private fun configureObservers() { @@ -85,8 +59,6 @@ class FeedbackActivity : DuckDuckGoActivity() { private fun processCommand(command: Command) { when (command) { - Command.FocusUrl -> brokenSiteUrl.requestFocus() - Command.FocusMessage -> feedbackMessage.requestFocus() Command.ConfirmAndFinish -> confirmAndFinish() } } @@ -97,18 +69,6 @@ class FeedbackActivity : DuckDuckGoActivity() { } private fun render(viewState: ViewState) { - val messageHint = if (viewState.isBrokenSite) R.string.feedbackBrokenSiteHint else R.string.feedbackMessageHint - brokenSiteSwitch.isChecked = viewState.isBrokenSite - brokenSiteUrl.isVisible = viewState.showUrl - brokenSiteUrl.updateText(viewState.url ?: "") - feedbackMessage.setHint(messageHint) - submitButton.isEnabled = viewState.submitAllowed - } - - private fun EditText.updateText(newText: String) { - if (text.toString() != newText) { - setText(newText) - } } companion object { diff --git a/app/src/main/java/com/duckduckgo/app/feedback/ui/FeedbackViewModel.kt b/app/src/main/java/com/duckduckgo/app/feedback/ui/FeedbackViewModel.kt index d55d68c0f0a6..c6113eedcc51 100644 --- a/app/src/main/java/com/duckduckgo/app/feedback/ui/FeedbackViewModel.kt +++ b/app/src/main/java/com/duckduckgo/app/feedback/ui/FeedbackViewModel.kt @@ -33,8 +33,6 @@ class FeedbackViewModel(private val feedbackSender: FeedbackSender) : ViewModel( ) sealed class Command { - object FocusUrl : Command() - object FocusMessage : Command() object ConfirmAndFinish : Command() } @@ -47,56 +45,6 @@ class FeedbackViewModel(private val feedbackSender: FeedbackSender) : ViewModel( viewState.value = ViewState() } - fun setInitialBrokenSite(url: String?) { - onBrokenSiteUrlChanged(url) - onBrokenSiteChanged(true) - } - - fun onBrokenSiteChanged(isBroken: Boolean) { - if (isBroken == viewState.value?.isBrokenSite) { - return - } - - viewState.value = viewState.value?.copy( - isBrokenSite = isBroken, - showUrl = isBroken, - submitAllowed = canSubmit(isBroken, viewValue.url, viewValue.message) - ) - - if (isBroken && viewValue.url.isNullOrBlank()) { - command.value = Command.FocusUrl - } else { - command.value = Command.FocusMessage - } - } - - fun onBrokenSiteUrlChanged(newUrl: String?) { - viewState.value = viewState.value?.copy( - url = newUrl, - submitAllowed = canSubmit(viewValue.isBrokenSite, newUrl, viewValue.message) - ) - } - - fun onFeedbackMessageChanged(newMessage: String?) { - viewState.value = viewState.value?.copy( - message = newMessage, - submitAllowed = canSubmit(viewValue.isBrokenSite, viewValue.url, newMessage) - ) - } - - private fun canSubmit(isBrokenSite: Boolean, url: String?, feedbackMessage: String?): Boolean { - - if (feedbackMessage.isNullOrBlank()) { - return false - } - - if (isBrokenSite && url.isNullOrBlank()) { - return false - } - - return true - } - fun onSubmitPressed() { val message = viewValue.message ?: return diff --git a/app/src/main/res/drawable/ic_positive_feedback.xml b/app/src/main/res/drawable/ic_positive_feedback.xml new file mode 100644 index 000000000000..509a279753cc --- /dev/null +++ b/app/src/main/res/drawable/ic_positive_feedback.xml @@ -0,0 +1,27 @@ + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_feedback.xml b/app/src/main/res/layout/activity_feedback.xml index cb237e66fe86..d5aa61aa861e 100644 --- a/app/src/main/res/layout/activity_feedback.xml +++ b/app/src/main/res/layout/activity_feedback.xml @@ -14,154 +14,18 @@ ~ limitations under the License. --> - - - - - - - - - - - - - - - - - - - -