[android] Fixed passing the chosen dates across map and search screen (#13535)

* [android] Fixed passing the chosen dates across map and search screen.
Refactored setting and resetting the filter and filter params, i.e. splitted the logic in different methods(set and reset).

* [android] Made filterParams paramater nullable in setFilterParams method
This commit is contained in:
Aleksandr Zatsepin 2020-08-11 14:09:54 +03:00 committed by GitHub
parent d04625668e
commit b629b2b38d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 49 additions and 35 deletions

View file

@ -434,9 +434,10 @@ public class MwmActivity extends BaseMwmFragmentActivity
if (mFilterController == null || data == null)
return;
BookingFilterParams params = data.getParcelableExtra(FilterActivity.EXTRA_FILTER_PARAMS);
HotelsFilter filter = data.getParcelableExtra(FilterActivity.EXTRA_FILTER);
mFilterController.setFilterAndParams(filter, params);
mFilterController.setFilter(filter);
BookingFilterParams params = data.getParcelableExtra(FilterActivity.EXTRA_FILTER_PARAMS);
mFilterController.setFilterParams(params);
showSearch(query);
}
@ -465,7 +466,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
SearchActivity.start(this, query, filter, params);
}
if (mFilterController != null)
mFilterController.resetFilter();
mFilterController.resetFilterAndParams();
}
public void showEditor()
@ -1159,9 +1160,9 @@ public class MwmActivity extends BaseMwmFragmentActivity
setupSearchQuery(data);
mFilterController.setFilter(data.getParcelableExtra(FilterActivity.EXTRA_FILTER));
BookingFilterParams params = data.getParcelableExtra(FilterActivity.EXTRA_FILTER_PARAMS);
mFilterController.setFilterAndParams(data.getParcelableExtra(FilterActivity.EXTRA_FILTER),
params);
mFilterController.setFilterParams(params);
mFilterController.updateFilterButtonsVisibility(mFilterController.isSatisfiedForSearch());
runSearch();
}
@ -1371,7 +1372,8 @@ public class MwmActivity extends BaseMwmFragmentActivity
{
mFilterController.updateFilterButtonsVisibility(true);
mFilterController.show(!TextUtils.isEmpty(SearchEngine.INSTANCE.getQuery()), true);
mFilterController.setFilterAndParams(filter, params);
mFilterController.setFilter(filter);
mFilterController.setFilterParams(params);
return true;
}
@ -1591,7 +1593,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
{
SearchEngine.INSTANCE.cancelInteractiveSearch();
if (mFilterController != null)
mFilterController.resetFilter();
mFilterController.resetFilterAndParams();
mSearchController.clear();
return;
}
@ -2605,7 +2607,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
public void onSearchClearClick()
{
if (mFilterController != null)
mFilterController.resetFilter();
mFilterController.resetFilterAndParams();
}
@Override

View file

@ -46,8 +46,7 @@ public class SearchFilterController implements SearchToolbarController.FilterPar
@Override
public void onClick(View v)
{
setFilterAndParams(null, null);
mToolbarController.setFilterParams(null);
resetFilterAndParams();
if (mFilterListener != null)
mFilterListener.onFilterClear();
}
@ -144,11 +143,18 @@ public class SearchFilterController implements SearchToolbarController.FilterPar
return mFilter;
}
public void setFilterAndParams(@Nullable HotelsFilter filter, @Nullable BookingFilterParams params)
public void setFilterParams(@Nullable BookingFilterParams params)
{
if (params == null)
return;
mToolbarController.setFilterParams(params);
mBookingFilterParams = params;
}
public void setFilter(@Nullable HotelsFilter filter)
{
mFilter = filter;
if (params != null)
mToolbarController.setFilterParams(params);
if (mFilter != null)
{
mFilterIcon.setOnClickListener(mClearListener);
@ -171,13 +177,19 @@ public class SearchFilterController implements SearchToolbarController.FilterPar
}
}
public void resetFilter()
public void resetFilterAndParams()
{
setFilterAndParams(null, null);
mToolbarController.setFilterParams(null);
setFilter(null);
resetFilterParams();
updateFilterButtonsVisibility(false);
}
private void resetFilterParams()
{
mToolbarController.resetFilterParams();
mBookingFilterParams = null;
}
@Nullable
public BookingFilterParams getBookingFilterParams()
{
@ -194,7 +206,8 @@ public class SearchFilterController implements SearchToolbarController.FilterPar
public void onRestoreState(@NonNull Bundle state)
{
setFilterAndParams(state.getParcelable(STATE_HOTEL_FILTER), state.getParcelable(STATE_FILTER_PARAMS));
setFilter(state.getParcelable(STATE_HOTEL_FILTER));
setFilterParams(state.getParcelable(STATE_FILTER_PARAMS));
updateFilterButtonsVisibility(state.getBoolean(STATE_HOTEL_FILTER_VISIBILITY, false));
}

View file

@ -146,7 +146,7 @@ public class SearchFragment extends BaseMwmFragment
{
super.clear();
if (mFilterController != null)
mFilterController.resetFilter();
mFilterController.resetFilterAndParams();
}
}
@ -363,8 +363,8 @@ public class SearchFragment extends BaseMwmFragment
}, mToolbarController);
if (savedInstanceState != null)
mFilterController.onRestoreState(savedInstanceState);
if (mInitialHotelsFilter != null || mInitialFilterParams != null)
mFilterController.setFilterAndParams(mInitialHotelsFilter, mInitialFilterParams);
mFilterController.setFilter(mInitialHotelsFilter);
mFilterController.setFilterParams(mInitialFilterParams);
mFilterController.updateFilterButtonsVisibility(mFilterController.isSatisfiedForSearch());
mSearchAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver()
@ -502,7 +502,7 @@ public class SearchFragment extends BaseMwmFragment
}
if (mFilterController != null)
mFilterController.resetFilter();
mFilterController.resetFilterAndParams();
mToolbarController.deactivate();
@ -672,10 +672,7 @@ public class SearchFragment extends BaseMwmFragment
{
mFilterController.updateFilterButtonsVisibility(isHotel);
if (!isHotel)
{
mFilterController.setFilterAndParams(null, null);
mToolbarController.setFilterParams(null);
}
mFilterController.resetFilterAndParams();
}
}
@ -697,8 +694,8 @@ public class SearchFragment extends BaseMwmFragment
if (mFilterController == null)
return;
mFilterController.setFilterAndParams(data.getParcelableExtra(FilterActivity.EXTRA_FILTER),
data.getParcelableExtra(FilterActivity.EXTRA_FILTER_PARAMS));
mFilterController.setFilter(data.getParcelableExtra(FilterActivity.EXTRA_FILTER));
mFilterController.setFilterParams(data.getParcelableExtra(FilterActivity.EXTRA_FILTER_PARAMS));
runSearch();
break;
}

View file

@ -132,18 +132,11 @@ public class SearchToolbarController extends ToolbarController
updateButtons(true);
}
public void setFilterParams(@Nullable BookingFilterParams params)
public void setFilterParams(@NonNull BookingFilterParams params)
{
if (mChooseDatesChip == null)
return;
if (params == null)
{
mChooseDatesChip.setText(R.string.date_picker_сhoose_dates_cta);
mChosenDates = null;
return;
}
mChosenDates = new Pair<>(params.getCheckinMillisec(), params.getCheckoutMillisec());
SimpleDateFormat dateFormater = new SimpleDateFormat(DAY_OF_MONTH_PATTERN,
Locale.getDefault());
@ -155,6 +148,15 @@ public class SearchToolbarController extends ToolbarController
start, end));
}
public void resetFilterParams()
{
if (mChooseDatesChip == null)
return;
mChooseDatesChip.setText(R.string.date_picker_сhoose_dates_cta);
mChosenDates = null;
}
private void updateButtons(boolean queryEmpty)
{
UiUtils.showIf(supportsVoiceSearch() && queryEmpty && mVoiceInputSupported, mVoiceInput);