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
20 changes: 14 additions & 6 deletions app/src/main/java/com/duckduckgo/app/browser/BrowserActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -990,6 +990,7 @@ open class BrowserActivity : DuckDuckGoActivity() {
if (this::omnibarToolbarMockupBottomBinding.isInitialized) {
omnibarToolbarMockupBottomBinding.appBarLayoutMockup.visibility = View.GONE
}
binding.navigationBarMockup.root.gone()
},
300,
)
Expand Down Expand Up @@ -1399,11 +1400,11 @@ open class BrowserActivity : DuckDuckGoActivity() {
when (settingsDataStore.omnibarType) {
OmnibarType.SINGLE_TOP, OmnibarType.SPLIT -> {
if (Build.VERSION.SDK_INT < 28) {
binding.topMockupSingleToolbar.mockOmniBarContainerShadow.cardElevation = 2f.toPx(this)
binding.topMockupToolbar.mockOmniBarContainerShadow.cardElevation = 2f.toPx(this)
}

binding.bottomMockupSingleToolbar.appBarLayoutMockup.gone()
omnibarToolbarMockupBinding = binding.topMockupSingleToolbar
binding.bottomMockupToolbar.appBarLayoutMockup.gone()
omnibarToolbarMockupBinding = binding.topMockupToolbar

if (!duckAiFeatureState.showOmnibarShortcutOnNtpAndOnFocus.value) {
omnibarToolbarMockupBinding.aiChatIconMockup.isVisible = false
Expand All @@ -1412,15 +1413,22 @@ open class BrowserActivity : DuckDuckGoActivity() {
if (Build.VERSION.SDK_INT >= 28) {
omnibarToolbarMockupBinding.mockOmniBarContainerShadow.addBottomShadow()
}

if (settingsDataStore.omnibarType == OmnibarType.SPLIT) {
binding.topMockupToolbar.tabsMenu.gone()
binding.topMockupToolbar.browserMenu.gone()
binding.topMockupToolbar.fireIconMenu.gone()
binding.navigationBarMockup.root.show()
}
}

OmnibarType.SINGLE_BOTTOM -> {
if (Build.VERSION.SDK_INT < 28) {
binding.bottomMockupSingleToolbar.mockOmniBarContainerShadow.cardElevation = 0.5f.toPx(this)
binding.bottomMockupToolbar.mockOmniBarContainerShadow.cardElevation = 0.5f.toPx(this)
}

binding.topMockupSingleToolbar.appBarLayoutMockup.gone()
omnibarToolbarMockupBottomBinding = binding.bottomMockupSingleToolbar
binding.topMockupToolbar.appBarLayoutMockup.gone()
omnibarToolbarMockupBottomBinding = binding.bottomMockupToolbar

if (!duckAiFeatureState.showOmnibarShortcutOnNtpAndOnFocus.value) {
omnibarToolbarMockupBottomBinding.aiChatIconMockup.isVisible = false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1631,7 +1631,7 @@ class BrowserTabFragment :
.flowWithLifecycle(lifecycle, Lifecycle.State.RESUMED)
.collectLatest { hasFavorites ->
binding.includeNewBrowserTab.topNtpOutlineStroke.isVisible = hasFavorites
binding.includeNewBrowserTab.bottomNtpOutlineStroke.isVisible = hasFavorites
binding.includeNewBrowserTab.bottomNtpOutlineStroke.isVisible = hasFavorites && !omnibarFeatureRepository.isSplitOmnibarEnabled
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -163,9 +163,9 @@ class BrowserNavigationBarViewModel @Inject constructor(
}

data class ViewState(
val isVisible: Boolean = false,
val newTabButtonVisible: Boolean = false,
val autofillButtonVisible: Boolean = true,
val isVisible: Boolean = true,
val newTabButtonVisible: Boolean = true,
val autofillButtonVisible: Boolean = false,
val bookmarksButtonVisible: Boolean = true,
val fireButtonVisible: Boolean = true,
val fireButtonHighlighted: Boolean = false,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -184,11 +184,16 @@ class Omnibar(
binding.rootView.removeView(binding.singleOmnibarLayoutBottom)

return when (omnibarType) {
OmnibarType.SINGLE_TOP, OmnibarType.SPLIT -> {
OmnibarType.SINGLE_TOP -> {
binding.rootView.removeView(binding.omnibarLayoutBottom)
binding.omnibarLayoutTop
}

OmnibarType.SPLIT -> {
binding.rootView.removeView(binding.omnibarLayoutBottom)
binding.bottomBrowserOutlineStroke.gone()
binding.includeNewBrowserTab.bottomNtpOutlineStroke.gone()
binding.omnibarLayoutTop
}
OmnibarType.SINGLE_BOTTOM -> {
binding.rootView.removeView(binding.omnibarLayoutTop)
adjustCoordinatorLayoutBehaviorForBottomOmnibar()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -779,9 +779,12 @@ class OmnibarLayout @JvmOverloads constructor(
showSpacer = viewState.showClearButton || viewState.showVoiceSearch,
)

if (omnibarAnimationManager.isFeatureEnabled() &&
previousTransitionState != null &&
newTransitionState != previousTransitionState
if (omnibarAnimationManager.isFeatureEnabled() && previousTransitionState != null &&
(
newTransitionState.showFireIcon != previousTransitionState?.showFireIcon ||
newTransitionState.showTabsMenu != previousTransitionState?.showTabsMenu ||
newTransitionState.showBrowserMenu != previousTransitionState?.showBrowserMenu
)
) {
TransitionManager.beginDelayedTransition(toolbarContainer, omniBarButtonTransitionSet)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ import com.duckduckgo.app.statistics.pixels.Pixel.PixelType.Unique
import com.duckduckgo.app.tabs.model.TabRepository
import com.duckduckgo.app.trackerdetection.model.Entity
import com.duckduckgo.browser.api.UserBrowserProperties
import com.duckduckgo.browser.ui.omnibar.OmnibarType
import com.duckduckgo.common.utils.DispatcherProvider
import com.duckduckgo.di.scopes.FragmentScope
import com.duckduckgo.duckchat.api.DuckAiFeatureState
Expand Down Expand Up @@ -103,9 +104,14 @@ class OmnibarLayoutViewModel @Inject constructor(
private val serpEasterEggLogosToggles: SerpEasterEggLogosToggles,
) : ViewModel() {

private val isSplitOmnibarEnabled = settingsDataStore.omnibarType == OmnibarType.SPLIT

private val _viewState = MutableStateFlow(
ViewState(
showChatMenu = duckAiFeatureState.showOmnibarShortcutInAllStates.value,
showFireIcon = !isSplitOmnibarEnabled,
showTabsMenu = !isSplitOmnibarEnabled,
showBrowserMenu = !isSplitOmnibarEnabled,
),
)

Expand Down Expand Up @@ -256,7 +262,7 @@ class OmnibarLayoutViewModel @Inject constructor(
) {
logcat { "Omnibar: onOmnibarFocusChanged" }
val showClearButton = hasFocus && inputFieldText.isNotBlank()
val showControls = inputFieldText.isBlank()
val showControls = inputFieldText.isBlank() && !isSplitOmnibarEnabled

if (hasFocus) {
viewModelScope.launch {
Expand Down Expand Up @@ -326,9 +332,9 @@ class OmnibarLayoutViewModel @Inject constructor(
previousLeadingIconState = null,
highlightFireButton = HighlightableButton.Visible(highlighted = false),
showClearButton = false,
showTabsMenu = true,
showFireIcon = true,
showBrowserMenu = true,
showTabsMenu = !isSplitOmnibarEnabled,
showFireIcon = !isSplitOmnibarEnabled,
showBrowserMenu = !isSplitOmnibarEnabled,
showVoiceSearch = shouldShowVoiceSearch(
hasFocus = false,
query = _viewState.value.omnibarText,
Expand Down Expand Up @@ -481,17 +487,16 @@ class OmnibarLayoutViewModel @Inject constructor(
AppPixelName.ADDRESS_BAR_SERP_ENTRY_CLEARED,
AppPixelName.ADDRESS_BAR_WEBSITE_ENTRY_CLEARED,
)
val showControls = true

_viewState.update {
it.copy(
omnibarText = "",
updateOmnibarText = true,
expanded = true,
showClearButton = false,
showBrowserMenu = showControls,
showTabsMenu = showControls,
showFireIcon = showControls,
showBrowserMenu = !isSplitOmnibarEnabled,
showTabsMenu = !isSplitOmnibarEnabled,
showFireIcon = !isSplitOmnibarEnabled,
)
}
}
Expand Down Expand Up @@ -546,7 +551,7 @@ class OmnibarLayoutViewModel @Inject constructor(
deleteLastCharacter: Boolean,
) {
val showClearButton = hasFocus && query.isNotBlank()
val showControls = !hasFocus || query.isBlank()
val showControls = (!hasFocus || query.isBlank()) && !isSplitOmnibarEnabled

logcat { "Omnibar: onInputStateChanged query $query hasFocus $hasFocus clearQuery $clearQuery deleteLastCharacter $deleteLastCharacter" }

Expand Down
4 changes: 0 additions & 4 deletions app/src/main/java/com/duckduckgo/app/tabs/TabFeatureFlags.kt
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,4 @@ interface TabManagerFeatureFlags {

@Toggle.DefaultValue(DefaultFeatureValue.TRUE)
fun tabInsertionFixes(): Toggle

@Toggle.InternalAlwaysEnabled
@Toggle.DefaultValue(DefaultFeatureValue.FALSE)
fun newToolbarFeature(): Toggle
}
Loading
Loading