Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ object AppUrls {
const val AUTOMATTIC_PRIVACY_POLICY = "https://www.automattic.com/privacy"
const val AUTOMATTIC_PRIVACY_POLICY_CA = "https://automattic.com/privacy/#california-consumer-privacy-act-ccpa"
const val AUTOMATTIC_COOKIE_POLICY = "https://www.automattic.com/cookies"
const val AUTOMATTIC_ADVERTISING_OPTIONS = "https://wordpress.com/support/tracking-opt-outs/"
const val AUTOMATTIC_USAGE_TRACKER = "https://woocommerce.com/usage-tracking/"
const val AUTOMATTIC_HIRING = "https://automattic.com/work-with-us"

const val WOOCOMMERCE_UPGRADE = "https://docs.woocommerce.com/document/how-to-update-woocommerce/"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.woocommerce.android.ui.prefs

import android.content.Context
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
Expand All @@ -14,8 +13,9 @@ import com.woocommerce.android.analytics.AnalyticsTracker
import com.woocommerce.android.extensions.navigateSafely
import com.woocommerce.android.ui.base.BaseFragment
import com.woocommerce.android.ui.compose.theme.WooThemeWithBackground
import com.woocommerce.android.ui.prefs.PrivacySettingsViewModel.PrivacySettingsEvent.ShowCookiePolicy
import com.woocommerce.android.ui.prefs.PrivacySettingsViewModel.PrivacySettingsEvent.ShowPrivacyPolicy
import com.woocommerce.android.ui.prefs.PrivacySettingsViewModel.PrivacySettingsEvent.OpenPolicies
import com.woocommerce.android.ui.prefs.PrivacySettingsViewModel.PrivacySettingsEvent.ShowAdvertisingOptions
import com.woocommerce.android.ui.prefs.PrivacySettingsViewModel.PrivacySettingsEvent.ShowUsageTracker
import com.woocommerce.android.util.ChromeCustomTabUtils
import dagger.hilt.android.AndroidEntryPoint

Expand Down Expand Up @@ -50,11 +50,11 @@ class PrivacySettingsFragment : BaseFragment() {
private fun observeEvents() {
viewModel.event.observe(viewLifecycleOwner) { event ->
when (event) {
is PrivacySettingsViewModel.PrivacySettingsEvent.OpenPolicies -> findNavController().navigateSafely(
is ShowAdvertisingOptions -> showAdvertisingOptions()
is ShowUsageTracker -> showUsageTracker()
is OpenPolicies -> findNavController().navigateSafely(
PrivacySettingsFragmentDirections.actionPrivacySettingsFragmentToPrivacySettingsPolicesFragment()
)
is ShowCookiePolicy -> showCookiePolicy()
is ShowPrivacyPolicy -> showPrivacyPolicy()
}
}
}
Expand All @@ -64,25 +64,11 @@ class PrivacySettingsFragment : BaseFragment() {
AnalyticsTracker.trackViewShown(this)
}

override fun onStart() {
super.onStart()
ChromeCustomTabUtils.connectAndStartSession(
activity as Context,
AppUrls.AUTOMATTIC_PRIVACY_POLICY,
arrayOf(AppUrls.AUTOMATTIC_COOKIE_POLICY)
)
private fun showAdvertisingOptions() {
ChromeCustomTabUtils.launchUrl(requireActivity(), AppUrls.AUTOMATTIC_ADVERTISING_OPTIONS)
}

override fun onStop() {
super.onStop()
ChromeCustomTabUtils.disconnect(activity as Context)
}

private fun showCookiePolicy() {
ChromeCustomTabUtils.launchUrl(activity as Context, AppUrls.AUTOMATTIC_COOKIE_POLICY)
}

private fun showPrivacyPolicy() {
ChromeCustomTabUtils.launchUrl(activity as Context, AppUrls.AUTOMATTIC_PRIVACY_POLICY)
private fun showUsageTracker() {
ChromeCustomTabUtils.launchUrl(requireActivity(), AppUrls.AUTOMATTIC_USAGE_TRACKER)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,13 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.compose.ui.platform.ComposeView
import com.woocommerce.android.AppUrls
import com.woocommerce.android.R
import com.woocommerce.android.analytics.AnalyticsEvent
import com.woocommerce.android.analytics.AnalyticsTracker
import com.woocommerce.android.ui.base.BaseFragment
import com.woocommerce.android.ui.compose.theme.WooThemeWithBackground
import com.woocommerce.android.util.ChromeCustomTabUtils
import dagger.hilt.android.AndroidEntryPoint

@AndroidEntryPoint
Expand All @@ -25,7 +29,24 @@ class PrivacySettingsPolicesFragment : BaseFragment() {
return ComposeView(requireContext()).apply {
setContent {
WooThemeWithBackground {
PrivacySettingsPolicesScreen()
PrivacySettingsPolicesScreen(
onPrivacyPolicyClicked = {
AnalyticsTracker.track(AnalyticsEvent.PRIVACY_SETTINGS_PRIVACY_POLICY_LINK_TAPPED)
ChromeCustomTabUtils.launchUrl(
requireActivity(),
AppUrls.AUTOMATTIC_PRIVACY_POLICY
)
},
onCookiePolicyClicked = {
AnalyticsTracker.track(
AnalyticsEvent.PRIVACY_SETTINGS_THIRD_PARTY_TRACKING_INFO_LINK_TAPPED
)
ChromeCustomTabUtils.launchUrl(
requireActivity(),
AppUrls.AUTOMATTIC_COOKIE_POLICY
)
}
)
Comment on lines +32 to +49
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've decided not to introduce VM to such a simple view.

}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,39 +14,44 @@ import com.woocommerce.android.R
import com.woocommerce.android.ui.icons.OpenInNew

@Composable
fun PrivacySettingsPolicesScreen() {
fun PrivacySettingsPolicesScreen(
onPrivacyPolicyClicked: () -> Unit,
onCookiePolicyClicked: () -> Unit,
) {
Scaffold(backgroundColor = MaterialTheme.colors.surface) { paddingValues ->
Column(
modifier = Modifier.padding(paddingValues)
) {
OptionRow(
sectionTitle = stringResource(R.string.settings_policies_privacy_policy),
sectionDescription = stringResource(R.string.settings_policies_privacy_policy_description),
onRowClicked = { /*TODO*/ },
actionContent = {
IconButton(modifier = Modifier.padding(horizontal = 8.dp), onClick = { /*TODO*/
}) {
Icon(
imageVector = OpenInNew,
contentDescription = stringResource(id = R.string.settings_privacy_policy)
)
}
onRowClicked = onPrivacyPolicyClicked
) {
IconButton(
modifier = Modifier.padding(horizontal = 8.dp),
onClick = onPrivacyPolicyClicked
) {
Icon(
imageVector = OpenInNew,
contentDescription = stringResource(id = R.string.settings_privacy_policy)
)
}
)
}
OptionRow(
sectionTitle = stringResource(R.string.settings_policies_cookie_policy),
sectionDescription = stringResource(R.string.settings_policies_cookie_policy_description),
onRowClicked = { /*TODO*/ },
actionContent = {
IconButton(modifier = Modifier.padding(horizontal = 8.dp), onClick = { /*TODO*/
}) {
Icon(
imageVector = OpenInNew,
contentDescription = stringResource(id = R.string.settings_privacy_cookies_polices)
)
}
onRowClicked = onCookiePolicyClicked
) {
IconButton(
modifier = Modifier.padding(horizontal = 8.dp),
onClick = onCookiePolicyClicked
) {
Icon(
imageVector = OpenInNew,
contentDescription = stringResource(id = R.string.settings_privacy_cookies_polices)
)
}
)
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ fun PrivacySettingsScreen(
state,
onAnalyticsSettingChanged = viewModel::onSendStatsSettingChanged,
onReportCrashesChanged = viewModel::onCrashReportingSettingChanged,
onAdvertisingOptionsClicked = viewModel::onAdvertisingOptionsClicked,
onUsageTrackerClicked = viewModel::onUsageTrackerClicked,
onPoliciesClicked = viewModel::onPoliciesClicked,
)
}
Expand All @@ -56,6 +58,8 @@ fun PrivacySettingsScreen(
state: PrivacySettingsViewModel.State,
onAnalyticsSettingChanged: (Boolean) -> Unit,
onReportCrashesChanged: (Boolean) -> Unit,
onAdvertisingOptionsClicked: () -> Unit,
onUsageTrackerClicked: () -> Unit,
onPoliciesClicked: () -> Unit,
) {
Scaffold(backgroundColor = MaterialTheme.colors.surface) { paddingValues ->
Expand Down Expand Up @@ -100,12 +104,11 @@ fun PrivacySettingsScreen(
sectionHeader = stringResource(R.string.settings_more_privacy_options_header),
sectionTitle = stringResource(R.string.settings_advertising_options),
sectionDescription = stringResource(R.string.settings_advertising_options_description),
onRowClicked = {}
onRowClicked = onAdvertisingOptionsClicked
) {
IconButton(
modifier = Modifier.padding(horizontal = 8.dp),
onClick = { /*TODO*/
}
onClick = onAdvertisingOptionsClicked
) {
Icon(
imageVector = OpenInNew,
Expand All @@ -114,14 +117,13 @@ fun PrivacySettingsScreen(
}
}
OptionRow(
onRowClicked = {},
onRowClicked = onUsageTrackerClicked,
sectionTitle = stringResource(R.string.settings_usage_tracker),
sectionDescription = stringResource(R.string.settings_usage_tracker_description),
) {
IconButton(
modifier = Modifier.padding(horizontal = 8.dp),
onClick = { /*TODO*/
}
onClick = onUsageTrackerClicked,
) {
Icon(
imageVector = OpenInNew,
Expand Down Expand Up @@ -248,10 +250,9 @@ private fun Default() {
WooThemeWithBackground {
PrivacySettingsScreen(
state = PrivacySettingsViewModel.State(
sendUsageStats = true,
crashReportingEnabled = false
sendUsageStats = true, crashReportingEnabled = false
),
{}, {}, {}
{}, {}, {}, {}, {}
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -107,19 +107,12 @@ class PrivacySettingsViewModel @Inject constructor(
}
}

fun onLearnMoreShareInfoClicked() {
AnalyticsTracker.track(AnalyticsEvent.PRIVACY_SETTINGS_SHARE_INFO_LINK_TAPPED)
triggerEvent(PrivacySettingsEvent.ShowCookiePolicy)
fun onAdvertisingOptionsClicked() {
triggerEvent(PrivacySettingsEvent.ShowAdvertisingOptions)
}

fun onPrivacyPolicyClicked() {
AnalyticsTracker.track(AnalyticsEvent.PRIVACY_SETTINGS_PRIVACY_POLICY_LINK_TAPPED)
triggerEvent(PrivacySettingsEvent.ShowPrivacyPolicy)
}

fun onLearnMoreThirdPartyClicked() {
AnalyticsTracker.track(AnalyticsEvent.PRIVACY_SETTINGS_THIRD_PARTY_TRACKING_INFO_LINK_TAPPED)
triggerEvent(PrivacySettingsEvent.ShowCookiePolicy)
fun onUsageTrackerClicked() {
triggerEvent(PrivacySettingsEvent.ShowUsageTracker)
}

fun onCrashReportingSettingChanged(checked: Boolean) {
Expand Down Expand Up @@ -151,8 +144,8 @@ class PrivacySettingsViewModel @Inject constructor(
)

sealed class PrivacySettingsEvent : MultiLiveEvent.Event() {
object ShowCookiePolicy : PrivacySettingsEvent()
object ShowPrivacyPolicy : PrivacySettingsEvent()
object OpenPolicies : PrivacySettingsEvent()
object ShowAdvertisingOptions : PrivacySettingsEvent()
object ShowUsageTracker : PrivacySettingsEvent()
}
}