Update dynamic shortcuts to match speed dial pinned positions.

6. App shortcut list should refresh when changes are made to
   favorites, does not do so currently.

Bug: 79873008
Test: manual
PiperOrigin-RevId: 197073422
Change-Id: Ia72bdfab39a11daf8811cb122e819964ec37594f
diff --git a/java/com/android/dialer/shortcuts/ShortcutRefresher.java b/java/com/android/dialer/shortcuts/ShortcutRefresher.java
index 3201d59..7776aa9 100644
--- a/java/com/android/dialer/shortcuts/ShortcutRefresher.java
+++ b/java/com/android/dialer/shortcuts/ShortcutRefresher.java
@@ -25,6 +25,7 @@
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DialerExecutor.Worker;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
+import com.android.dialer.speeddial.loader.SpeedDialUiItem;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -52,6 +53,20 @@
         .executeSerial(new ArrayList<>(contacts));
   }
 
+  public static List<ContactEntry> speedDialUiItemsToContactEntries(List<SpeedDialUiItem> items) {
+    List<ContactEntry> contactEntries = new ArrayList<>();
+    for (SpeedDialUiItem item : items) {
+      ContactEntry entry = new ContactEntry();
+      entry.id = item.contactId();
+      entry.lookupKey = item.lookupKey();
+      // SpeedDialUiItem name's are already configured for alternative display orders, so we don't
+      // need to account for them in these entries.
+      entry.namePrimary = item.name();
+      contactEntries.add(entry);
+    }
+    return contactEntries;
+  }
+
   private static final class RefreshWorker implements Worker<List<ContactEntry>, Void> {
     private final Context context;
 
diff --git a/java/com/android/dialer/speeddial/SpeedDialFragment.java b/java/com/android/dialer/speeddial/SpeedDialFragment.java
index a645fb8..c48eb8d 100644
--- a/java/com/android/dialer/speeddial/SpeedDialFragment.java
+++ b/java/com/android/dialer/speeddial/SpeedDialFragment.java
@@ -56,6 +56,7 @@
 import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
 import com.android.dialer.precall.PreCall;
+import com.android.dialer.shortcuts.ShortcutRefresher;
 import com.android.dialer.speeddial.ContextMenu.ContextMenuItemListener;
 import com.android.dialer.speeddial.FavoritesViewHolder.FavoriteContactsListener;
 import com.android.dialer.speeddial.HeaderViewHolder.SpeedDialHeaderListener;
@@ -209,6 +210,9 @@
                 }),
         new DefaultFutureCallback<>(),
         DialerExecutorComponent.get(getContext()).backgroundExecutor());
+    ShortcutRefresher.refresh(
+        getContext(),
+        ShortcutRefresher.speedDialUiItemsToContactEntries(adapter.getSpeedDialUiItems()));
   }
 
   @Override