@@ -27,6 +27,7 @@ import com.duckduckgo.duckchat.impl.pixel.DuckChatPixelName
27
27
import com.duckduckgo.duckchat.impl.ui.settings.DuckChatSettingsViewModel.Command.OpenLink
28
28
import com.duckduckgo.duckchat.impl.ui.settings.DuckChatSettingsViewModel.Command.OpenLinkInNewTab
29
29
import com.duckduckgo.duckchat.impl.ui.settings.DuckChatSettingsViewModel.Command.OpenShortcutSettings
30
+ import com.duckduckgo.settings.api.SettingsPageFeature
30
31
import com.duckduckgo.subscriptions.api.SubscriptionRebrandingFeatureToggle
31
32
import kotlinx.coroutines.channels.BufferOverflow.DROP_OLDEST
32
33
import kotlinx.coroutines.channels.Channel
@@ -43,8 +44,8 @@ class DuckChatSettingsViewModel @Inject constructor(
43
44
private val pixel : Pixel ,
44
45
private val rebrandingAiFeaturesEnabled : SubscriptionRebrandingFeatureToggle ,
45
46
private val inputScreenDiscoveryFunnel : InputScreenDiscoveryFunnel ,
47
+ private val settingsPageFeature : SettingsPageFeature ,
46
48
) : ViewModel() {
47
-
48
49
private val commandChannel = Channel <Command >(capacity = 1 , onBufferOverflow = DROP_OLDEST )
49
50
val commands = commandChannel.receiveAsFlow()
50
51
@@ -56,23 +57,31 @@ class DuckChatSettingsViewModel @Inject constructor(
56
57
val isRebrandingAiFeaturesEnabled : Boolean = false ,
57
58
)
58
59
59
- val viewState = combine(
60
- duckChat.observeEnableDuckChatUserSetting(),
61
- duckChat.observeInputScreenUserSettingEnabled(),
62
- ) { isDuckChatUserEnabled, isInputScreenEnabled ->
63
- ViewState (
64
- isDuckChatUserEnabled = isDuckChatUserEnabled,
65
- isInputScreenEnabled = isInputScreenEnabled,
66
- shouldShowShortcuts = isDuckChatUserEnabled,
67
- shouldShowInputScreenToggle = isDuckChatUserEnabled && duckChat.isInputScreenFeatureAvailable(),
68
- isRebrandingAiFeaturesEnabled = rebrandingAiFeaturesEnabled.isAIFeaturesRebrandingEnabled(),
69
- )
70
- }.stateIn(viewModelScope, SharingStarted .WhileSubscribed (), ViewState ())
60
+ val viewState =
61
+ combine(
62
+ duckChat.observeEnableDuckChatUserSetting(),
63
+ duckChat.observeInputScreenUserSettingEnabled(),
64
+ ) { isDuckChatUserEnabled, isInputScreenEnabled ->
65
+ ViewState (
66
+ isDuckChatUserEnabled = isDuckChatUserEnabled,
67
+ isInputScreenEnabled = isInputScreenEnabled,
68
+ shouldShowShortcuts = isDuckChatUserEnabled,
69
+ shouldShowInputScreenToggle = isDuckChatUserEnabled && duckChat.isInputScreenFeatureAvailable(),
70
+ isRebrandingAiFeaturesEnabled = rebrandingAiFeaturesEnabled.isAIFeaturesRebrandingEnabled(),
71
+ )
72
+ }.stateIn(viewModelScope, SharingStarted .WhileSubscribed (), ViewState ())
71
73
72
74
sealed class Command {
73
- data class OpenLink (val link : String ) : Command()
74
- data class OpenLinkInNewTab (val link : String ) : Command()
75
+ data class OpenLink (
76
+ val link : String ,
77
+ ) : Command()
78
+
79
+ data class OpenLinkInNewTab (
80
+ val link : String ,
81
+ ) : Command()
82
+
75
83
data object OpenShortcutSettings : Command ()
84
+
76
85
data object LaunchFeedback : Command ()
77
86
}
78
87
@@ -117,7 +126,13 @@ class DuckChatSettingsViewModel @Inject constructor(
117
126
118
127
fun duckChatSearchAISettingsClicked () {
119
128
viewModelScope.launch {
120
- commandChannel.send(OpenLinkInNewTab (DUCK_CHAT_SEARCH_AI_SETTINGS_LINK ))
129
+ val settingsLink =
130
+ if (settingsPageFeature.saveAndExitSerpSettings().isEnabled()) {
131
+ DUCK_CHAT_SEARCH_AI_SETTINGS_LINK_WITH_RETURN_PARAM
132
+ } else {
133
+ DUCK_CHAT_SEARCH_AI_SETTINGS_LINK
134
+ }
135
+ commandChannel.send(OpenLinkInNewTab (settingsLink))
121
136
pixel.fire(DuckChatPixelName .DUCK_CHAT_SEARCH_ASSIST_SETTINGS_BUTTON_CLICKED )
122
137
}
123
138
}
@@ -153,5 +168,6 @@ class DuckChatSettingsViewModel @Inject constructor(
153
168
companion object {
154
169
const val DUCK_CHAT_LEARN_MORE_LINK = " https://duckduckgo.com/duckduckgo-help-pages/aichat/"
155
170
const val DUCK_CHAT_SEARCH_AI_SETTINGS_LINK = " https://duckduckgo.com/settings?ko=-1#aifeatures"
171
+ const val DUCK_CHAT_SEARCH_AI_SETTINGS_LINK_WITH_RETURN_PARAM = " https://duckduckgo.com/settings?ko=-1&return=aiFeatures#aifeatures"
156
172
}
157
173
}
0 commit comments