summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/app/voicemail/error/OmtpVoicemailMessageCreator.java
diff options
context:
space:
mode:
authorEric Erfanian <erfanian@google.com>2017-04-06 23:16:42 +0000
committerandroid-build-merger <android-build-merger@google.com>2017-04-06 23:16:42 +0000
commit28188020060d1ad3304dfa0367486ff5bb35da62 (patch)
tree8d08d4f2292aa84dc435d455891e7ab633d95a25 /java/com/android/dialer/app/voicemail/error/OmtpVoicemailMessageCreator.java
parent34e183cfd77f68e0ade42d2080c76f54a319430d (diff)
parent01a86435499d66b267765f89b7dd9c83c158ddfe (diff)
Update AOSP Dialer source from internal google3 repository at cl/152373142. am: d8046e520a
am: 01a8643549 Change-Id: Ib92542e6b88bc8d8906982280244661ed7dbca8f
Diffstat (limited to 'java/com/android/dialer/app/voicemail/error/OmtpVoicemailMessageCreator.java')
-rw-r--r--java/com/android/dialer/app/voicemail/error/OmtpVoicemailMessageCreator.java184
1 files changed, 101 insertions, 83 deletions
diff --git a/java/com/android/dialer/app/voicemail/error/OmtpVoicemailMessageCreator.java b/java/com/android/dialer/app/voicemail/error/OmtpVoicemailMessageCreator.java
index b56d568b7..2b19bd7bb 100644
--- a/java/com/android/dialer/app/voicemail/error/OmtpVoicemailMessageCreator.java
+++ b/java/com/android/dialer/app/voicemail/error/OmtpVoicemailMessageCreator.java
@@ -22,7 +22,6 @@ import android.provider.VoicemailContract.Status;
import android.support.annotation.Nullable;
import android.telecom.PhoneAccountHandle;
import com.android.dialer.app.voicemail.error.VoicemailErrorMessage.Action;
-import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
import com.android.dialer.common.PerAccountSharedPreferences;
import com.android.dialer.logging.Logger;
@@ -136,92 +135,122 @@ public class OmtpVoicemailMessageCreator {
Context context, VoicemailStatus status, VoicemailStatusReader statusReader) {
if (status.quotaOccupied != Status.QUOTA_UNAVAILABLE
&& status.quotaTotal != Status.QUOTA_UNAVAILABLE) {
+ return createInboxErrorMessage(context, status, statusReader);
+ }
+ Logger.get(context).logImpression(DialerImpression.Type.VVM_QUOTA_CHECK_UNAVAILABLE);
+ return null;
+ }
- PhoneAccountHandle phoneAccountHandle = status.getPhoneAccountHandle();
+ @Nullable
+ private static VoicemailErrorMessage createInboxErrorMessage(
+ Context context, VoicemailStatus status, VoicemailStatusReader statusReader) {
- VoicemailClient voicemailClient = VoicemailComponent.get(context).getVoicemailClient();
+ float voicemailOccupiedFraction = (float) status.quotaOccupied / (float) status.quotaTotal;
- PerAccountSharedPreferences sharedPreferenceForAccount =
- new PerAccountSharedPreferences(
- context, phoneAccountHandle, PreferenceManager.getDefaultSharedPreferences(context));
+ if (voicemailOccupiedFraction < QUOTA_NEAR_FULL_THRESHOLD) {
+ return null;
+ }
- boolean isVoicemailArchiveEnabled =
- VoicemailComponent.get(context)
- .getVoicemailClient()
- .isVoicemailArchiveEnabled(context, phoneAccountHandle);
+ boolean isFull = voicemailOccupiedFraction >= QUOTA_FULL_THRESHOLD;
- if ((float) status.quotaOccupied / (float) status.quotaTotal >= QUOTA_FULL_THRESHOLD) {
- return createInboxErrorMessage(
- context,
- status,
- status.getPhoneAccountHandle(),
- statusReader,
- sharedPreferenceForAccount,
- voicemailClient,
- isVoicemailArchiveEnabled,
- context.getString(R.string.voicemail_error_inbox_full_turn_archive_on_title),
- context.getText(R.string.voicemail_error_inbox_full_turn_archive_on_message),
- context.getString(R.string.voicemail_error_inbox_full_title),
- context.getString(R.string.voicemail_error_inbox_full_message),
- VOICEMAIL_PROMO_DISMISSED_KEY);
- }
+ PhoneAccountHandle phoneAccountHandle = status.getPhoneAccountHandle();
- if ((float) status.quotaOccupied / (float) status.quotaTotal >= QUOTA_NEAR_FULL_THRESHOLD) {
- return createInboxErrorMessage(
- context,
- status,
- status.getPhoneAccountHandle(),
- statusReader,
- sharedPreferenceForAccount,
- voicemailClient,
- isVoicemailArchiveEnabled,
- context.getString(R.string.voicemail_error_inbox_almost_full_turn_archive_on_title),
- context.getText(R.string.voicemail_error_inbox_almost_full_turn_archive_on_message),
+ PerAccountSharedPreferences sharedPreferenceForAccount =
+ new PerAccountSharedPreferences(
+ context, phoneAccountHandle, PreferenceManager.getDefaultSharedPreferences(context));
+
+ VoicemailClient voicemailClient = VoicemailComponent.get(context).getVoicemailClient();
+
+ boolean shouldShowPromoForArchive =
+ !isPromoForArchiveDismissed(sharedPreferenceForAccount, isFull)
+ && !voicemailClient.isVoicemailArchiveEnabled(context, phoneAccountHandle)
+ && voicemailClient.isVoicemailArchiveAvailable(context);
+
+ if (!shouldShowPromoForArchive) {
+ if (isFull) {
+ Logger.get(context)
+ .logImpression(DialerImpression.Type.VVM_USER_SHOWN_VM_FULL_ERROR_MESSAGE);
+ return new VoicemailErrorMessage(
+ context.getString(R.string.voicemail_error_inbox_full_title),
+ context.getString(R.string.voicemail_error_inbox_full_message));
+ } else {
+ Logger.get(context)
+ .logImpression(DialerImpression.Type.VVM_USER_SHOWN_VM_ALMOST_FULL_ERROR_MESSAGE);
+ return new VoicemailErrorMessage(
context.getString(R.string.voicemail_error_inbox_near_full_title),
- context.getString(R.string.voicemail_error_inbox_near_full_message),
- VOICEMAIL_PROMO_ALMOST_FULL_DISMISSED_KEY);
+ context.getString(R.string.voicemail_error_inbox_near_full_message));
}
}
- return null;
+
+ String title;
+ CharSequence message;
+ int enabledImpression;
+ int dismissedImpression;
+ String dismissedKey;
+
+ if (isFull) {
+ Logger.get(context).logImpression(DialerImpression.Type.VVM_USER_SHOWN_VM_FULL_PROMO);
+ title = context.getString(R.string.voicemail_error_inbox_full_turn_archive_on_title);
+ message = context.getText(R.string.voicemail_error_inbox_full_turn_archive_on_message);
+ enabledImpression = DialerImpression.Type.VVM_USER_ENABLED_ARCHIVE_FROM_VM_FULL_PROMO;
+ dismissedImpression = DialerImpression.Type.VVM_USER_DISMISSED_VM_FULL_PROMO;
+ dismissedKey = VOICEMAIL_PROMO_DISMISSED_KEY;
+ } else {
+ Logger.get(context).logImpression(DialerImpression.Type.VVM_USER_SHOWN_VM_ALMOST_FULL_PROMO);
+ title = context.getString(R.string.voicemail_error_inbox_almost_full_turn_archive_on_title);
+ message = context.getText(R.string.voicemail_error_inbox_almost_full_turn_archive_on_message);
+ enabledImpression = DialerImpression.Type.VVM_USER_ENABLED_ARCHIVE_FROM_VM_ALMOST_FULL_PROMO;
+ dismissedImpression = DialerImpression.Type.VVM_USER_DISMISSED_VM_ALMOST_FULL_PROMO;
+ dismissedKey = VOICEMAIL_PROMO_ALMOST_FULL_DISMISSED_KEY;
+ }
+
+ return createVMQuotaPromo(
+ context,
+ phoneAccountHandle,
+ status,
+ statusReader,
+ voicemailClient,
+ sharedPreferenceForAccount,
+ title,
+ message,
+ enabledImpression,
+ dismissedImpression,
+ dismissedKey);
}
- private static VoicemailErrorMessage createInboxErrorMessage(
+ private static boolean isPromoForArchiveDismissed(
+ PerAccountSharedPreferences sharedPreferenceForAccount, boolean isFull) {
+ if (isFull) {
+ return sharedPreferenceForAccount.getBoolean(VOICEMAIL_PROMO_DISMISSED_KEY, false);
+ } else {
+ return sharedPreferenceForAccount.getBoolean(
+ VOICEMAIL_PROMO_ALMOST_FULL_DISMISSED_KEY, false);
+ }
+ }
+
+ private static VoicemailErrorMessage createVMQuotaPromo(
Context context,
- VoicemailStatus status,
PhoneAccountHandle phoneAccountHandle,
+ VoicemailStatus status,
VoicemailStatusReader statusReader,
- PerAccountSharedPreferences sharedPreferenceForAccount,
VoicemailClient voicemailClient,
- boolean isVoicemailArchiveEnabled,
- String promoTitle,
- CharSequence promoMessage,
- String nonPromoTitle,
- String nonPromoMessage,
- String preferenceKey) {
-
- boolean wasPromoDismissed = sharedPreferenceForAccount.getBoolean(preferenceKey, false);
-
- if (!wasPromoDismissed && !isVoicemailArchiveEnabled) {
- logArchiveImpression(
- context,
- preferenceKey,
- DialerImpression.Type.VVM_USER_SHOWN_VM_ALMOST_FULL_PROMO,
- DialerImpression.Type.VVM_USER_SHOWN_VM_FULL_PROMO);
- return new VoicemailErrorMessage(
- promoTitle,
- promoMessage,
- VoicemailErrorMessage.createDismissTurnArchiveOnAction(
- context, statusReader, sharedPreferenceForAccount, preferenceKey),
- VoicemailErrorMessage.createTurnArchiveOnAction(
- context, status, voicemailClient, phoneAccountHandle, preferenceKey));
- } else {
- logArchiveImpression(
- context,
- preferenceKey,
- DialerImpression.Type.VVM_USER_SHOWN_VM_ALMOST_FULL_ERROR_MESSAGE,
- DialerImpression.Type.VVM_USER_SHOWN_VM_FULL_ERROR_MESSAGE);
- return new VoicemailErrorMessage(nonPromoTitle, nonPromoMessage);
- }
+ PerAccountSharedPreferences sharedPreferenceForAccount,
+ String title,
+ CharSequence message,
+ int impressionToLogOnEnable,
+ int impressionToLogOnDismiss,
+ String preferenceKeyToUpdate) {
+ return new VoicemailErrorMessage(
+ title,
+ message,
+ VoicemailErrorMessage.createDismissTurnArchiveOnAction(
+ context,
+ impressionToLogOnDismiss,
+ statusReader,
+ sharedPreferenceForAccount,
+ preferenceKeyToUpdate),
+ VoicemailErrorMessage.createTurnArchiveOnAction(
+ context, impressionToLogOnEnable, status, voicemailClient, phoneAccountHandle));
}
@Nullable
@@ -260,15 +289,4 @@ public class OmtpVoicemailMessageCreator {
}
return new VoicemailErrorMessage(title, description, actions);
}
-
- protected static void logArchiveImpression(
- Context context, String preference, int vmAlmostFullImpression, int vmFullImpression) {
- if (preference.equals(VOICEMAIL_PROMO_DISMISSED_KEY)) {
- Logger.get(context).logImpression(vmAlmostFullImpression);
- } else if (preference.equals(VOICEMAIL_PROMO_ALMOST_FULL_DISMISSED_KEY)) {
- Logger.get(context).logImpression(vmFullImpression);
- } else {
- throw Assert.createAssertionFailException("Invalid preference key " + preference);
- }
- }
}