diff --git a/src/com/android/dialer/CallDetailActivity.java b/src/com/android/dialer/CallDetailActivity.java
index ab63ddc..0d943e0 100644
--- a/src/com/android/dialer/CallDetailActivity.java
+++ b/src/com/android/dialer/CallDetailActivity.java
@@ -161,7 +161,8 @@
             mHistoryList.setAdapter(
                     new CallDetailHistoryAdapter(mContext, mInflater, mCallTypeHelper, details));
 
-            updatePhotoAndBlockActionItem();
+            updateFilteredNumberChanges();
+            updateContactPhoto();
 
             findViewById(R.id.call_detail).setVisibility(View.VISIBLE);
         }
@@ -380,15 +381,15 @@
 
     @Override
     public void onChangeFilteredNumberSuccess() {
-        updatePhotoAndBlockActionItem();
+        updateFilteredNumberChanges();
     }
 
     @Override
     public void onChangeFilteredNumberUndo() {
-        updatePhotoAndBlockActionItem();
+        updateFilteredNumberChanges();
     }
 
-    private void updatePhotoAndBlockActionItem() {
+    private void updateFilteredNumberChanges() {
         if (mDetails == null ||
                 !FilteredNumbersUtil.canBlockNumber(this, mNumber, mDetails.countryIso)) {
             return;
@@ -399,14 +400,11 @@
                     @Override
                     public void onCheckComplete(Integer id) {
                         mBlockedNumberId = id;
-
-                        updateContactPhoto();
                         updateBlockActionItem();
                     }
                 }, mNumber, mDetails.countryIso);
 
         if (!success) {
-            updateContactPhoto();
             updateBlockActionItem();
         }
     }
@@ -417,11 +415,6 @@
             return;
         }
 
-        if (mBlockedNumberId != null) {
-            mQuickContactBadge.setImageDrawable(mContext.getDrawable(R.drawable.blocked_contact));
-            return;
-        }
-
         final boolean isVoicemailNumber =
                 PhoneNumberUtil.isVoicemailNumber(mContext, mDetails.accountHandle, mNumber);
         final boolean isBusiness = mContactInfoHelper.isBusiness(mDetails.sourceType);
