Skip to content

Commit 2eef2ed

Browse files
committed
Hide the menu buttons in input screen when split omnibar enabled
1 parent e2345be commit 2eef2ed

File tree

2 files changed

+35
-1
lines changed

2 files changed

+35
-1
lines changed

duckchat/duckchat-impl/src/main/java/com/duckduckgo/duckchat/impl/inputscreen/ui/viewmodel/InputScreenViewModel.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ import androidx.lifecycle.ViewModel
2121
import androidx.lifecycle.ViewModelProvider
2222
import androidx.lifecycle.viewModelScope
2323
import com.duckduckgo.app.browser.UriString.Companion.isWebUrl
24+
import com.duckduckgo.app.browser.api.OmnibarRepository
25+
import com.duckduckgo.app.browser.omnibar.OmnibarType
2426
import com.duckduckgo.app.di.AppCoroutineScope
2527
import com.duckduckgo.app.statistics.pixels.Pixel
2628
import com.duckduckgo.app.statistics.pixels.Pixel.PixelType.Daily
@@ -126,6 +128,7 @@ class InputScreenViewModel @AssistedInject constructor(
126128
private val inputScreenDiscoveryFunnel: InputScreenDiscoveryFunnel,
127129
private val inputScreenSessionUsageMetric: InputScreenSessionUsageMetric,
128130
private val inputScreenConfigResolver: InputScreenConfigResolver,
131+
private val omnibarRepository: OmnibarRepository,
129132
) : ViewModel() {
130133

131134
private val autoComplete: AutoComplete = autoCompleteFactory.create(
@@ -646,7 +649,8 @@ class InputScreenViewModel @AssistedInject constructor(
646649

647650
private fun canShowMainButtons() = searchInputTextState.value.isEmpty() &&
648651
userSelectedMode == SEARCH &&
649-
inputScreenConfigResolver.mainButtonsEnabled()
652+
inputScreenConfigResolver.mainButtonsEnabled() &&
653+
omnibarRepository.omnibarType != OmnibarType.SPLIT
650654

651655
class InputScreenViewModelProviderFactory(
652656
private val assistedFactory: InputScreenViewModelFactory,

duckchat/duckchat-impl/src/test/kotlin/com/duckduckgo/duckchat/impl/ui/inputscreen/InputScreenViewModelTest.kt

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import android.content.Intent
44
import androidx.arch.core.executor.testing.InstantTaskExecutorRule
55
import androidx.test.ext.junit.runners.AndroidJUnit4
66
import app.cash.turbine.test
7+
import com.duckduckgo.app.browser.api.OmnibarRepository
8+
import com.duckduckgo.app.browser.omnibar.OmnibarType
79
import com.duckduckgo.app.statistics.pixels.Pixel
810
import com.duckduckgo.app.statistics.pixels.Pixel.PixelType.Count
911
import com.duckduckgo.app.statistics.pixels.Pixel.PixelType.Daily
@@ -82,6 +84,7 @@ class InputScreenViewModelTest {
8284
private val inputScreenDiscoveryFunnel: InputScreenDiscoveryFunnel = mock()
8385
private val inputScreenSessionUsageMetric: InputScreenSessionUsageMetric = mock()
8486
private val inputScreenConfigResolver: InputScreenConfigResolver = mock()
87+
private val omnibarRepository: OmnibarRepository = mock()
8588

8689
@Before
8790
fun setup() =
@@ -94,6 +97,7 @@ class InputScreenViewModelTest {
9497
whenever(duckChat.wasOpenedBefore()).thenReturn(false)
9598
whenever(inputScreenConfigResolver.useTopBar()).thenReturn(true)
9699
whenever(voiceSearchAvailability.isVoiceSearchAvailable).thenReturn(true)
100+
whenever(omnibarRepository.omnibarType).thenReturn(OmnibarType.SINGLE_TOP)
97101
}
98102

99103
private fun createViewModel(currentOmnibarText: String = ""): InputScreenViewModel =
@@ -111,6 +115,7 @@ class InputScreenViewModelTest {
111115
inputScreenDiscoveryFunnel = inputScreenDiscoveryFunnel,
112116
inputScreenSessionUsageMetric = inputScreenSessionUsageMetric,
113117
inputScreenConfigResolver = inputScreenConfigResolver,
118+
omnibarRepository = omnibarRepository,
114119
)
115120

116121
@Test
@@ -1970,4 +1975,29 @@ class InputScreenViewModelTest {
19701975

19711976
verify(autoComplete).fireAutocompletePixel(suggestions, deviceAppSuggestion, experimentalInputScreen = true)
19721977
}
1978+
1979+
@Test
1980+
fun `when using split omnibar and search mode selected with empty text then mainButtonsVisible is false`() =
1981+
runTest {
1982+
whenever(inputScreenConfigResolver.mainButtonsEnabled()).thenReturn(true)
1983+
whenever(omnibarRepository.omnibarType).thenReturn(OmnibarType.SPLIT)
1984+
val viewModel = createViewModel("")
1985+
1986+
viewModel.onSearchSelected()
1987+
1988+
assertFalse(viewModel.visibilityState.value.mainButtonsVisible)
1989+
}
1990+
1991+
@Test
1992+
fun `when user deletes all text in search mode and omnibar is SPLIT then buttons are not visible`() =
1993+
runTest {
1994+
whenever(inputScreenConfigResolver.mainButtonsEnabled()).thenReturn(true)
1995+
whenever(omnibarRepository.omnibarType).thenReturn(OmnibarType.SPLIT)
1996+
val viewModel = createViewModel("")
1997+
viewModel.onSearchSelected()
1998+
1999+
viewModel.onSearchInputTextChanged("")
2000+
2001+
assertFalse(viewModel.visibilityState.value.mainButtonsVisible)
2002+
}
19732003
}

0 commit comments

Comments
 (0)