diff options
Diffstat (limited to 'java/com/android/dialer/app/calllog/CallLogAdapter.java')
-rw-r--r-- | java/com/android/dialer/app/calllog/CallLogAdapter.java | 72 |
1 files changed, 45 insertions, 27 deletions
diff --git a/java/com/android/dialer/app/calllog/CallLogAdapter.java b/java/com/android/dialer/app/calllog/CallLogAdapter.java index 8d84e8ea7..b23e18d6b 100644 --- a/java/com/android/dialer/app/calllog/CallLogAdapter.java +++ b/java/com/android/dialer/app/calllog/CallLogAdapter.java @@ -35,7 +35,6 @@ import android.support.annotation.WorkerThread; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView.ViewHolder; import android.telecom.PhoneAccountHandle; -import android.telephony.PhoneNumberUtils; import android.text.TextUtils; import android.util.ArrayMap; import android.util.ArraySet; @@ -74,6 +73,7 @@ import com.android.dialer.phonenumbercache.ContactInfoHelper; import com.android.dialer.phonenumberutil.PhoneNumberHelper; import com.android.dialer.spam.Spam; import com.android.dialer.util.PermissionsUtil; +import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Set; @@ -141,6 +141,12 @@ public class CallLogAdapter extends GroupingListAdapter viewHolder.isCallComposerCapable = capabilities != null && capabilities.supportsCallComposer(); + CallDetailsEntries callDetailsEntries = viewHolder.getDetailedPhoneDetails(); + setCallDetailsEntriesHistoryResults( + viewHolder.number, + callDetailsEntries, + getAllHistoricalData(viewHolder.number, callDetailsEntries)); + if (viewHolder.rowId == mCurrentlyExpandedRowId) { // Hide actions, if the clicked item is the expanded item. viewHolder.showActions(false); @@ -461,6 +467,9 @@ public class CallLogAdapter extends GroupingListAdapter // the value will be false while capabilities are requested. mExpandCollapseListener will // attempt to set the field properly in that case views.isCallComposerCapable = isCallComposerCapable(views.number); + setCallDetailsEntriesHistoryResults( + views.number, callDetailsEntries, getAllHistoricalData(views.number, callDetailsEntries)); + views.setDetailedPhoneDetails(callDetailsEntries); final AsyncTask<Void, Void, Boolean> loadDataTask = new AsyncTask<Void, Void, Boolean>() { @Override @@ -482,35 +491,9 @@ public class CallLogAdapter extends GroupingListAdapter .checkSpamStatusSynchronous(views.number, views.countryIso); details.isSpam = views.isSpam; } - if (isCancelled()) { - return false; - } - setCallDetailsEntriesHistoryResults( - PhoneNumberUtils.formatNumberToE164(views.number, views.countryIso), - callDetailsEntries); - views.setDetailedPhoneDetails(callDetailsEntries); return !isCancelled() && loadData(views, rowId, details); } - private void setCallDetailsEntriesHistoryResults( - @Nullable String number, CallDetailsEntries callDetailsEntries) { - if (number == null) { - return; - } - Map<CallDetailsEntry, List<HistoryResult>> mappedResults = - getEnrichedCallManager().getAllHistoricalData(number, callDetailsEntries); - for (CallDetailsEntry entry : callDetailsEntries.entries) { - List<HistoryResult> results = mappedResults.get(entry); - if (results != null) { - entry.historyResults = mappedResults.get(entry).toArray(new HistoryResult[0]); - LogUtil.v( - "CallLogAdapter.setCallDetailsEntriesHistoryResults", - "mapped %d results", - entry.historyResults.length); - } - } - } - @Override protected void onPostExecute(Boolean success) { views.isLoaded = true; @@ -545,6 +528,41 @@ public class CallLogAdapter extends GroupingListAdapter return capabilities.supportsCallComposer(); } + @NonNull + private Map<CallDetailsEntry, List<HistoryResult>> getAllHistoricalData( + @Nullable String number, @NonNull CallDetailsEntries entries) { + if (number == null) { + return Collections.emptyMap(); + } + + Map<CallDetailsEntry, List<HistoryResult>> historicalData = + getEnrichedCallManager().getAllHistoricalData(number, entries); + if (historicalData == null) { + getEnrichedCallManager().requestAllHistoricalData(number, entries); + return Collections.emptyMap(); + } + return historicalData; + } + + private void setCallDetailsEntriesHistoryResults( + @Nullable String number, + @NonNull CallDetailsEntries callDetailsEntries, + @NonNull Map<CallDetailsEntry, List<HistoryResult>> mappedResults) { + if (number == null) { + return; + } + for (CallDetailsEntry entry : callDetailsEntries.entries) { + List<HistoryResult> results = mappedResults.get(entry); + if (results != null) { + entry.historyResults = mappedResults.get(entry).toArray(new HistoryResult[0]); + LogUtil.v( + "CallLogAdapter.setCallDetailsEntriesHistoryResults", + "mapped %d results", + entry.historyResults.length); + } + } + } + /** * Initialize PhoneCallDetails by reading all data from cursor. This method must be run on main * thread since cursor is not thread safe. |