Skip to content

Commit 8e780e0

Browse files
committed
add duck.ai omnibar
1 parent 14095de commit 8e780e0

File tree

4 files changed

+16
-7
lines changed

4 files changed

+16
-7
lines changed

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

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ import com.duckduckgo.di.scopes.ActivityScope
111111
import com.duckduckgo.duckchat.api.DuckAiFeatureState
112112
import com.duckduckgo.duckchat.api.DuckChat
113113
import com.duckduckgo.duckchat.impl.ui.DuckChatWebViewFragment
114+
import com.duckduckgo.duckchat.impl.ui.DuckChatWebViewFragment.Companion.KEY_DUCK_AI_TABS
114115
import com.duckduckgo.duckchat.impl.ui.DuckChatWebViewFragment.Companion.KEY_DUCK_AI_URL
115116
import com.duckduckgo.navigation.api.GlobalActivityStarter
116117
import com.duckduckgo.savedsites.impl.bookmarks.BookmarksActivity.Companion.SAVED_SITE_URL_EXTRA
@@ -753,7 +754,7 @@ open class BrowserActivity : DuckDuckGoActivity() {
753754
is Command.ShowSystemDefaultAppsActivity -> showSystemDefaultAppsActivity(command.intent)
754755
is Command.ShowSystemDefaultBrowserDialog -> showSystemDefaultBrowserDialog(command.intent)
755756
is Command.ShowUndoDeleteTabsMessage -> showTabsDeletedSnackbar(command.tabIds)
756-
is Command.OpenDuckChat -> openDuckChat(command.duckChatUrl, command.duckChatSessionActive, command.withTransition)
757+
is Command.OpenDuckChat -> openDuckChat(command.duckChatUrl, command.duckChatSessionActive, command.withTransition, command.tabs)
757758
Command.LaunchTabSwitcher -> currentTab?.launchTabSwitcherAfterTabsUndeleted()
758759
}
759760
}
@@ -856,15 +857,16 @@ open class BrowserActivity : DuckDuckGoActivity() {
856857
url: String?,
857858
duckChatSessionActive: Boolean,
858859
withTransition: Boolean,
860+
tabs: Int,
859861
) {
860862
duckAiFragment?.let { fragment ->
861863
if (duckChatSessionActive) {
862864
restoreDuckChat(fragment, withTransition)
863865
} else {
864-
launchNewDuckChat(url, withTransition)
866+
launchNewDuckChat(url, withTransition, tabs)
865867
}
866868
} ?: run {
867-
launchNewDuckChat(url, withTransition)
869+
launchNewDuckChat(url, withTransition, tabs)
868870
}
869871

870872
currentTab?.getOmnibar()?.omnibarView?.omnibarTextInput?.let {
@@ -875,6 +877,7 @@ open class BrowserActivity : DuckDuckGoActivity() {
875877
private fun launchNewDuckChat(
876878
duckChatUrl: String?,
877879
withTransition: Boolean,
880+
tabs: Int,
878881
) {
879882
val wasFragmentVisible = duckAiFragment?.isVisible ?: false
880883
val fragment =
@@ -883,6 +886,7 @@ open class BrowserActivity : DuckDuckGoActivity() {
883886
arguments =
884887
Bundle().apply {
885888
putString(KEY_DUCK_AI_URL, duckChatUrl)
889+
putInt(KEY_DUCK_AI_TABS, tabs)
886890
}
887891
}
888892
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ class BrowserViewModel @Inject constructor(
133133
data class ShowSystemDefaultBrowserDialog(val intent: Intent) : Command()
134134
data class ShowSystemDefaultAppsActivity(val intent: Intent) : Command()
135135
data class ShowUndoDeleteTabsMessage(val tabIds: List<String>) : Command()
136-
data class OpenDuckChat(val duckChatUrl: String?, val duckChatSessionActive: Boolean, val withTransition: Boolean) : Command()
136+
data class OpenDuckChat(val duckChatUrl: String?, val duckChatSessionActive: Boolean, val withTransition: Boolean, val tabs: Int) : Command()
137137
}
138138

139139
var viewState: MutableLiveData<ViewState> = MutableLiveData<ViewState>().also {
@@ -464,7 +464,7 @@ class BrowserViewModel @Inject constructor(
464464

465465
fun openDuckChat(duckChatUrl: String?, duckChatSessionActive: Boolean, withTransition: Boolean) {
466466
logcat(INFO) { "Duck.ai openDuckChat duckChatSessionActive $duckChatSessionActive" }
467-
command.value = OpenDuckChat(duckChatUrl, duckChatSessionActive, withTransition)
467+
command.value = OpenDuckChat(duckChatUrl, duckChatSessionActive, withTransition, tabs.value.size)
468468
}
469469
}
470470

duckchat/duckchat-impl/src/main/java/com/duckduckgo/duckchat/impl/ui/DuckChatWebViewFragment.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,7 @@ open class DuckChatWebViewFragment : DuckDuckGoFragment(R.layout.activity_duck_c
163163

164164
// private val toolbar: Toolbar? by lazy { binding.includeToolbar.toolbar }
165165
internal val simpleWebview: WebView by lazy { binding.simpleWebview }
166+
internal val tabSwitcher by lazy { binding.inputFieldTabsMenu }
166167

167168
@SuppressLint("SetJavaScriptEnabled")
168169
override fun onViewCreated(
@@ -180,6 +181,7 @@ open class DuckChatWebViewFragment : DuckDuckGoFragment(R.layout.activity_duck_c
180181
// }
181182

182183
val url = arguments?.getString(KEY_DUCK_AI_URL) ?: "https://duckduckgo.com/?q=DuckDuckGo+AI+Chat&ia=chat&duckai=5"
184+
val tabs = arguments?.getInt(KEY_DUCK_AI_TABS) ?: 0
183185

184186
simpleWebview.let {
185187
it.webViewClient = webViewClient
@@ -305,6 +307,8 @@ open class DuckChatWebViewFragment : DuckDuckGoFragment(R.layout.activity_duck_c
305307
pendingUploadTask = null
306308
}
307309

310+
tabSwitcher.count = tabs
311+
308312
// Observe ViewModel commands
309313
viewModel.commands
310314
.onEach { command ->
@@ -604,6 +608,6 @@ open class DuckChatWebViewFragment : DuckDuckGoFragment(R.layout.activity_duck_c
604608
"Mozilla/5.0 (Linux; Android 16) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/124.0.0.0 Mobile DuckDuckGo/5 Safari/537.36"
605609
private const val REQUEST_CODE_CHOOSE_FILE = 100
606610
const val KEY_DUCK_AI_URL: String = "KEY_DUCK_AI_URL"
607-
const val KEY_DUCK_AI_URL: String = "KEY_TABS_URL"
611+
const val KEY_DUCK_AI_TABS: String = "KEY_DUCK_AI_TABS"
608612
}
609613
}

duckchat/duckchat-impl/src/main/res/layout/activity_duck_chat_webview.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
android:layout_width="match_parent"
2929
android:layout_height="?attr/actionBarSize"
3030
android:layout_marginStart="@dimen/omnibarCardMarginHorizontal"
31-
android:layout_marginTop="@dimen/omnibarCardMarginBottom"
31+
android:paddingTop="2dp"
3232
android:orientation="horizontal"
3333
app:layout_constraintEnd_toEndOf="parent"
3434
app:layout_constraintStart_toStartOf="parent"
@@ -40,6 +40,7 @@
4040
android:layout_width="0dp"
4141
android:layout_height="wrap_content"
4242
app:cardElevation="0dp"
43+
android:layout_marginTop="2dp"
4344
app:layout_constraintEnd_toStartOf="@id/inputModeMainButtonsContainer"
4445
app:layout_constraintStart_toStartOf="parent"
4546
app:layout_constraintTop_toTopOf="parent"

0 commit comments

Comments
 (0)