Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions app-tracking-protection/vpn-impl/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ dependencies {
implementation project(':app-tracking-api')
implementation project(':app-store')
implementation project(':browser-api')
implementation project(':feedback-api')
implementation project(':di')
implementation project(':common-utils')
implementation project(':design-system')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import android.app.Activity.RESULT_OK
import android.content.Context
import android.content.Intent
import androidx.activity.result.contract.ActivityResultContract
import com.duckduckgo.browser.api.ui.BrowserScreens.FeedbackActivityWithEmptyParams
import com.duckduckgo.feedback.api.FeedbackScreenNoParams
import com.duckduckgo.navigation.api.GlobalActivityStarter
import javax.inject.Inject

Expand All @@ -31,7 +31,7 @@ class AppFeedbackContract @Inject constructor(
context: Context,
input: Void?,
): Intent {
return globalActivityStarter.startIntent(context, FeedbackActivityWithEmptyParams)!!
return globalActivityStarter.startIntent(context, FeedbackScreenNoParams)!!
}

override fun parseResult(
Expand Down
3 changes: 3 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -464,6 +464,9 @@ dependencies {

implementation project(':windows-api')
implementation project(':windows-impl')

implementation project(':feedback-api')
implementation project(':feedback-impl')
implementation project(':saved-sites-api')
implementation project(':saved-sites-impl')
implementation project(':saved-sites-store')
Expand Down
33 changes: 0 additions & 33 deletions app/lint-baseline.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11446,28 +11446,6 @@
column="6"/>
</issue>

<issue
id="ClickableViewAccessibility"
message="Custom view ``DaxTextInput`` has `setOnTouchListener` called on it but does not override `performClick`"
errorLine1=" brokenSiteInput.setOnTouchListener(LayoutScrollingTouchListener(rootScrollView, brokenSiteInput.y.toInt()))"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/java/com/duckduckgo/app/feedback/ui/negative/brokensite/BrokenSiteNegativeFeedbackFragment.kt"
line="63"
column="17"/>
</issue>

<issue
id="ClickableViewAccessibility"
message="Custom view ``DaxTextInput`` has `setOnTouchListener` called on it but does not override `performClick`"
errorLine1=" openEndedFeedback.setOnTouchListener(LayoutScrollingTouchListener(rootScrollView, openEndedFeedback.y.toInt()))"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/java/com/duckduckgo/app/feedback/ui/negative/brokensite/BrokenSiteNegativeFeedbackFragment.kt"
line="64"
column="17"/>
</issue>

<issue
id="ClickableViewAccessibility"
message="Custom view ``DuckDuckGoWebView`` has `setOnTouchListener` called on it but does not override `performClick`"
Expand All @@ -11490,17 +11468,6 @@
column="35"/>
</issue>

<issue
id="ClickableViewAccessibility"
message="Custom view ``DaxTextInput`` has `setOnTouchListener` called on it but does not override `performClick`"
errorLine1=" binding.openEndedFeedback.setOnTouchListener(LayoutScrollingTouchListener(rootScrollView, openEndedFeedback.y.toInt()))"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/java/com/duckduckgo/app/feedback/ui/negative/openended/ShareOpenEndedFeedbackFragment.kt"
line="130"
column="17"/>
</issue>

<issue
id="ContentDescription"
message="Missing `contentDescription` attribute on image"
Expand Down
5 changes: 0 additions & 5 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -367,11 +367,6 @@
<action android:name="android.service.quicksettings.action.QS_TILE_PREFERENCES" />
</intent-filter>
</activity>
<activity
android:name="com.duckduckgo.app.feedback.ui.common.FeedbackActivity"
android:exported="false"
android:label="@string/feedbackActivityTitle"
android:windowSoftInputMode="adjustResize" />
<activity
android:name="com.duckduckgo.app.survey.ui.SurveyActivity"
android:configChanges="keyboardHidden|orientation|screenSize|smallestScreenSize|screenLayout|navigation|keyboard"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,6 @@ import com.duckduckgo.anvil.annotations.InjectWith
import com.duckduckgo.app.about.AboutDuckDuckGoViewModel.Command
import com.duckduckgo.app.about.AboutDuckDuckGoViewModel.Command.LaunchBrowserWithLearnMoreUrl
import com.duckduckgo.app.about.AboutDuckDuckGoViewModel.Command.LaunchBrowserWithPrivacyProtectionsUrl
import com.duckduckgo.app.about.AboutDuckDuckGoViewModel.Command.LaunchFeedback
import com.duckduckgo.app.about.AboutDuckDuckGoViewModel.Command.LaunchSubscriptionUnifiedFeedback
import com.duckduckgo.app.about.AboutDuckDuckGoViewModel.Command.LaunchWebViewWithComparisonChartUrl
import com.duckduckgo.app.about.AboutDuckDuckGoViewModel.Command.LaunchWebViewWithPrivacyPolicyUrl
import com.duckduckgo.app.about.AboutDuckDuckGoViewModel.Command.LaunchWebViewWithSubscriptionUrl
Expand All @@ -52,8 +50,6 @@ import com.duckduckgo.common.utils.AppUrl.Url
import com.duckduckgo.di.scopes.ActivityScope
import com.duckduckgo.mobile.android.R.attr
import com.duckduckgo.navigation.api.GlobalActivityStarter
import com.duckduckgo.subscriptions.api.SubscriptionFeedbackScreens.GeneralSubscriptionFeedbackScreenNoParams
import com.google.android.material.snackbar.Snackbar
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import javax.inject.Inject
Expand All @@ -65,16 +61,6 @@ class AboutDuckDuckGoActivity : DuckDuckGoActivity() {
private val viewModel: AboutDuckDuckGoViewModel by bindViewModel()
private val binding: ActivityAboutDuckDuckGoBinding by viewBinding()

private val feedbackFlow = registerForActivityResult(FeedbackContract()) { resultOk ->
if (resultOk) {
Snackbar.make(
binding.root,
R.string.thanksForTheFeedback,
Snackbar.LENGTH_LONG,
).show()
}
}

@Inject
lateinit var globalActivityStarter: GlobalActivityStarter

Expand Down Expand Up @@ -204,8 +190,6 @@ class AboutDuckDuckGoActivity : DuckDuckGoActivity() {
LaunchBrowserWithLearnMoreUrl -> launchBrowserScreen()
LaunchWebViewWithPrivacyPolicyUrl -> launchWebViewScreen(PRIVACY_POLICY_WEB_LINK, getString(R.string.settingsPrivacyPolicyDuckduckgo))
LaunchBrowserWithPrivacyProtectionsUrl -> launchPrivacyProtectionsScreen()
LaunchFeedback -> launchFeedback()
LaunchSubscriptionUnifiedFeedback -> launchSubscriptionUnifiedFeedback()
LaunchWebViewWithComparisonChartUrl -> launchWebViewScreen(COMPARISON_CHART_URL, getString(R.string.settingsAboutDuckduckgo))
LaunchWebViewWithSubscriptionUrl -> launchWebViewScreen(PPRO_URL, getString(R.string.settingsAboutDuckduckgo))
LaunchWebViewWithVPNUrl -> launchWebViewScreen(VPN_URL, getString(R.string.settingsAboutDuckduckgo))
Expand Down Expand Up @@ -237,17 +221,6 @@ class AboutDuckDuckGoActivity : DuckDuckGoActivity() {
)
}

private fun launchFeedback() {
feedbackFlow.launch(null)
}

private fun launchSubscriptionUnifiedFeedback() {
globalActivityStarter.start(
this,
GeneralSubscriptionFeedbackScreenNoParams,
)
}

companion object {
private const val PRIVACY_PROTECTION_ANNOTATION = "privacy_protection_link"
private const val LEARN_MORE_ANNOTATION = "learn_more_link"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,10 @@ import androidx.lifecycle.viewModelScope
import com.duckduckgo.anvil.annotations.ContributesViewModel
import com.duckduckgo.app.pixels.AppPixelName.SETTINGS_ABOUT_DDG_LEARN_MORE_PRESSED
import com.duckduckgo.app.pixels.AppPixelName.SETTINGS_ABOUT_DDG_PRIVACY_POLICY_PRESSED
import com.duckduckgo.app.pixels.AppPixelName.SETTINGS_ABOUT_DDG_SHARE_FEEDBACK_PRESSED
import com.duckduckgo.app.pixels.AppPixelName.SETTINGS_ABOUT_DDG_VERSION_EASTER_EGG_PRESSED
import com.duckduckgo.app.statistics.pixels.Pixel
import com.duckduckgo.appbuildconfig.api.AppBuildConfig
import com.duckduckgo.di.scopes.ActivityScope
import com.duckduckgo.subscriptions.api.SubscriptionUnifiedFeedback
import com.duckduckgo.subscriptions.api.SubscriptionUnifiedFeedback.SubscriptionFeedbackSource.DDG_SETTINGS
import kotlinx.coroutines.channels.BufferOverflow
import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.flow.Flow
Expand All @@ -44,7 +41,6 @@ import javax.inject.Inject
class AboutDuckDuckGoViewModel @Inject constructor(
private val appBuildConfig: AppBuildConfig,
private val pixel: Pixel,
private val subscriptionUnifiedFeedback: SubscriptionUnifiedFeedback,
) : ViewModel() {

data class ViewState(
Expand All @@ -55,8 +51,6 @@ class AboutDuckDuckGoViewModel @Inject constructor(
data object LaunchBrowserWithLearnMoreUrl : Command()
data object LaunchBrowserWithPrivacyProtectionsUrl : Command()
data object LaunchWebViewWithPrivacyPolicyUrl : Command()
data object LaunchFeedback : Command()
data object LaunchSubscriptionUnifiedFeedback : Command()
data object LaunchWebViewWithComparisonChartUrl : Command()
data object LaunchWebViewWithSubscriptionUrl : Command()
data object LaunchWebViewWithVPNUrl : Command()
Expand Down Expand Up @@ -116,17 +110,6 @@ class AboutDuckDuckGoViewModel @Inject constructor(
}
}

fun onProvideFeedbackClicked() {
viewModelScope.launch {
if (subscriptionUnifiedFeedback.shouldUseUnifiedFeedback(source = DDG_SETTINGS)) {
command.send(Command.LaunchSubscriptionUnifiedFeedback)
} else {
command.send(Command.LaunchFeedback)
}
}
pixel.fire(SETTINGS_ABOUT_DDG_SHARE_FEEDBACK_PRESSED)
}

fun resetEasterEggCounter() {
easterEggCounter = 0
}
Expand Down
39 changes: 0 additions & 39 deletions app/src/main/java/com/duckduckgo/app/about/FeedbackContract.kt

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,6 @@ import com.duckduckgo.app.browser.tabs.TabManager.TabModel
import com.duckduckgo.app.browser.tabs.adapter.TabPagerAdapter
import com.duckduckgo.app.di.AppCoroutineScope
import com.duckduckgo.app.dispatchers.ExternalIntentProcessingState
import com.duckduckgo.app.feedback.ui.common.FeedbackActivity
import com.duckduckgo.app.fire.AppShortcutDataClearer
import com.duckduckgo.app.fire.DataClearer
import com.duckduckgo.app.fire.DataClearerForegroundAppRestartPixel
Expand Down Expand Up @@ -132,6 +131,7 @@ import com.duckduckgo.duckchat.api.viewmodel.DuckChatSharedViewModel
import com.duckduckgo.duckchat.impl.ui.DuckChatWebViewFragment
import com.duckduckgo.duckchat.impl.ui.DuckChatWebViewFragment.Companion.KEY_DUCK_AI_TABS
import com.duckduckgo.duckchat.impl.ui.DuckChatWebViewFragment.Companion.KEY_DUCK_AI_URL
import com.duckduckgo.feedback.api.FeedbackScreenNoParams
import com.duckduckgo.navigation.api.GlobalActivityStarter
import com.duckduckgo.savedsites.impl.bookmarks.BookmarksActivity.Companion.SAVED_SITE_URL_EXTRA
import com.duckduckgo.site.permissions.impl.ui.SitePermissionScreenNoParams
Expand Down Expand Up @@ -976,7 +976,7 @@ open class BrowserActivity : DuckDuckGoActivity() {
is Command.ShowAppEnjoymentPrompt -> showAppEnjoymentDialog(command.promptCount)
is Command.ShowAppRatingPrompt -> showAppRatingDialog(command.promptCount)
is Command.ShowAppFeedbackPrompt -> showGiveFeedbackDialog(command.promptCount)
is Command.LaunchFeedbackView -> startActivity(FeedbackActivity.intent(this))
is Command.LaunchFeedbackView -> globalActivityStarter.start(this, FeedbackScreenNoParams)
is Command.SwitchToTab -> openExistingTab(command.tabId)
is Command.OpenInNewTab -> launchNewTab(command.url)
is Command.OpenSavedSite -> currentTab?.openSavedSite(command.url)
Expand Down
31 changes: 0 additions & 31 deletions app/src/main/java/com/duckduckgo/app/di/NetworkModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -17,28 +17,19 @@
package com.duckduckgo.app.di

import android.content.Context
import com.duckduckgo.app.feedback.api.FeedbackService
import com.duckduckgo.app.feedback.api.FeedbackSubmitter
import com.duckduckgo.app.feedback.api.FireAndForgetFeedbackSubmitter
import com.duckduckgo.app.feedback.api.SubReasonApiMapper
import com.duckduckgo.app.global.api.*
import com.duckduckgo.app.statistics.pixels.Pixel
import com.duckduckgo.app.statistics.store.StatisticsDataStore
import com.duckduckgo.appbuildconfig.api.AppBuildConfig
import com.duckduckgo.common.utils.AppUrl.Url
import com.duckduckgo.common.utils.DispatcherProvider
import com.duckduckgo.common.utils.plugins.PluginPoint
import com.duckduckgo.common.utils.plugins.pixel.PixelInterceptorPlugin
import com.duckduckgo.di.scopes.AppScope
import com.duckduckgo.experiments.api.VariantManager
import com.duckduckgo.user.agent.api.UserAgentProvider
import com.squareup.anvil.annotations.ContributesTo
import com.squareup.moshi.Moshi
import dagger.Lazy
import dagger.Module
import dagger.Provides
import dagger.SingleInstanceIn
import kotlinx.coroutines.CoroutineScope
import logcat.LogPriority.VERBOSE
import logcat.logcat
import okhttp3.Cache
Expand Down Expand Up @@ -164,28 +155,6 @@ class NetworkModule {
return PixelReQueryInterceptor()
}

@Provides
fun feedbackSubmitter(
feedbackService: FeedbackService,
variantManager: VariantManager,
apiKeyMapper: SubReasonApiMapper,
statisticsStore: StatisticsDataStore,
pixel: Pixel,
@AppCoroutineScope appCoroutineScope: CoroutineScope,
appBuildConfig: AppBuildConfig,
dispatcherProvider: DispatcherProvider,
): FeedbackSubmitter =
FireAndForgetFeedbackSubmitter(
feedbackService,
variantManager,
apiKeyMapper,
statisticsStore,
pixel,
appCoroutineScope,
appBuildConfig,
dispatcherProvider,
)

companion object {
private const val CACHE_SIZE: Long = 10 * 1024 * 1024 // 10MB
}
Expand Down
3 changes: 0 additions & 3 deletions app/src/main/java/com/duckduckgo/app/pixels/AppPixelName.kt
Original file line number Diff line number Diff line change
Expand Up @@ -237,9 +237,6 @@ enum class AppPixelName(override val pixelName: String) : Pixel.PixelName {
APP_LINKS_SNACKBAR_SHOWN("m_app_links_snackbar_shown"),
APP_LINKS_SNACKBAR_OPEN_ACTION_PRESSED("m_app_links_snackbar_open_action_pressed"),

FEEDBACK_POSITIVE_SUBMISSION("mfbs_%s_submit"),
FEEDBACK_NEGATIVE_SUBMISSION("mfbs_%s_%s_%s"),

AUTOCOMPLETE_TOGGLED_OFF("m_autocomplete_recent_sites_toggled_off"),
AUTOCOMPLETE_TOGGLED_ON("m_autocomplete_recent_sites_toggled_on"),

Expand Down
Loading
Loading