Skip to content

Commit 47de951

Browse files
authored
Switch to tab from Input Screen (#6355)
Task/Issue URL: https://app.asana.com/1/137249556945/project/488551667048375/task/1210706812806825?focus=true ### Description - Switches to tab when an autocomplete tab item is clicked. ### Steps to test this PR - [ ] Open different tabs in the browser - [ ] Type the query/address of the other tab - [ ] Tap the switch to tab autocomplete item - [ ] Verify that the tab is switched
1 parent dd96f07 commit 47de951

File tree

4 files changed

+25
-6
lines changed

4 files changed

+25
-6
lines changed

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

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package com.duckduckgo.app.browser
1919
import android.Manifest
2020
import android.animation.LayoutTransition
2121
import android.annotation.SuppressLint
22+
import android.app.Activity.RESULT_CANCELED
2223
import android.app.Activity.RESULT_OK
2324
import android.app.PendingIntent
2425
import android.content.ActivityNotFoundException
@@ -286,6 +287,7 @@ import com.duckduckgo.downloads.api.FileDownloader
286287
import com.duckduckgo.downloads.api.FileDownloader.PendingFileDownload
287288
import com.duckduckgo.duckchat.api.DuckChat
288289
import com.duckduckgo.duckchat.impl.inputscreen.ui.InputScreenActivity.Companion.QUERY
290+
import com.duckduckgo.duckchat.impl.inputscreen.ui.InputScreenActivity.Companion.TAB_ID
289291
import com.duckduckgo.duckchat.impl.inputscreen.ui.InputScreenActivityParams
290292
import com.duckduckgo.duckplayer.api.DuckPlayer
291293
import com.duckduckgo.duckplayer.api.DuckPlayerSettingsNoParams
@@ -870,11 +872,21 @@ class BrowserTabFragment :
870872

871873
private val searchInterstitialLauncher =
872874
registerForActivityResult(StartActivityForResult()) { result ->
873-
val query = result.data?.getStringExtra(QUERY) ?: return@registerForActivityResult
874-
if (result.resultCode == RESULT_OK) {
875-
submitQuery(query)
876-
} else {
877-
omnibar.setDraftTextIfNtp(query)
875+
val data = result.data ?: return@registerForActivityResult
876+
877+
when (result.resultCode) {
878+
RESULT_OK -> {
879+
data.getStringExtra(QUERY)?.let { query ->
880+
submitQuery(query)
881+
} ?: data.getStringExtra(TAB_ID)?.let { tabId ->
882+
browserActivity?.openExistingTab(tabId)
883+
}
884+
}
885+
RESULT_CANCELED -> {
886+
data.getStringExtra(QUERY)?.let { query ->
887+
omnibar.setDraftTextIfNtp(query)
888+
}
889+
}
878890
}
879891
}
880892

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ class InputScreenActivity : DuckDuckGoActivity() {
5252
companion object {
5353
// TODO: This is in an :impl module and accessed directly from :app module, it should be moved to an API
5454
const val QUERY = "query"
55+
const val TAB_ID = "tab_id"
56+
5557
const val TRANSITION_DURATION = 300L
5658
const val TRANSITION_INTERPOLATOR_TENSION = 1F
5759
}

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ import com.duckduckgo.duckchat.impl.inputscreen.ui.command.Command
4141
import com.duckduckgo.duckchat.impl.inputscreen.ui.command.Command.EditWithSelectedQuery
4242
import com.duckduckgo.duckchat.impl.inputscreen.ui.command.Command.SwitchModeToChat
4343
import com.duckduckgo.duckchat.impl.inputscreen.ui.command.Command.SwitchModeToSearch
44+
import com.duckduckgo.duckchat.impl.inputscreen.ui.command.Command.SwitchToTab
4445
import com.duckduckgo.duckchat.impl.inputscreen.ui.command.Command.UserSubmittedQuery
4546
import com.duckduckgo.duckchat.impl.inputscreen.ui.tabs.InputScreenPagerAdapter
4647
import com.duckduckgo.duckchat.impl.inputscreen.ui.viewmodel.InputScreenViewModel
@@ -132,6 +133,11 @@ class InputScreenFragment : DuckDuckGoFragment(R.layout.fragment_input_screen) {
132133
when (command) {
133134
is UserSubmittedQuery -> binding.inputModeWidget.submitMessage(command.query)
134135
is EditWithSelectedQuery -> binding.inputModeWidget.text = command.query
136+
is SwitchToTab -> {
137+
val data = Intent().putExtra(InputScreenActivity.TAB_ID, command.tabId)
138+
requireActivity().setResult(Activity.RESULT_OK, data)
139+
exitInterstitial()
140+
}
135141
SwitchModeToSearch -> {
136142
binding.viewPager.setCurrentItem(0, false)
137143
}

duckchat/duckchat-impl/src/main/java/com/duckduckgo/duckchat/impl/inputscreen/ui/viewmodel/InputScreenViewModel.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,6 @@ class InputScreenViewModel @Inject constructor(
208208
}
209209

210210
private fun onUserSwitchedToTab(tabId: String) {
211-
// TODO: handle switch to tab
212211
command.value = SwitchToTab(tabId)
213212
}
214213

0 commit comments

Comments
 (0)