Skip to content

Commit a380796

Browse files
committed
only enable fullscreen mode is the toggle is enabled for now
1 parent e9dcecb commit a380796

File tree

5 files changed

+28
-22
lines changed

5 files changed

+28
-22
lines changed

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2982,7 +2982,6 @@ class BrowserTabViewModel @Inject constructor(
29822982
duckAiFeatureState.showInputScreen.value || currentBrowserViewState().lastQueryOrigin == QueryOrigin.FromBookmark ||
29832983
(settingsDataStore.omnibarType == OmnibarType.SPLIT && alreadyShownKeyboard)
29842984

2985-
logcat { "Duck.ai: fullscreenEnabled: ${duckAiFeatureState.isFullScreenModeEnabled.value}" }
29862985
logcat { "Duck.ai: shouldHideKeyboard: $shouldHideKeyboard" }
29872986

29882987
command.value = if (shouldHideKeyboard) {

duckchat/duckchat-api/src/main/java/com/duckduckgo/duckchat/api/DuckAiFeatureState.kt

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,4 @@ interface DuckAiFeatureState {
6868
* Indicates whether the Input Mode toggle should be shown in the voice search screen.
6969
*/
7070
val showVoiceSearchToggle: StateFlow<Boolean>
71-
72-
/**
73-
* Indicates whether Duck.ai fullscreen is enabled but the feature flag and the user selection
74-
*/
75-
val isFullScreenModeEnabled: StateFlow<Boolean>
7671
}

duckchat/duckchat-impl/src/main/java/com/duckduckgo/duckchat/impl/RealDuckChat.kt

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,6 @@ class RealDuckChat @Inject constructor(
287287
private val _showNewAddressBarOptionChoiceScreen = MutableStateFlow(false)
288288
private val _showClearDuckAIChatHistory = MutableStateFlow(true)
289289
private val _showMainButtonsInInputScreen = MutableStateFlow(false)
290-
private val _fullscreenModeEnabled = MutableStateFlow(false)
291290

292291
private val _chatState = MutableStateFlow(ChatState.HIDE)
293292
private val keepSession = MutableStateFlow(false)
@@ -449,8 +448,6 @@ class RealDuckChat @Inject constructor(
449448

450449
override val showVoiceSearchToggle: StateFlow<Boolean> = _showVoiceSearchToggle.asStateFlow()
451450

452-
override val isFullScreenModeEnabled: StateFlow<Boolean> = _fullscreenModeEnabled
453-
454451
override val chatState: StateFlow<ChatState> = _chatState.asStateFlow()
455452

456453
override fun isImageUploadEnabled(): Boolean = isImageUploadEnabled
@@ -728,9 +725,6 @@ class RealDuckChat @Inject constructor(
728725
val showClearChatHistory = clearChatHistory
729726
_showClearDuckAIChatHistory.emit(showClearChatHistory)
730727

731-
val fullscreenModeEnabled = isFullscreenModeEnabled && duckChatFeatureRepository.isFullScreenModeUserSettingEnabled()
732-
_fullscreenModeEnabled.emit(fullscreenModeEnabled)
733-
734728
val showVoiceSearchToggle =
735729
duckChatFeatureRepository.shouldShowInVoiceSearch() &&
736730
isDuckChatFeatureEnabled && isDuckChatUserEnabled && isVoiceSearchEntryPointEnabled

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

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ import com.duckduckgo.subscriptions.api.Subscriptions
2626
import kotlinx.coroutines.channels.BufferOverflow.DROP_OLDEST
2727
import kotlinx.coroutines.channels.Channel
2828
import kotlinx.coroutines.flow.SharingStarted
29+
import kotlinx.coroutines.flow.combine
2930
import kotlinx.coroutines.flow.distinctUntilChanged
3031
import kotlinx.coroutines.flow.launchIn
31-
import kotlinx.coroutines.flow.map
3232
import kotlinx.coroutines.flow.onEach
3333
import kotlinx.coroutines.flow.receiveAsFlow
3434
import kotlinx.coroutines.flow.stateIn
@@ -47,15 +47,15 @@ class DuckChatWebViewViewModel @Inject constructor(
4747
val isFullScreenModeEnabled: Boolean = false,
4848
)
4949

50-
val viewState = duckChat.observeFullscreenModeUserSetting()
51-
.map { isFullScreenModeEnabled ->
52-
ViewState(isFullScreenModeEnabled = isFullScreenModeEnabled)
53-
}
54-
.stateIn(
55-
scope = viewModelScope,
56-
started = SharingStarted.WhileSubscribed(), // Using a 5-second timeout is best practice
57-
initialValue = ViewState(),
58-
)
50+
val viewState =
51+
combine(
52+
duckChat.observeInputScreenUserSettingEnabled(),
53+
duckChat.observeFullscreenModeUserSetting(),
54+
) { isInputScreenEnabled, isFullScreenModeEnabled ->
55+
ViewState(
56+
isFullScreenModeEnabled = isFullScreenModeEnabled && isInputScreenEnabled,
57+
)
58+
}.stateIn(viewModelScope, SharingStarted.WhileSubscribed(), ViewState())
5959

6060
sealed class Command {
6161
data object SendSubscriptionAuthUpdateEvent : Command()

duckchat/duckchat-impl/src/test/java/com/duckduckgo/duckchat/impl/ui/DuckChatWebViewViewModelTest.kt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ class DuckChatWebViewViewModelTest {
144144
@Test
145145
fun `fullscreen mode - when flags enabled, then viewstate enabled`() =
146146
runTest {
147+
whenever(duckChat.observeInputScreenUserSettingEnabled()).thenReturn(flowOf(true))
147148
whenever(duckChat.observeFullscreenModeUserSetting()).thenReturn(flowOf(true))
148149
viewModel = DuckChatWebViewViewModel(
149150
subscriptions,
@@ -159,12 +160,29 @@ class DuckChatWebViewViewModelTest {
159160
@Test
160161
fun `fullscreen mode - when flags disabled, then viewstate disabled`() =
161162
runTest {
163+
whenever(duckChat.observeInputScreenUserSettingEnabled()).thenReturn(flowOf(true))
162164
whenever(duckChat.observeFullscreenModeUserSetting()).thenReturn(flowOf(false))
163165
viewModel = DuckChatWebViewViewModel(
164166
subscriptions,
165167
duckChat = duckChat,
166168
)
167169

170+
viewModel.viewState.test {
171+
val state = awaitItem()
172+
assertFalse(state.isFullScreenModeEnabled)
173+
}
174+
}
175+
176+
@Test
177+
fun `fullscreen mode - when input scree disabled, then viewstate disabled`() =
178+
runTest {
179+
whenever(duckChat.observeInputScreenUserSettingEnabled()).thenReturn(flowOf(false))
180+
whenever(duckChat.observeFullscreenModeUserSetting()).thenReturn(flowOf(true))
181+
viewModel = DuckChatWebViewViewModel(
182+
subscriptions,
183+
duckChat = duckChat,
184+
)
185+
168186
viewModel.viewState.test {
169187
val state = awaitItem()
170188
assertFalse(state.isFullScreenModeEnabled)

0 commit comments

Comments
 (0)