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
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,4 @@
app:buttonGravity="center_vertical"
app:popupTheme="@style/Widget.DuckDuckGo.PopUpOverflowMenu" />

<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:background="?attr/daxColorShade" />

</com.google.android.material.appbar.AppBarLayout>
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,8 @@
<dimen name="toolbarSize">60dp</dimen>

<!-- Navigation Bar -->
<dimen name="navigationBarPaddingTop">12dp</dimen>
<dimen name="navigationBarPaddingBottom">8dp</dimen>
<dimen name="navigationBarPaddingTop">8dp</dimen>
<dimen name="navigationBarPaddingBottom">4dp</dimen>
<dimen name="navigationBarPaddingHorizontal">18dp</dimen>
<dimen name="bottomNavIcon">24dp</dimen>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -573,7 +573,6 @@ class BrowserTabViewModel @Inject constructor(
@VisibleForTesting
internal val autoCompleteStateFlow = MutableStateFlow("")
private val fireproofWebsiteState: LiveData<List<FireproofWebsiteEntity>> = fireproofWebsiteRepository.getFireproofWebsites()
private var alreadyShownKeyboard = false

@ExperimentalCoroutinesApi
@FlowPreview
Expand Down Expand Up @@ -603,6 +602,7 @@ class BrowserTabViewModel @Inject constructor(
private var isLinkOpenedInNewTab = false
private var allowlistRefreshTriggerJob: Job? = null
private var isCustomTabScreen: Boolean = false
private var alreadyShownKeyboard: Boolean = false

private val fireproofWebsitesObserver =
Observer<List<FireproofWebsiteEntity>> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import com.duckduckgo.app.browser.databinding.FragmentBrowserTabBinding
import com.duckduckgo.app.browser.navigation.bar.view.BrowserNavigationBarObserver
import com.duckduckgo.app.browser.navigation.bar.view.BrowserNavigationBarView
import com.duckduckgo.app.browser.navigation.bar.view.BrowserNavigationBarView.ViewMode.Browser
import com.duckduckgo.app.browser.navigation.bar.view.BrowserNavigationBarView.ViewMode.CustomTab
import com.duckduckgo.app.browser.navigation.bar.view.BrowserNavigationBarView.ViewMode.NewTab
import com.duckduckgo.app.browser.omnibar.Omnibar
import com.duckduckgo.common.ui.view.gone
Expand Down Expand Up @@ -61,7 +62,7 @@ class BrowserNavigationBarViewIntegration(
}

fun configureCustomTab() {
navigationBarView.setCustomTab(isCustomTab = true)
navigationBarView.setViewMode(CustomTab)
}

fun configureBrowserViewMode() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,12 +110,6 @@ class BrowserNavigationBarView @JvmOverloads constructor(

var browserNavigationBarObserver: BrowserNavigationBarObserver? = null

fun setCustomTab(isCustomTab: Boolean) {
doOnAttach {
viewModel.setCustomTab(isCustomTab)
}
}

fun setViewMode(viewMode: ViewMode) {
doOnAttach {
viewModel.setViewMode(viewMode)
Expand Down Expand Up @@ -195,7 +189,8 @@ class BrowserNavigationBarView @JvmOverloads constructor(
binding.tabsButton.isVisible = viewState.tabsButtonVisible
binding.tabsButton.count = viewState.tabsCount
binding.tabsButton.hasUnread = viewState.hasUnreadTabs
binding.browserMenuHighlight?.isVisible = viewState.showBrowserMenuHighlight
binding.browserMenuHighlight.isVisible = viewState.showBrowserMenuHighlight
binding.shadowView.isVisible = viewState.showShadow

renderFireButtonPulseAnimation(enabled = viewState.fireButtonHighlighted)
}
Expand Down Expand Up @@ -225,6 +220,7 @@ class BrowserNavigationBarView @JvmOverloads constructor(
}

enum class ViewMode {
CustomTab,
NewTab,
Browser,
TabManager,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,9 @@ import com.duckduckgo.anvil.annotations.ContributesViewModel
import com.duckduckgo.app.browser.defaultbrowsing.prompts.AdditionalDefaultBrowserPrompts
import com.duckduckgo.app.browser.navigation.bar.view.BrowserNavigationBarView.ViewMode
import com.duckduckgo.app.browser.navigation.bar.view.BrowserNavigationBarView.ViewMode.Browser
import com.duckduckgo.app.browser.navigation.bar.view.BrowserNavigationBarView.ViewMode.CustomTab
import com.duckduckgo.app.browser.navigation.bar.view.BrowserNavigationBarView.ViewMode.NewTab
import com.duckduckgo.app.browser.navigation.bar.view.BrowserNavigationBarView.ViewMode.TabManager
import com.duckduckgo.app.browser.navigation.bar.view.BrowserNavigationBarViewModel.Command.NotifyAutofillButtonClicked
import com.duckduckgo.app.browser.navigation.bar.view.BrowserNavigationBarViewModel.Command.NotifyBookmarksButtonClicked
import com.duckduckgo.app.browser.navigation.bar.view.BrowserNavigationBarViewModel.Command.NotifyFireButtonClicked
Expand Down Expand Up @@ -61,16 +63,13 @@ class BrowserNavigationBarViewModel @Inject constructor(
private val _commands = Channel<Command>(capacity = Channel.CONFLATED)
val commands: Flow<Command> = _commands.receiveAsFlow()

private val isCustomTab = MutableStateFlow(false)
private val _viewState = MutableStateFlow(ViewState())
val viewState = combine(
_viewState.asStateFlow(),
isCustomTab,
tabRepository.flowTabs,
additionalDefaultBrowserPrompts.highlightPopupMenu,
) { state, isCustomTab, tabs, highlightOverflowMenu ->
) { state, tabs, highlightOverflowMenu ->
state.copy(
isVisible = !isCustomTab,
tabsCount = tabs.size,
hasUnreadTabs = tabs.firstOrNull { !it.viewed } != null,
showBrowserMenuHighlight = highlightOverflowMenu,
Expand Down Expand Up @@ -115,10 +114,6 @@ class BrowserNavigationBarViewModel @Inject constructor(
_commands.trySend(NotifyBookmarksButtonClicked)
}

fun setCustomTab(customTab: Boolean) {
isCustomTab.update { customTab }
}

fun setViewMode(viewMode: ViewMode) {
when (viewMode) {
NewTab -> {
Expand All @@ -139,13 +134,21 @@ class BrowserNavigationBarViewModel @Inject constructor(
}
}

ViewMode.TabManager -> {
TabManager -> {
_viewState.update {
it.copy(
newTabButtonVisible = true,
autofillButtonVisible = false,
tabsButtonVisible = false,
bookmarksButtonVisible = false,
showShadow = false,
)
}
}
CustomTab -> {
_viewState.update {
it.copy(
isVisible = false,
)
}
}
Expand Down Expand Up @@ -181,5 +184,6 @@ class BrowserNavigationBarViewModel @Inject constructor(
val tabsCount: Int = 0,
val hasUnreadTabs: Boolean = false,
val showBrowserMenuHighlight: Boolean = false,
val showShadow: Boolean = true,
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,7 @@ interface AndroidBrowserConfigFeature {
* If the remote feature is not present defaults to `false`
*/
@Toggle.DefaultValue(DefaultFeatureValue.FALSE)
@Toggle.InternalAlwaysEnabled
fun splitOmnibar(): Toggle

/**
Expand Down
33 changes: 21 additions & 12 deletions app/src/main/java/com/duckduckgo/app/tabs/ui/TabSwitcherActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView.OnScrollListener
import com.duckduckgo.anvil.annotations.InjectWith
import com.duckduckgo.app.browser.R
import com.duckduckgo.app.browser.api.OmnibarRepository
import com.duckduckgo.app.browser.databinding.ActivityTabSwitcherBinding
import com.duckduckgo.app.browser.databinding.PopupTabsMenuBinding
import com.duckduckgo.app.browser.favicon.FaviconManager
Expand Down Expand Up @@ -165,6 +166,9 @@ class TabSwitcherActivity :
@Inject
lateinit var onboardingExperimentFireAnimationHelper: OnboardingExperimentFireAnimationHelper

@Inject
lateinit var omnibarRepository: OmnibarRepository

private val viewModel: TabSwitcherViewModel by bindViewModel()

private val tabsAdapter: TabSwitcherAdapter by lazy {
Expand Down Expand Up @@ -253,21 +257,26 @@ class TabSwitcherActivity :
}

private fun configureNavigationBar() {
binding.navigationBar.browserNavigationBarObserver =
object : BrowserNavigationBarObserver {
override fun onMenuButtonClicked() {
showPopupMenu(binding.navigationBar.popupMenuAnchor.id)
}
if (omnibarRepository.omnibarType == OmnibarType.SPLIT) {
binding.navigationBar.browserNavigationBarObserver =
object : BrowserNavigationBarObserver {
override fun onMenuButtonClicked() {
showPopupMenu(binding.navigationBar.popupMenuAnchor.id)
}

override fun onNewTabButtonClicked() {
viewModel.onNewTabRequested()
}
override fun onNewTabButtonClicked() {
viewModel.onNewTabRequested()
}

override fun onFireButtonClicked() {
viewModel.onFireButtonTapped()
override fun onFireButtonClicked() {
viewModel.onFireButtonTapped()
}
}
}
binding.navigationBar.setViewMode(BrowserNavigationBarView.ViewMode.TabManager)
binding.navigationBar.setViewMode(BrowserNavigationBarView.ViewMode.TabManager)
binding.navigationBar.show()
} else {
binding.navigationBar.gone()
}
}

override fun onSaveInstanceState(outState: Bundle) {
Expand Down
Loading
Loading