summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/searchfragment/list/NewSearchFragment.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/android/dialer/searchfragment/list/NewSearchFragment.java')
-rw-r--r--java/com/android/dialer/searchfragment/list/NewSearchFragment.java36
1 files changed, 34 insertions, 2 deletions
diff --git a/java/com/android/dialer/searchfragment/list/NewSearchFragment.java b/java/com/android/dialer/searchfragment/list/NewSearchFragment.java
index 2c0281536..7d355c91c 100644
--- a/java/com/android/dialer/searchfragment/list/NewSearchFragment.java
+++ b/java/com/android/dialer/searchfragment/list/NewSearchFragment.java
@@ -37,6 +37,8 @@ import com.android.dialer.animation.AnimUtils;
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
import com.android.dialer.common.concurrent.ThreadUtil;
+import com.android.dialer.enrichedcall.EnrichedCallComponent;
+import com.android.dialer.enrichedcall.EnrichedCallManager.CapabilitiesListener;
import com.android.dialer.searchfragment.common.SearchCursor;
import com.android.dialer.searchfragment.cp2.SearchContactsCursorLoader;
import com.android.dialer.searchfragment.nearbyplaces.NearbyPlacesCursorLoader;
@@ -53,11 +55,16 @@ import java.util.List;
/** Fragment used for searching contacts. */
public final class NewSearchFragment extends Fragment
- implements LoaderCallbacks<Cursor>, OnEmptyViewActionButtonClickedListener {
+ implements LoaderCallbacks<Cursor>,
+ OnEmptyViewActionButtonClickedListener,
+ CapabilitiesListener {
// Since some of our queries can generate network requests, we should delay them until the user
// stops typing to prevent generating too much network traffic.
private static final int NETWORK_SEARCH_DELAY_MILLIS = 300;
+ // To prevent constant capabilities updates refreshing the adapter, we want to add a delay between
+ // updates so they are bundled together
+ private static final int ENRICHED_CALLING_CAPABILITIES_UPDATED_DELAY = 400;
@VisibleForTesting public static final int READ_CONTACTS_PERMISSION_REQUEST_CODE = 1;
@@ -77,6 +84,7 @@ public final class NewSearchFragment extends Fragment
() -> getLoaderManager().restartLoader(NEARBY_PLACES_LOADER_ID, null, this);
private final Runnable loadRemoteContactsRunnable =
() -> getLoaderManager().restartLoader(REMOTE_CONTACTS_LOADER_ID, null, this);
+ private final Runnable capabilitiesUpdatedRunnable = () -> adapter.notifyDataSetChanged();
private Runnable updatePositionRunnable;
@@ -85,7 +93,7 @@ public final class NewSearchFragment extends Fragment
public View onCreateView(
LayoutInflater inflater, @Nullable ViewGroup parent, @Nullable Bundle bundle) {
View view = inflater.inflate(R.layout.fragment_search, parent, false);
- adapter = new SearchAdapter(getContext(), new SearchCursorManager());
+ adapter = new SearchAdapter(getActivity(), new SearchCursorManager());
emptyContentView = view.findViewById(R.id.empty_view);
recyclerView = view.findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
@@ -192,6 +200,7 @@ public final class NewSearchFragment extends Fragment
super.onDestroy();
ThreadUtil.getUiThreadHandler().removeCallbacks(loadNearbyPlacesRunnable);
ThreadUtil.getUiThreadHandler().removeCallbacks(loadRemoteContactsRunnable);
+ ThreadUtil.getUiThreadHandler().removeCallbacks(capabilitiesUpdatedRunnable);
}
private void loadNearbyPlacesCursor() {
@@ -249,6 +258,29 @@ public final class NewSearchFragment extends Fragment
.postDelayed(loadRemoteContactsRunnable, NETWORK_SEARCH_DELAY_MILLIS);
}
+ @Override
+ public void onResume() {
+ super.onResume();
+ EnrichedCallComponent.get(getContext())
+ .getEnrichedCallManager()
+ .registerCapabilitiesListener(this);
+ }
+
+ @Override
+ public void onPause() {
+ super.onPause();
+ EnrichedCallComponent.get(getContext())
+ .getEnrichedCallManager()
+ .unregisterCapabilitiesListener(this);
+ }
+
+ @Override
+ public void onCapabilitiesUpdated() {
+ ThreadUtil.getUiThreadHandler().removeCallbacks(capabilitiesUpdatedRunnable);
+ ThreadUtil.getUiThreadHandler()
+ .postDelayed(capabilitiesUpdatedRunnable, ENRICHED_CALLING_CAPABILITIES_UPDATED_DELAY);
+ }
+
// Currently, setting up multiple FakeContentProviders doesn't work and results in this fragment
// being untestable while it can query multiple datasources. This is a temporary fix.
// TODO(b/64099602): Remove this method and test this fragment with multiple data sources