Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 0 additions & 17 deletions app/src/androidTest/java/com/duckduckgo/app/cta/ui/CtaTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -75,12 +75,6 @@ class CtaTest {
assertTrue(testee.pixelShownParameters().isEmpty())
}

@Test
fun whenCtaIsSurveyReturnNullDialogCta() {
val testee = HomePanelCta.Survey(Survey("abc", "http://example.com", 1, Survey.Status.SCHEDULED))
assertNull(testee.createDialogCta(mock(FragmentActivity::class.java)))
}

@Test
fun whenCtaIsAddWidgetAutoReturnEmptyOkParameters() {
val testee = HomePanelCta.AddWidgetAuto
Expand All @@ -99,11 +93,6 @@ class CtaTest {
assertTrue(testee.pixelShownParameters().isEmpty())
}

@Test
fun whenCtaIsAddWidgetAutoReturnNullDialogCta() {
val testee = HomePanelCta.AddWidgetAuto
assertNull(testee.createDialogCta(mock(FragmentActivity::class.java)))
}

@Test
fun whenCtaIsAddWidgetInstructionsReturnEmptyOkParameters() {
Expand All @@ -123,12 +112,6 @@ class CtaTest {
assertTrue(testee.pixelShownParameters().isEmpty())
}

@Test
fun whenCtaIsAddWidgetInstructionsReturnNullDialogCta() {
val testee = HomePanelCta.AddWidgetInstructions
assertNull(testee.createDialogCta(mock(FragmentActivity::class.java)))
}

@Test
fun whenCtaIsBubbleTypeReturnCorrectCancelParameters() {
val testee = DaxBubbleCta.DaxIntroCta(mockOnboardingStore, mockAppInstallStore)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,7 @@ class BrowserTabFragment : Fragment(), FindListener, CoroutineScope {
private val logoHidingListener by lazy { LogoHidingLayoutChangeLifecycleListener(ddgLogo) }

private var alertDialog: AlertDialog? = null
private var daxDialog: DaxDialog? = null

override fun onAttach(context: Context) {
AndroidSupportInjection.inject(this)
Expand Down Expand Up @@ -331,6 +332,7 @@ class BrowserTabFragment : Fragment(), FindListener, CoroutineScope {
}

override fun onPause() {
daxDialog = null
logoHidingListener.onPause()
super.onPause()
}
Expand Down Expand Up @@ -1372,7 +1374,8 @@ class BrowserTabFragment : Fragment(), FindListener, CoroutineScope {
hideDaxCta()
val container = networksContainer
activity?.let { activity ->
val daxDialog = configuration.createDialogCta(activity).apply {
daxDialog?.dismiss()
daxDialog = configuration.createCta(activity).apply {
setHideClickListener {
dismiss()
launchHideTipsDialog(activity, configuration)
Expand All @@ -1396,8 +1399,8 @@ class BrowserTabFragment : Fragment(), FindListener, CoroutineScope {
dismiss()
}
}
show(activity.supportFragmentManager, DAX_DIALOG_DIALOG_TAG)
}
daxDialog.show(activity.supportFragmentManager, DAX_DIALOG_DIALOG_TAG)
}
}

Expand All @@ -1418,20 +1421,18 @@ class BrowserTabFragment : Fragment(), FindListener, CoroutineScope {
}

private fun showDaxCta(configuration: DaxBubbleCta) {
daxCtaContainer.alpha = 1f
daxCtaContainer.show()
ddgLogo.hide()
hideHomeCta()
configuration.apply(daxCtaContainer)
configuration.showCta(daxCtaContainer)
}

private fun showHomeCta(configuration: HomePanelCta) {
hideDaxCta()
if (ctaContainer.isEmpty()) {
renderHomeCta()
} else {
configuration.showCta(ctaContainer)
}
configuration.apply(ctaContainer)
ctaContainer.show()
}

private fun hideDaxCta() {
Expand All @@ -1453,7 +1454,7 @@ class BrowserTabFragment : Fragment(), FindListener, CoroutineScope {
inflate(context, R.layout.include_cta, ctaContainer)
logoHidingListener.callToActionView = ctaContainer

configuration.apply(ctaContainer)
configuration.showCta(ctaContainer)
ctaContainer.ctaOkButton.setOnClickListener {
viewModel.onUserClickCtaOkButton()
}
Expand Down
37 changes: 19 additions & 18 deletions app/src/main/java/com/duckduckgo/app/cta/ui/Cta.kt
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,15 @@ import kotlinx.android.synthetic.main.include_dax_dialog_cta.view.dialogTextCta
import kotlinx.android.synthetic.main.include_dax_dialog_cta.view.hiddenTextCta
import kotlinx.android.synthetic.main.include_dax_dialog_cta.view.primaryCta

interface DialogCta {
fun createCta(activity: FragmentActivity): DaxDialog
}


interface ViewCta {
fun showCta(view: View)
}

interface Cta {
val ctaId: CtaId
val shownPixel: Pixel.PixelName?
Expand All @@ -50,9 +59,6 @@ interface Cta {
fun pixelShownParameters(): Map<String, String?>
fun pixelCancelParameters(): Map<String, String?>
fun pixelOkParameters(): Map<String, String?>

fun apply(view: View)
fun createDialogCta(activity: FragmentActivity): DaxDialog?
}

sealed class DaxDialogCta(
Expand All @@ -65,11 +71,9 @@ sealed class DaxDialogCta(
var ctaPixelParam: String,
val onboardingStore: OnboardingStore,
val appInstallStore: AppInstallStore
) : Cta {

override fun apply(view: View) {}
) : Cta, DialogCta {

override fun createDialogCta(activity: FragmentActivity) = DaxDialog(getDaxText(activity), activity.resources.getString(okButton))
override fun createCta(activity: FragmentActivity) = DaxDialog(getDaxText(activity), activity.resources.getString(okButton))

override fun pixelCancelParameters(): Map<String, String?> = mapOf(Pixel.PixelParameter.CTA_SHOWN to ctaPixelParam)

Expand Down Expand Up @@ -120,7 +124,7 @@ sealed class DaxDialogCta(
appInstallStore
) {

override fun createDialogCta(activity: FragmentActivity): DaxDialog =
override fun createCta(activity: FragmentActivity): DaxDialog =
DaxDialog(getDaxText(activity), activity.resources.getString(okButton), false)

override fun getDaxText(context: Context): String {
Expand Down Expand Up @@ -164,7 +168,7 @@ sealed class DaxDialogCta(
}
}

override fun createDialogCta(activity: FragmentActivity): DaxDialog {
override fun createCta(activity: FragmentActivity): DaxDialog {
return DaxDialog(getDaxText(activity), activity.resources.getString(okButton)).apply {
val privacyGradeButton = activity.findViewById<View>(R.id.privacyGradeButton)
onAnimationFinishedListener {
Expand Down Expand Up @@ -204,7 +208,7 @@ sealed class DaxDialogCta(
appInstallStore
) {

override fun createDialogCta(activity: FragmentActivity): DaxDialog {
override fun createCta(activity: FragmentActivity): DaxDialog {
return DaxDialog(getDaxText(activity), activity.resources.getString(okButton)).apply {
val fireButton = activity.findViewById<View>(R.id.fire)
onAnimationFinishedListener {
Expand Down Expand Up @@ -232,9 +236,9 @@ sealed class DaxBubbleCta(
val ctaPixelParam: String,
val onboardingStore: OnboardingStore,
val appInstallStore: AppInstallStore
) : Cta {
) : Cta, ViewCta {

override fun apply(view: View) {
override fun showCta(view: View) {
val daxText = view.context.getString(description)
view.show()
view.alpha = 1f
Expand All @@ -243,8 +247,6 @@ sealed class DaxBubbleCta(
view.dialogTextCta.startTypingAnimation(daxText, true)
}

override fun createDialogCta(activity: FragmentActivity): DaxDialog? = null

override fun pixelCancelParameters(): Map<String, String?> = mapOf(Pixel.PixelParameter.CTA_SHOWN to ctaPixelParam)

override fun pixelOkParameters(): Map<String, String?> = mapOf(Pixel.PixelParameter.CTA_SHOWN to ctaPixelParam)
Expand Down Expand Up @@ -295,18 +297,17 @@ sealed class HomePanelCta(
override val shownPixel: Pixel.PixelName?,
override val okPixel: Pixel.PixelName?,
override val cancelPixel: Pixel.PixelName?
) : Cta {
) : Cta, ViewCta {

override fun apply(view: View) {
override fun showCta(view: View) {
view.ctaIcon.setImageResource(image)
view.ctaTitle.text = view.context.getString(title)
view.ctaSubtitle.text = view.context.getString(description)
view.ctaOkButton.text = view.context.getString(okButton)
view.ctaDismissButton.text = view.context.getString(dismissButton)
view.show()
}

override fun createDialogCta(activity: FragmentActivity): DaxDialog? = null

override fun pixelCancelParameters(): Map<String, String?> = emptyMap()

override fun pixelOkParameters(): Map<String, String?> = emptyMap()
Expand Down