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

Commit 9f531ee6 authored by Alina Zaidi's avatar Alina Zaidi
Browse files

Always check for availability of widgets before changing visibility of

recycler view and no widgets view.


Bug: 186117900
Test: Tested manually
Change-Id: I57ac95fee935a54ce70f5793f0b0686b549cbf9e
parent b7f5ab04
Loading
Loading
Loading
Loading
+31 −25
Original line number Diff line number Diff line
@@ -221,7 +221,7 @@ public class WidgetsFullSheet extends BaseWidgetSheet
        WidgetsRecyclerView currentRecyclerView =
                mAdapters.get(currentActivePage).mWidgetsRecyclerView;

        updateNoWidgetsView(currentAdapterHolder);
        updateRecyclerViewVisibility(currentAdapterHolder);
        attachScrollbarToRecyclerView(currentRecyclerView);
        resetExpandedHeaders();
    }
@@ -232,22 +232,17 @@ public class WidgetsFullSheet extends BaseWidgetSheet
        reset();
    }

    private void updateNoWidgetsView(AdapterHolder adapterHolder) {
    private void updateRecyclerViewVisibility(AdapterHolder adapterHolder) {
        boolean isWidgetAvailable = adapterHolder.mWidgetsListAdapter.getItemCount() > 0;
        adapterHolder.mWidgetsRecyclerView.setVisibility(isWidgetAvailable ? VISIBLE : GONE);

        // Always resets the text in case this is updated by search.
        mNoWidgetsView.setText(R.string.no_widgets_available);
        mNoWidgetsView.setText(
                adapterHolder.mAdapterType == AdapterHolder.SEARCH
                        ? R.string.no_search_results
                        : R.string.no_widgets_available);
        mNoWidgetsView.setVisibility(isWidgetAvailable ? GONE : VISIBLE);
    }

    private void updateNoSearchResultsView(boolean isVisible) {
        mNoWidgetsView.setVisibility(isVisible ? VISIBLE : GONE);
        if (isVisible) {
            mNoWidgetsView.setText(R.string.no_search_results);
        }
    }

    private void reset() {
        mAdapters.get(AdapterHolder.PRIMARY).mWidgetsRecyclerView.scrollToTop();
        if (mHasWorkProfile) {
@@ -394,16 +389,22 @@ public class WidgetsFullSheet extends BaseWidgetSheet

    @Override
    public void onWidgetsBound() {
        if (mIsInSearchMode) {
            return;
        }
        List<WidgetsListBaseEntry> allWidgets = mLauncher.getPopupDataProvider().getAllWidgets();

        AdapterHolder primaryUserAdapterHolder = mAdapters.get(AdapterHolder.PRIMARY);
        primaryUserAdapterHolder.mWidgetsListAdapter.setWidgets(allWidgets);
        updateNoWidgetsView(primaryUserAdapterHolder);

        if (mHasWorkProfile) {
            mViewPager.setVisibility(VISIBLE);
            mTabsView.setVisibility(VISIBLE);
            AdapterHolder workUserAdapterHolder = mAdapters.get(AdapterHolder.WORK);
            workUserAdapterHolder.mWidgetsListAdapter.setWidgets(allWidgets);
            onActivePageChanged(mViewPager.getCurrentPage());
        } else {
            updateRecyclerViewVisibility(primaryUserAdapterHolder);
        }
    }

@@ -431,8 +432,7 @@ public class WidgetsFullSheet extends BaseWidgetSheet
    @Override
    public void onSearchResults(List<WidgetsListBaseEntry> entries) {
        mAdapters.get(AdapterHolder.SEARCH).mWidgetsListAdapter.setWidgetsOnSearch(entries);
        updateNoSearchResultsView(
                mAdapters.get(AdapterHolder.SEARCH).mWidgetsListAdapter.getItemCount() == 0);
        updateRecyclerViewVisibility(mAdapters.get(AdapterHolder.SEARCH));
        mAdapters.get(AdapterHolder.SEARCH).mWidgetsRecyclerView.scrollToTop();
    }

@@ -440,19 +440,22 @@ public class WidgetsFullSheet extends BaseWidgetSheet
        mIsInSearchMode = isInSearchMode;
        if (isInSearchMode) {
            mSearchAndRecommendationViewHolder.mRecommendedWidgetsTable.setVisibility(GONE);
        } else {
            onRecommendedWidgetsBound();
        }
            if (mHasWorkProfile) {
            mViewPager.setVisibility(isInSearchMode ? GONE : VISIBLE);
            mTabsView.setVisibility(isInSearchMode ? GONE : VISIBLE);
                mViewPager.setVisibility(GONE);
                mTabsView.setVisibility(GONE);
            } else {
            mAdapters.get(AdapterHolder.PRIMARY).mWidgetsRecyclerView
                    .setVisibility(isInSearchMode ? GONE : VISIBLE);
                mAdapters.get(AdapterHolder.PRIMARY).mWidgetsRecyclerView.setVisibility(GONE);
            }
        mAdapters.get(AdapterHolder.SEARCH).mWidgetsRecyclerView
                .setVisibility(mIsInSearchMode ? VISIBLE : GONE);
            updateRecyclerViewVisibility(mAdapters.get(AdapterHolder.SEARCH));
            // Hide no search results view to prevent it from flashing on enter search.
            mNoWidgetsView.setVisibility(GONE);
        } else {
            mAdapters.get(AdapterHolder.SEARCH).mWidgetsRecyclerView.setVisibility(GONE);
            // Visibility of recommended widgets, recycler views and headers are handled in methods
            // below.
            onRecommendedWidgetsBound();
            onWidgetsBound();
        }
    }

    private void resetExpandedHeaders() {
@@ -462,11 +465,14 @@ public class WidgetsFullSheet extends BaseWidgetSheet

    @Override
    public void onRecommendedWidgetsBound() {
        if (mIsInSearchMode) {
            return;
        }
        List<WidgetItem> recommendedWidgets =
                mLauncher.getPopupDataProvider().getRecommendedWidgets();
        WidgetsRecommendationTableLayout table =
                mSearchAndRecommendationViewHolder.mRecommendedWidgetsTable;
        if (!mIsInSearchMode && recommendedWidgets.size() > 0) {
        if (recommendedWidgets.size() > 0) {
            // TODO(b/185508758): Revert the following log after debugging.
            if (getHeaderViewHeight() == 0) {
                Log.d(TAG, "Header view height is 0 when inflating recommended widgets");