@@ -39,15 +39,19 @@ import android.webkit.WebView
3939import androidx.annotation.AnyThread
4040import androidx.appcompat.widget.Toolbar
4141import androidx.core.content.ContextCompat
42+ import androidx.lifecycle.Lifecycle
4243import androidx.lifecycle.ViewModelProvider
44+ import androidx.lifecycle.flowWithLifecycle
4345import androidx.lifecycle.lifecycleScope
4446import com.duckduckgo.anvil.annotations.InjectWith
4547import com.duckduckgo.app.di.AppCoroutineScope
4648import com.duckduckgo.app.tabs.BrowserNav
4749import com.duckduckgo.appbuildconfig.api.AppBuildConfig
4850import com.duckduckgo.common.ui.DuckDuckGoFragment
4951import com.duckduckgo.common.ui.view.dialog.ActionBottomSheetDialog
52+ import com.duckduckgo.common.ui.view.gone
5053import com.duckduckgo.common.ui.view.makeSnackbarWithNoBottomInset
54+ import com.duckduckgo.common.ui.view.show
5155import com.duckduckgo.common.ui.viewbinding.viewBinding
5256import com.duckduckgo.common.utils.ConflatedJob
5357import com.duckduckgo.common.utils.DispatcherProvider
@@ -174,9 +178,6 @@ open class DuckChatWebViewFragment : DuckDuckGoFragment(R.layout.activity_duck_c
174178 super .onViewCreated(view, savedInstanceState)
175179
176180 val url = arguments?.getString(KEY_DUCK_AI_URL ) ? : " https://duckduckgo.com/?q=DuckDuckGo+AI+Chat&ia=chat&duckai=5"
177- val tabs = arguments?.getInt(KEY_DUCK_AI_TABS ) ? : 0
178-
179- configureOmnibar(tabs)
180181
181182 simpleWebview.let {
182183 it.webViewClient = webViewClient
@@ -302,7 +303,15 @@ open class DuckChatWebViewFragment : DuckDuckGoFragment(R.layout.activity_duck_c
302303 pendingUploadTask = null
303304 }
304305
305- // Observe ViewModel commands
306+ observeViewModel()
307+ }
308+
309+ private fun observeViewModel () {
310+ viewModel.viewState
311+ .flowWithLifecycle(lifecycle, Lifecycle .State .RESUMED )
312+ .onEach { renderViewState(it) }
313+ .launchIn(lifecycleScope)
314+
306315 viewModel.commands
307316 .onEach { command ->
308317 when (command) {
@@ -318,33 +327,58 @@ open class DuckChatWebViewFragment : DuckDuckGoFragment(R.layout.activity_duck_c
318327 }.launchIn(lifecycleScope)
319328 }
320329
321- private fun configureOmnibar (tabs : Int ) {
322- if (false ) {
323- toolbar?.let {
324- it.setNavigationIcon(com.duckduckgo.mobile.android.R .drawable.ic_arrow_left_24)
325- it.setNavigationOnClickListener {
326- requireActivity().onBackPressed()
327- }
328- it.setTitle(R .string.duck_chat_title)
329- }
330+ private fun renderViewState (viewState : DuckChatWebViewViewModel .ViewState ) {
331+ if (viewState.isFullScreenModeEnabled) {
332+ configureFullscreenMode()
330333 } else {
331- duckChatOmnibar?.setOmnibarItemPressedListener(
332- object : DuckChatOmnibarLayout .ItemPressedListener {
333- override fun onTabsButtonPressed () {
334- TODO (" Not yet implemented" )
335- }
334+ configureLegacyMode()
335+ }
336+ }
336337
337- override fun onFireButtonPressed () {
338- TODO ( " Not yet implemented " )
339- }
338+ private fun configureLegacyMode () {
339+ configureLegacyOmnibar( )
340+ }
340341
341- override fun onBrowserMenuPressed () {
342- TODO (" Not yet implemented" )
343- }
344- },
345- )
346- duckChatOmnibar?.setTabsCount(tabs)
342+ private fun configureFullscreenMode () {
343+ configureTabs()
344+ configureFullscreenOmnibar()
345+ }
346+
347+ private fun configureTabs () {
348+ val tabs = arguments?.getInt(KEY_DUCK_AI_TABS ) ? : 0
349+ duckChatOmnibar?.setTabsCount(tabs)
350+ }
351+
352+ private fun configureLegacyOmnibar () {
353+ toolbar?.let {
354+ it.setNavigationIcon(com.duckduckgo.mobile.android.R .drawable.ic_arrow_left_24)
355+ it.setNavigationOnClickListener {
356+ requireActivity().onBackPressed()
357+ }
358+ it.setTitle(R .string.duck_chat_title)
347359 }
360+ duckChatOmnibar?.gone()
361+ }
362+
363+ private fun configureFullscreenOmnibar () {
364+ root.findViewById<View >(R .id.includeToolbar).gone()
365+ duckChatOmnibar?.show()
366+
367+ duckChatOmnibar?.setOmnibarItemPressedListener(
368+ object : DuckChatOmnibarLayout .ItemPressedListener {
369+ override fun onTabsButtonPressed () {
370+ Snackbar .make(root, " Tabs" , Snackbar .LENGTH_SHORT ).show()
371+ }
372+
373+ override fun onFireButtonPressed () {
374+ Snackbar .make(root, " Fire" , Snackbar .LENGTH_SHORT ).show()
375+ }
376+
377+ override fun onBrowserMenuPressed () {
378+ Snackbar .make(root, " Menu" , Snackbar .LENGTH_SHORT ).show()
379+ }
380+ },
381+ )
348382 }
349383
350384 data class FileChooserRequestedParams (
0 commit comments