Fixing bug in donation settings

in cl/173731907 we added a setting for donating voicemails, but didn't
distinguish between when this feature is enabled/disabled by the user
or by configuration.  this cl fixes that by adding a method to check
if the feature is available (ie enabled by config).

Bug: 62423454
Test: manual and unit test
PiperOrigin-RevId: 174245260
Change-Id: I45a59de7f4a171d759e2fcf86db27a100a84de67
diff --git a/java/com/android/dialer/voicemail/settings/VoicemailSettingsFragment.java b/java/com/android/dialer/voicemail/settings/VoicemailSettingsFragment.java
index efeed08..2b496c0 100644
--- a/java/com/android/dialer/voicemail/settings/VoicemailSettingsFragment.java
+++ b/java/com/android/dialer/voicemail/settings/VoicemailSettingsFragment.java
@@ -113,7 +113,7 @@
 
     if (!VoicemailComponent.get(getContext())
         .getVoicemailClient()
-        .isVoicemailDonationEnabled(getContext(), phoneAccountHandle)) {
+        .isVoicemailDonationAvailable(getContext())) {
       getPreferenceScreen().removePreference(donateVoicemailSwitchPreference);
     }
 
diff --git a/java/com/android/voicemail/VoicemailClient.java b/java/com/android/voicemail/VoicemailClient.java
index d033369..050286a 100644
--- a/java/com/android/voicemail/VoicemailClient.java
+++ b/java/com/android/voicemail/VoicemailClient.java
@@ -128,6 +128,9 @@
    */
   boolean isVoicemailTranscriptionAvailable(Context context);
 
+  /** @return if the voicemail donation feature is available. */
+  boolean isVoicemailDonationAvailable(Context context);
+
   /** @return if the voicemail donation setting has been enabled by the user. */
   boolean isVoicemailDonationEnabled(Context context, PhoneAccountHandle account);
 
diff --git a/java/com/android/voicemail/impl/VoicemailClientImpl.java b/java/com/android/voicemail/impl/VoicemailClientImpl.java
index 14fa1d8..2add59e 100644
--- a/java/com/android/voicemail/impl/VoicemailClientImpl.java
+++ b/java/com/android/voicemail/impl/VoicemailClientImpl.java
@@ -136,6 +136,22 @@
   }
 
   @Override
+  public boolean isVoicemailDonationAvailable(Context context) {
+    if (!isVoicemailTranscriptionAvailable(context)) {
+      LogUtil.i("VoicemailClientImpl.isVoicemailDonationAvailable", "transcription not available");
+      return false;
+    }
+
+    TranscriptionConfigProvider provider = new TranscriptionConfigProvider(context);
+    if (!provider.isVoicemailDonationAvailable()) {
+      LogUtil.i("VoicemailClientImpl.isVoicemailDonationAvailable", "feature disabled by config");
+      return false;
+    }
+
+    return true;
+  }
+
+  @Override
   public boolean isVoicemailDonationEnabled(Context context, PhoneAccountHandle account) {
     return isVoicemailTranscriptionAvailable(context)
         && VisualVoicemailSettingsUtil.isVoicemailDonationEnabled(context, account);
diff --git a/java/com/android/voicemail/impl/transcribe/TranscriptionConfigProvider.java b/java/com/android/voicemail/impl/transcribe/TranscriptionConfigProvider.java
index 5da4503..f4996a0 100644
--- a/java/com/android/voicemail/impl/transcribe/TranscriptionConfigProvider.java
+++ b/java/com/android/voicemail/impl/transcribe/TranscriptionConfigProvider.java
@@ -75,9 +75,9 @@
         .getLong("voicemail_transcription_get_transcript_poll_interval_millis", 1000L);
   }
 
-  public boolean isVoicemailDonationEnabled() {
+  public boolean isVoicemailDonationAvailable() {
     return ConfigProviderBindings.get(context)
-        .getBoolean("voicemail_transcription_donation_enabled", false);
+        .getBoolean("voicemail_transcription_donation_available", false);
   }
 
   @Override
diff --git a/java/com/android/voicemail/stub/StubVoicemailClient.java b/java/com/android/voicemail/stub/StubVoicemailClient.java
index 0fe533e..fe06324 100644
--- a/java/com/android/voicemail/stub/StubVoicemailClient.java
+++ b/java/com/android/voicemail/stub/StubVoicemailClient.java
@@ -76,6 +76,11 @@
   }
 
   @Override
+  public boolean isVoicemailDonationAvailable(Context context) {
+    return false;
+  }
+
+  @Override
   public boolean isVoicemailDonationEnabled(Context context, PhoneAccountHandle account) {
     return false;
   }