Skip to content

Commit 57147f6

Browse files
authored
Split Omnibar: Ship review changes (#7083)
Task/Issue URL: https://app.asana.com/1/137249556945/project/1207418217763355/task/1211859724075437?focus=true ### Description - Fixes the thicker shadows in the tab manager - Prevents opening of the keyboard on NTP in most cases - Reduced bottom navigation height by 8dp ### Steps to test this PR _Feature 1_ - [ ] - [ ] ### UI changes | Before | After | | ------ | ----- | !(Upload before screenshot)|(Upload after screenshot)|
1 parent 7787bf3 commit 57147f6

File tree

13 files changed

+117
-387
lines changed

13 files changed

+117
-387
lines changed

android-design-system/design-system/src/main/res/layout/include_tab_switcher_toolbar_top.xml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,4 @@
3434
app:buttonGravity="center_vertical"
3535
app:popupTheme="@style/Widget.DuckDuckGo.PopUpOverflowMenu" />
3636

37-
<View
38-
android:layout_width="match_parent"
39-
android:layout_height="0.5dp"
40-
android:background="?attr/daxColorShade" />
41-
4237
</com.google.android.material.appbar.AppBarLayout>

android-design-system/design-system/src/main/res/values/design-system-dimensions.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@
4646
<dimen name="toolbarSize">60dp</dimen>
4747

4848
<!-- Navigation Bar -->
49-
<dimen name="navigationBarPaddingTop">12dp</dimen>
50-
<dimen name="navigationBarPaddingBottom">8dp</dimen>
49+
<dimen name="navigationBarPaddingTop">8dp</dimen>
50+
<dimen name="navigationBarPaddingBottom">4dp</dimen>
5151
<dimen name="navigationBarPaddingHorizontal">18dp</dimen>
5252
<dimen name="bottomNavIcon">24dp</dimen>
5353

app/src/main/java/com/duckduckgo/app/browser/BrowserTabViewModel.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -573,7 +573,6 @@ class BrowserTabViewModel @Inject constructor(
573573
@VisibleForTesting
574574
internal val autoCompleteStateFlow = MutableStateFlow("")
575575
private val fireproofWebsiteState: LiveData<List<FireproofWebsiteEntity>> = fireproofWebsiteRepository.getFireproofWebsites()
576-
private var alreadyShownKeyboard = false
577576

578577
@ExperimentalCoroutinesApi
579578
@FlowPreview
@@ -603,6 +602,7 @@ class BrowserTabViewModel @Inject constructor(
603602
private var isLinkOpenedInNewTab = false
604603
private var allowlistRefreshTriggerJob: Job? = null
605604
private var isCustomTabScreen: Boolean = false
605+
private var alreadyShownKeyboard: Boolean = false
606606

607607
private val fireproofWebsitesObserver =
608608
Observer<List<FireproofWebsiteEntity>> {

app/src/main/java/com/duckduckgo/app/browser/navigation/bar/BrowserNavigationBarViewIntegration.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import com.duckduckgo.app.browser.databinding.FragmentBrowserTabBinding
2121
import com.duckduckgo.app.browser.navigation.bar.view.BrowserNavigationBarObserver
2222
import com.duckduckgo.app.browser.navigation.bar.view.BrowserNavigationBarView
2323
import com.duckduckgo.app.browser.navigation.bar.view.BrowserNavigationBarView.ViewMode.Browser
24+
import com.duckduckgo.app.browser.navigation.bar.view.BrowserNavigationBarView.ViewMode.CustomTab
2425
import com.duckduckgo.app.browser.navigation.bar.view.BrowserNavigationBarView.ViewMode.NewTab
2526
import com.duckduckgo.app.browser.omnibar.Omnibar
2627
import com.duckduckgo.common.ui.view.gone
@@ -61,7 +62,7 @@ class BrowserNavigationBarViewIntegration(
6162
}
6263

6364
fun configureCustomTab() {
64-
navigationBarView.setCustomTab(isCustomTab = true)
65+
navigationBarView.setViewMode(CustomTab)
6566
}
6667

6768
fun configureBrowserViewMode() {

app/src/main/java/com/duckduckgo/app/browser/navigation/bar/view/BrowserNavigationBarView.kt

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -110,12 +110,6 @@ class BrowserNavigationBarView @JvmOverloads constructor(
110110

111111
var browserNavigationBarObserver: BrowserNavigationBarObserver? = null
112112

113-
fun setCustomTab(isCustomTab: Boolean) {
114-
doOnAttach {
115-
viewModel.setCustomTab(isCustomTab)
116-
}
117-
}
118-
119113
fun setViewMode(viewMode: ViewMode) {
120114
doOnAttach {
121115
viewModel.setViewMode(viewMode)
@@ -195,7 +189,8 @@ class BrowserNavigationBarView @JvmOverloads constructor(
195189
binding.tabsButton.isVisible = viewState.tabsButtonVisible
196190
binding.tabsButton.count = viewState.tabsCount
197191
binding.tabsButton.hasUnread = viewState.hasUnreadTabs
198-
binding.browserMenuHighlight?.isVisible = viewState.showBrowserMenuHighlight
192+
binding.browserMenuHighlight.isVisible = viewState.showBrowserMenuHighlight
193+
binding.shadowView.isVisible = viewState.showShadow
199194

200195
renderFireButtonPulseAnimation(enabled = viewState.fireButtonHighlighted)
201196
}
@@ -225,6 +220,7 @@ class BrowserNavigationBarView @JvmOverloads constructor(
225220
}
226221

227222
enum class ViewMode {
223+
CustomTab,
228224
NewTab,
229225
Browser,
230226
TabManager,

app/src/main/java/com/duckduckgo/app/browser/navigation/bar/view/BrowserNavigationBarViewModel.kt

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@ import com.duckduckgo.anvil.annotations.ContributesViewModel
2424
import com.duckduckgo.app.browser.defaultbrowsing.prompts.AdditionalDefaultBrowserPrompts
2525
import com.duckduckgo.app.browser.navigation.bar.view.BrowserNavigationBarView.ViewMode
2626
import com.duckduckgo.app.browser.navigation.bar.view.BrowserNavigationBarView.ViewMode.Browser
27+
import com.duckduckgo.app.browser.navigation.bar.view.BrowserNavigationBarView.ViewMode.CustomTab
2728
import com.duckduckgo.app.browser.navigation.bar.view.BrowserNavigationBarView.ViewMode.NewTab
29+
import com.duckduckgo.app.browser.navigation.bar.view.BrowserNavigationBarView.ViewMode.TabManager
2830
import com.duckduckgo.app.browser.navigation.bar.view.BrowserNavigationBarViewModel.Command.NotifyAutofillButtonClicked
2931
import com.duckduckgo.app.browser.navigation.bar.view.BrowserNavigationBarViewModel.Command.NotifyBookmarksButtonClicked
3032
import com.duckduckgo.app.browser.navigation.bar.view.BrowserNavigationBarViewModel.Command.NotifyFireButtonClicked
@@ -61,16 +63,13 @@ class BrowserNavigationBarViewModel @Inject constructor(
6163
private val _commands = Channel<Command>(capacity = Channel.CONFLATED)
6264
val commands: Flow<Command> = _commands.receiveAsFlow()
6365

64-
private val isCustomTab = MutableStateFlow(false)
6566
private val _viewState = MutableStateFlow(ViewState())
6667
val viewState = combine(
6768
_viewState.asStateFlow(),
68-
isCustomTab,
6969
tabRepository.flowTabs,
7070
additionalDefaultBrowserPrompts.highlightPopupMenu,
71-
) { state, isCustomTab, tabs, highlightOverflowMenu ->
71+
) { state, tabs, highlightOverflowMenu ->
7272
state.copy(
73-
isVisible = !isCustomTab,
7473
tabsCount = tabs.size,
7574
hasUnreadTabs = tabs.firstOrNull { !it.viewed } != null,
7675
showBrowserMenuHighlight = highlightOverflowMenu,
@@ -115,10 +114,6 @@ class BrowserNavigationBarViewModel @Inject constructor(
115114
_commands.trySend(NotifyBookmarksButtonClicked)
116115
}
117116

118-
fun setCustomTab(customTab: Boolean) {
119-
isCustomTab.update { customTab }
120-
}
121-
122117
fun setViewMode(viewMode: ViewMode) {
123118
when (viewMode) {
124119
NewTab -> {
@@ -139,13 +134,21 @@ class BrowserNavigationBarViewModel @Inject constructor(
139134
}
140135
}
141136

142-
ViewMode.TabManager -> {
137+
TabManager -> {
143138
_viewState.update {
144139
it.copy(
145140
newTabButtonVisible = true,
146141
autofillButtonVisible = false,
147142
tabsButtonVisible = false,
148143
bookmarksButtonVisible = false,
144+
showShadow = false,
145+
)
146+
}
147+
}
148+
CustomTab -> {
149+
_viewState.update {
150+
it.copy(
151+
isVisible = false,
149152
)
150153
}
151154
}
@@ -181,5 +184,6 @@ class BrowserNavigationBarViewModel @Inject constructor(
181184
val tabsCount: Int = 0,
182185
val hasUnreadTabs: Boolean = false,
183186
val showBrowserMenuHighlight: Boolean = false,
187+
val showShadow: Boolean = true,
184188
)
185189
}

app/src/main/java/com/duckduckgo/app/pixels/remoteconfig/AndroidBrowserConfigFeature.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,7 @@ interface AndroidBrowserConfigFeature {
193193
* If the remote feature is not present defaults to `false`
194194
*/
195195
@Toggle.DefaultValue(DefaultFeatureValue.FALSE)
196+
@Toggle.InternalAlwaysEnabled
196197
fun splitOmnibar(): Toggle
197198

198199
/**

app/src/main/java/com/duckduckgo/app/tabs/ui/TabSwitcherActivity.kt

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import androidx.recyclerview.widget.RecyclerView
3939
import androidx.recyclerview.widget.RecyclerView.OnScrollListener
4040
import com.duckduckgo.anvil.annotations.InjectWith
4141
import com.duckduckgo.app.browser.R
42+
import com.duckduckgo.app.browser.api.OmnibarRepository
4243
import com.duckduckgo.app.browser.databinding.ActivityTabSwitcherBinding
4344
import com.duckduckgo.app.browser.databinding.PopupTabsMenuBinding
4445
import com.duckduckgo.app.browser.favicon.FaviconManager
@@ -165,6 +166,9 @@ class TabSwitcherActivity :
165166
@Inject
166167
lateinit var onboardingExperimentFireAnimationHelper: OnboardingExperimentFireAnimationHelper
167168

169+
@Inject
170+
lateinit var omnibarRepository: OmnibarRepository
171+
168172
private val viewModel: TabSwitcherViewModel by bindViewModel()
169173

170174
private val tabsAdapter: TabSwitcherAdapter by lazy {
@@ -253,21 +257,26 @@ class TabSwitcherActivity :
253257
}
254258

255259
private fun configureNavigationBar() {
256-
binding.navigationBar.browserNavigationBarObserver =
257-
object : BrowserNavigationBarObserver {
258-
override fun onMenuButtonClicked() {
259-
showPopupMenu(binding.navigationBar.popupMenuAnchor.id)
260-
}
260+
if (omnibarRepository.omnibarType == OmnibarType.SPLIT) {
261+
binding.navigationBar.browserNavigationBarObserver =
262+
object : BrowserNavigationBarObserver {
263+
override fun onMenuButtonClicked() {
264+
showPopupMenu(binding.navigationBar.popupMenuAnchor.id)
265+
}
261266

262-
override fun onNewTabButtonClicked() {
263-
viewModel.onNewTabRequested()
264-
}
267+
override fun onNewTabButtonClicked() {
268+
viewModel.onNewTabRequested()
269+
}
265270

266-
override fun onFireButtonClicked() {
267-
viewModel.onFireButtonTapped()
271+
override fun onFireButtonClicked() {
272+
viewModel.onFireButtonTapped()
273+
}
268274
}
269-
}
270-
binding.navigationBar.setViewMode(BrowserNavigationBarView.ViewMode.TabManager)
275+
binding.navigationBar.setViewMode(BrowserNavigationBarView.ViewMode.TabManager)
276+
binding.navigationBar.show()
277+
} else {
278+
binding.navigationBar.gone()
279+
}
271280
}
272281

273282
override fun onSaveInstanceState(outState: Bundle) {

0 commit comments

Comments
 (0)