Skip to content
Merged
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
Original file line number Diff line number Diff line change
Expand Up @@ -409,11 +409,9 @@ enum class AnalyticsEvent(val siteless: Boolean = false) {
SETTINGS_WE_ARE_HIRING_BUTTON_TAPPED,
SETTINGS_IMAGE_OPTIMIZATION_TOGGLED,
SETTINGS_CARD_PRESENT_SELECT_PAYMENT_GATEWAY_TAPPED,
PRIVACY_SETTINGS_COLLECT_INFO_TOGGLED,
PRIVACY_SETTINGS_PRIVACY_POLICY_LINK_TAPPED,
PRIVACY_SETTINGS_SHARE_INFO_LINK_TAPPED,
PRIVACY_SETTINGS_THIRD_PARTY_TRACKING_INFO_LINK_TAPPED,
PRIVACY_SETTINGS_CRASH_REPORTING_TOGGLED,
SETTINGS_DOMAINS_TAPPED,

// -- Payments Hub
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,15 @@ import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.SavedStateHandle
import com.woocommerce.android.AppPrefs
import com.woocommerce.android.analytics.AnalyticsEvent
import com.woocommerce.android.analytics.AnalyticsEvent.SETTING_CHANGE
import com.woocommerce.android.analytics.AnalyticsEvent.SETTING_CHANGE_FAILED
import com.woocommerce.android.analytics.AnalyticsEvent.SETTING_CHANGE_SUCCESS
import com.woocommerce.android.analytics.AnalyticsTracker
import com.woocommerce.android.util.AnalyticsUtils
import com.woocommerce.android.util.dispatchAndAwait
import com.woocommerce.android.viewmodel.MultiLiveEvent
import com.woocommerce.android.viewmodel.ScopedViewModel
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.launch
import org.wordpress.android.fluxc.Dispatcher
import org.wordpress.android.fluxc.action.AccountAction
import org.wordpress.android.fluxc.generated.AccountActionBuilder
import org.wordpress.android.fluxc.store.AccountStore
import org.wordpress.android.fluxc.store.AccountStore.AccountErrorType
import org.wordpress.android.fluxc.store.AccountStore.OnAccountChanged
import org.wordpress.android.fluxc.store.AccountStore.PushAccountSettingsPayload
import javax.inject.Inject
Expand All @@ -45,34 +38,21 @@ class PrivacySettingsViewModel @Inject constructor(
private fun getSendUsageStats() = !accountStore.account.tracksOptOut

private fun setSendUsageStats(sendUsageStats: Boolean) {
// note that we don't init/disable Crashlytics here because that requires the app to be restarted
AnalyticsTracker.sendUsageStats = sendUsageStats

launch {
// sync with wpcom if a token is available
if (accountStore.hasAccessToken()) {
AnalyticsTracker.track(
SETTING_CHANGE,
mapOf(
AnalyticsTracker.KEY_NAME to SETTING_TRACKS_OPT_OUT,
AnalyticsTracker.KEY_FROM to !sendUsageStats,
AnalyticsTracker.KEY_TO to sendUsageStats
)
)

val payload = PushAccountSettingsPayload().apply {
params = mapOf(SETTING_TRACKS_OPT_OUT to !sendUsageStats)
}

val action = AccountActionBuilder.newPushSettingsAction(payload)
val event: OnAccountChanged = dispatcher.dispatchAndAwait(action)

handleOnAccountChanged(event)
dispatcher.dispatchAndAwait<PushAccountSettingsPayload?, OnAccountChanged>(action)
}
}
}

fun getCrashReportingEnabled() = AppPrefs.isCrashReportingEnabled()
private fun getCrashReportingEnabled() = AppPrefs.isCrashReportingEnabled()

fun onPoliciesClicked() {
triggerEvent(PrivacySettingsEvent.OpenPolicies)
Expand All @@ -82,31 +62,6 @@ class PrivacySettingsViewModel @Inject constructor(
AppPrefs.setCrashReportingEnabled(enabled)
}

private fun handleOnAccountChanged(event: OnAccountChanged) {
if (event.isError) {
when (event.error.type) {
AccountErrorType.SETTINGS_POST_ERROR -> {
AnalyticsTracker.track(
SETTING_CHANGE_FAILED,
this::class.java.simpleName,
event.error.type.toString(),
event.error.message
)
}

else -> {}
}
} else {
when (event.causeOfChange) {
AccountAction.PUSH_SETTINGS -> {
AnalyticsTracker.track(SETTING_CHANGE_SUCCESS)
}

else -> Unit // Do nothing
}
}
}

fun onAdvertisingOptionsClicked() {
triggerEvent(PrivacySettingsEvent.ShowAdvertisingOptions)
}
Expand All @@ -116,24 +71,11 @@ class PrivacySettingsViewModel @Inject constructor(
}

fun onCrashReportingSettingChanged(checked: Boolean) {
AnalyticsTracker.track(
AnalyticsEvent.PRIVACY_SETTINGS_CRASH_REPORTING_TOGGLED,
mapOf(
AnalyticsTracker.KEY_STATE to AnalyticsUtils.getToggleStateLabel(checked)
)
)
_state.value = _state.value?.copy(crashReportingEnabled = checked)
setCrashReportingEnabled(checked)
}

fun onSendStatsSettingChanged(checked: Boolean) {
AnalyticsTracker.track(
AnalyticsEvent.PRIVACY_SETTINGS_COLLECT_INFO_TOGGLED,
mapOf(
AnalyticsTracker.KEY_STATE to
AnalyticsUtils.getToggleStateLabel(checked)
)
)
_state.value = _state.value?.copy(sendUsageStats = checked)
setSendUsageStats(checked)
}
Expand Down