Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f599b4bb authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Add RTT transcript to call details."

parents 9ef6d8c8 d6b10d55
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -134,7 +134,6 @@ public final class CallDetailsActivity extends CallDetailsActivityCommon {

    private void updateCallDetailsEntries(CallDetailsEntries newEntries) {
      activity.setCallDetailsEntries(newEntries);
      activity.getAdapter().updateCallDetailsEntries(newEntries);
      EnrichedCallComponent.get(activity)
          .getEnrichedCallManager()
          .requestAllHistoricalData(activity.getNumber(), newEntries);
+49 −1
Original line number Diff line number Diff line
@@ -26,9 +26,11 @@ import android.os.Bundle;
import android.provider.CallLog;
import android.provider.CallLog.Calls;
import android.support.annotation.CallSuper;
import android.support.annotation.MainThread;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.RequiresPermission;
import android.support.annotation.WorkerThread;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
@@ -45,6 +47,7 @@ import com.android.dialer.common.concurrent.DialerExecutor.FailureListener;
import com.android.dialer.common.concurrent.DialerExecutor.SuccessListener;
import com.android.dialer.common.concurrent.DialerExecutor.Worker;
import com.android.dialer.common.concurrent.DialerExecutorComponent;
import com.android.dialer.common.concurrent.UiListener;
import com.android.dialer.common.database.Selection;
import com.android.dialer.constants.ActivityRequestCodes;
import com.android.dialer.duo.Duo;
@@ -58,7 +61,9 @@ import com.android.dialer.logging.UiAction;
import com.android.dialer.performancereport.PerformanceReport;
import com.android.dialer.postcall.PostCall;
import com.android.dialer.precall.PreCall;
import com.android.dialer.rtt.RttTranscriptUtil;
import com.google.common.base.Preconditions;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.i18n.phonenumbers.NumberParseException;
import com.google.i18n.phonenumbers.PhoneNumberUtil;
import com.google.i18n.phonenumbers.Phonenumber.PhoneNumber;
@@ -91,6 +96,7 @@ abstract class CallDetailsActivityCommon extends AppCompatActivity {

  private CallDetailsAdapterCommon adapter;
  private CallDetailsEntries callDetailsEntries;
  private UiListener<CallDetailsEntries> checkRttTranscriptAvailabilityListener;

  /**
   * Handles the intent that launches {@link OldCallDetailsActivity} or {@link CallDetailsActivity},
@@ -121,6 +127,9 @@ abstract class CallDetailsActivityCommon extends AppCompatActivity {
        });
    handleIntent(getIntent());
    setupRecyclerViewForEntries();
    checkRttTranscriptAvailabilityListener =
        DialerExecutorComponent.get(this)
            .createUiListener(getFragmentManager(), "Query RTT transcript availability");
  }

  @Override
@@ -143,6 +152,40 @@ abstract class CallDetailsActivityCommon extends AppCompatActivity {
    EnrichedCallComponent.get(this)
        .getEnrichedCallManager()
        .requestAllHistoricalData(getNumber(), callDetailsEntries);
    checkRttTranscriptAvailabilityListener.listen(
        this,
        checkRttTranscriptAvailability(),
        this::setCallDetailsEntries,
        throwable -> {
          throw new RuntimeException(throwable);
        });
  }

  private ListenableFuture<CallDetailsEntries> checkRttTranscriptAvailability() {
    return DialerExecutorComponent.get(this)
        .backgroundExecutor()
        .submit(() -> checkRttTranscriptAvailabilityInBackground(callDetailsEntries));
  }

  /**
   * Check RTT transcript availability.
   *
   * @param input the original {@link CallDetailsEntries}
   * @return {@link CallDetailsEntries} with updated RTT transcript availability.
   */
  @WorkerThread
  private CallDetailsEntries checkRttTranscriptAvailabilityInBackground(
      @Nullable CallDetailsEntries input) {
    RttTranscriptUtil rttTranscriptUtil = new RttTranscriptUtil(this);

    CallDetailsEntries.Builder mutableCallDetailsEntries = CallDetailsEntries.newBuilder();
    for (CallDetailsEntry entry : input.getEntriesList()) {
      CallDetailsEntry.Builder newEntry = CallDetailsEntry.newBuilder().mergeFrom(entry);
      newEntry.setHasRttTranscript(
          rttTranscriptUtil.checkRttTranscriptAvailability(String.valueOf(entry.getDate())));
      mutableCallDetailsEntries.addEntries(newEntry.build());
    }
    return mutableCallDetailsEntries.build();
  }

  @Override
@@ -185,8 +228,13 @@ abstract class CallDetailsActivityCommon extends AppCompatActivity {
    super.onBackPressed();
  }

  @MainThread
  protected final void setCallDetailsEntries(CallDetailsEntries entries) {
    Assert.isMainThread();
    this.callDetailsEntries = entries;
    if (adapter != null) {
      adapter.updateCallDetailsEntries(entries);
    }
  }

  protected final CallDetailsEntries getCallDetailsEntries() {
@@ -415,7 +463,7 @@ abstract class CallDetailsActivityCommon extends AppCompatActivity {
      Map<CallDetailsEntry, List<HistoryResult>> mappedResults =
          getAllHistoricalData(activity.getNumber(), activity.callDetailsEntries);

      activity.adapter.updateCallDetailsEntries(
      activity.setCallDetailsEntries(
          generateAndMapNewCallDetailsEntriesHistoryResults(
              activity.getNumber(), activity.callDetailsEntries, mappedResults));
    }
+3 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.dialer.calldetails;

import android.content.Context;
import android.support.annotation.CallSuper;
import android.support.annotation.MainThread;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.RecyclerView.ViewHolder;
import android.view.LayoutInflater;
@@ -137,7 +138,9 @@ abstract class CallDetailsAdapterCommon extends RecyclerView.Adapter<RecyclerVie
    return callDetailsEntries;
  }

  @MainThread
  final void updateCallDetailsEntries(CallDetailsEntries entries) {
    Assert.isMainThread();
    callDetailsEntries = entries;
    notifyDataSetChanged();
  }
+17 −0
Original line number Diff line number Diff line
@@ -55,6 +55,7 @@ public class CallDetailsEntryViewHolder extends ViewHolder {

  private final TextView multimediaDetails;
  private final TextView postCallNote;
  private final TextView rttTranscript;

  private final ImageView multimediaImage;

@@ -81,6 +82,7 @@ public class CallDetailsEntryViewHolder extends ViewHolder {
    multimediaImage = (ImageView) container.findViewById(R.id.multimedia_image);
    multimediaAttachmentsNumber =
        (TextView) container.findViewById(R.id.multimedia_attachments_number);
    rttTranscript = container.findViewById(R.id.rtt_transcript);
  }

  void setCallDetails(
@@ -94,6 +96,9 @@ public class CallDetailsEntryViewHolder extends ViewHolder {
        (entry.getFeatures() & Calls.FEATURES_PULLED_EXTERNALLY)
            == Calls.FEATURES_PULLED_EXTERNALLY;
    boolean isDuoCall = entry.getIsDuoCall();
    boolean isRttCall =
        BuildCompat.isAtLeastP()
            && (entry.getFeatures() & Calls.FEATURES_RTT) == Calls.FEATURES_RTT;

    callTime.setTextColor(getColorForCallType(context, callType));
    callTypeIcon.clear();
@@ -123,6 +128,18 @@ public class CallDetailsEntryViewHolder extends ViewHolder {
              context, entry.getDuration(), entry.getDataUsage()));
    }
    setMultimediaDetails(number, entry, showMultimediaDivider);
    if (isRttCall) {
      if (entry.getHasRttTranscript()) {
        rttTranscript.setText(R.string.rtt_transcript_link);
        rttTranscript.setTextAppearance(R.style.RttTranscriptLink);
        rttTranscript.setClickable(true);
      } else {
        rttTranscript.setText(R.string.rtt_transcript_not_available);
        rttTranscript.setTextAppearance(R.style.RttTranscriptMessage);
        rttTranscript.setClickable(false);
      }
      rttTranscript.setVisibility(View.VISIBLE);
    }
  }

  private void setMultimediaDetails(String number, CallDetailsEntry entry, boolean showDivider) {
+1 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ message CallDetailsEntries {
    optional int64 data_usage = 6;
    repeated enrichedcall.historyquery.proto.HistoryResult history_results = 7;
    optional bool is_duo_call = 8;
    optional bool has_rtt_transcript = 9;
  }

  repeated CallDetailsEntry entries = 1;
Loading