From d14e242f72af9f069132b2ed17064486d6041f42 Mon Sep 17 00:00:00 2001 From: Arsentiy Milchakov Date: Wed, 18 Mar 2020 15:27:42 +0300 Subject: [PATCH] [android] download on map banners are added --- android/jni/com/mapswithme/maps/Framework.cpp | 27 ++--- android/res/drawable/ic_logo_mts.xml | 12 ++ android/res/drawable/ic_logo_skyeng.xml | 12 ++ android/res/drawable/ic_logo_tinkoff.xml | 111 ++++++++++++++++++ android/res/layout/onmap_downloader.xml | 2 - .../src/com/mapswithme/maps/Framework.java | 2 +- .../DownloaderBannerConfigStrategy.java | 12 ++ ...DownloaderBannerConfigStrategyDefault.java | 15 +++ ...DownloaderBannerConfigStrategyPartner.java | 50 ++++++++ .../maps/downloader/DownloaderBannerType.java | 84 +++++++++++++ .../downloader/DownloaderPromoBanner.java | 53 +++++---- .../DownloaderPromoBannerStats.java | 39 ------ .../maps/downloader/OnmapDownloader.java | 49 +++++--- .../util/statistics/Statistics.java | 10 +- iphone/Maps/Core/Search/MWMSearch.mm | 10 +- 15 files changed, 380 insertions(+), 108 deletions(-) create mode 100644 android/res/drawable/ic_logo_mts.xml create mode 100644 android/res/drawable/ic_logo_skyeng.xml create mode 100644 android/res/drawable/ic_logo_tinkoff.xml create mode 100644 android/src/com/mapswithme/maps/downloader/DownloaderBannerConfigStrategy.java create mode 100644 android/src/com/mapswithme/maps/downloader/DownloaderBannerConfigStrategyDefault.java create mode 100644 android/src/com/mapswithme/maps/downloader/DownloaderBannerConfigStrategyPartner.java create mode 100644 android/src/com/mapswithme/maps/downloader/DownloaderBannerType.java delete mode 100644 android/src/com/mapswithme/maps/downloader/DownloaderPromoBannerStats.java diff --git a/android/jni/com/mapswithme/maps/Framework.cpp b/android/jni/com/mapswithme/maps/Framework.cpp index e8494d30c9..a1dcd02802 100644 --- a/android/jni/com/mapswithme/maps/Framework.cpp +++ b/android/jni/com/mapswithme/maps/Framework.cpp @@ -1930,9 +1930,6 @@ Java_com_mapswithme_maps_Framework_nativeDeleteSavedRoutePoints() JNIEXPORT jobjectArray JNICALL Java_com_mapswithme_maps_Framework_nativeGetSearchBanners(JNIEnv * env, jclass) { - auto const & purchase = frm()->GetPurchase(); - if (purchase && purchase->IsSubscriptionActive(SubscriptionType::RemoveAds)) - return nullptr; return usermark_helper::ToBannersArray(env, frm()->GetAdsEngine().GetSearchBanners()); } @@ -2035,24 +2032,20 @@ Java_com_mapswithme_maps_Framework_nativeGetDownloaderPromoBanner(JNIEnv * env, static jmethodID const downloaderPromoBannerConstructor = jni::GetConstructorID(env, downloaderPromoBannerClass, "(ILjava/lang/String;)V"); - auto const & purchase = frm()->GetPurchase(); - bool const hasSubscription = purchase != nullptr && - purchase->IsSubscriptionActive(SubscriptionType::RemoveAds); - - promo::DownloaderPromo::Banner banner; - auto const policy = platform::GetCurrentNetworkPolicy(); - if (policy.CanUse()) + std::vector banners; + auto const pos = frm()->GetCurrentPosition(); + if (pos) { - auto const * promoApi = frm()->GetPromoApi(policy); - CHECK(promoApi != nullptr, ()); - banner = promo::DownloaderPromo::GetBanner(frm()->GetStorage(), *promoApi, - jni::ToNativeString(env, mwmId), - languages::GetCurrentNorm(), hasSubscription); + banners = frm()->GetAdsEngine().GetDownloadOnMapBanners(jni::ToNativeString(env, mwmId), *pos, + languages::GetCurrentNorm()); } - jni::TScopedLocalRef const url(env, jni::ToJavaString(env, banner.m_url)); + if (banners.empty()) + return nullptr; + + jni::TScopedLocalRef const url(env, jni::ToJavaString(env, banners[0].m_value)); return env->NewObject(downloaderPromoBannerClass, downloaderPromoBannerConstructor, - static_cast(banner.m_type), url.get()); + static_cast(banners[0].m_type), url.get()); } JNIEXPORT jboolean JNICALL diff --git a/android/res/drawable/ic_logo_mts.xml b/android/res/drawable/ic_logo_mts.xml new file mode 100644 index 0000000000..b18e9741a8 --- /dev/null +++ b/android/res/drawable/ic_logo_mts.xml @@ -0,0 +1,12 @@ + + + + diff --git a/android/res/drawable/ic_logo_skyeng.xml b/android/res/drawable/ic_logo_skyeng.xml new file mode 100644 index 0000000000..c6b6beee6c --- /dev/null +++ b/android/res/drawable/ic_logo_skyeng.xml @@ -0,0 +1,12 @@ + + + + diff --git a/android/res/drawable/ic_logo_tinkoff.xml b/android/res/drawable/ic_logo_tinkoff.xml new file mode 100644 index 0000000000..f4a3921bb5 --- /dev/null +++ b/android/res/drawable/ic_logo_tinkoff.xml @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android/res/layout/onmap_downloader.xml b/android/res/layout/onmap_downloader.xml index 692a6a3cab..37cd46a6db 100644 --- a/android/res/layout/onmap_downloader.xml +++ b/android/res/layout/onmap_downloader.xml @@ -113,8 +113,6 @@ android:fontFamily="@string/robotoMedium" android:textAllCaps="false" android:textSize="@dimen/text_size_body_3" - android:text="@string/banner_megafon_banner_button" - android:background="@drawable/button_megafon" style="?android:attr/borderlessButtonStyle" android:textColor="@color/white_primary" tools:targetApi="jelly_bean"/> diff --git a/android/src/com/mapswithme/maps/Framework.java b/android/src/com/mapswithme/maps/Framework.java index 7dd7c4a89c..8b02bc677a 100644 --- a/android/src/com/mapswithme/maps/Framework.java +++ b/android/src/com/mapswithme/maps/Framework.java @@ -503,7 +503,7 @@ public class Framework @NonNull public static native String nativeMoPubInitializationBannerId(); - @NonNull + @Nullable public static native DownloaderPromoBanner nativeGetDownloaderPromoBanner(@NonNull String mwmId); public static native boolean nativeHasMegafonCategoryBanner(); diff --git a/android/src/com/mapswithme/maps/downloader/DownloaderBannerConfigStrategy.java b/android/src/com/mapswithme/maps/downloader/DownloaderBannerConfigStrategy.java new file mode 100644 index 0000000000..4151a26c7d --- /dev/null +++ b/android/src/com/mapswithme/maps/downloader/DownloaderBannerConfigStrategy.java @@ -0,0 +1,12 @@ +package com.mapswithme.maps.downloader; + +import android.view.View; + +import androidx.annotation.IdRes; +import androidx.annotation.NonNull; + +interface DownloaderBannerConfigStrategy +{ + void ConfigureView(@NonNull View parent, @IdRes int iconViewId, @IdRes int messageViewId, + @IdRes int buttonViewId); +} diff --git a/android/src/com/mapswithme/maps/downloader/DownloaderBannerConfigStrategyDefault.java b/android/src/com/mapswithme/maps/downloader/DownloaderBannerConfigStrategyDefault.java new file mode 100644 index 0000000000..069697ea75 --- /dev/null +++ b/android/src/com/mapswithme/maps/downloader/DownloaderBannerConfigStrategyDefault.java @@ -0,0 +1,15 @@ +package com.mapswithme.maps.downloader; + +import android.view.View; + +import androidx.annotation.IdRes; +import androidx.annotation.NonNull; + +class DownloaderBannerConfigStrategyDefault implements DownloaderBannerConfigStrategy +{ + @Override + public void ConfigureView(@NonNull View parent, @IdRes int iconViewId, @IdRes int messageViewId, + @IdRes int buttonViewId) + { + } +} diff --git a/android/src/com/mapswithme/maps/downloader/DownloaderBannerConfigStrategyPartner.java b/android/src/com/mapswithme/maps/downloader/DownloaderBannerConfigStrategyPartner.java new file mode 100644 index 0000000000..5c54af42ce --- /dev/null +++ b/android/src/com/mapswithme/maps/downloader/DownloaderBannerConfigStrategyPartner.java @@ -0,0 +1,50 @@ +package com.mapswithme.maps.downloader; + +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.ColorInt; +import androidx.annotation.DrawableRes; +import androidx.annotation.IdRes; +import androidx.annotation.NonNull; +import androidx.annotation.StringRes; + +class DownloaderBannerConfigStrategyPartner implements DownloaderBannerConfigStrategy +{ + @DrawableRes + private int mIcon; + @StringRes + private int mMessage; + @StringRes + private int mButtonText; + @ColorInt + private int mButtonTextColor; + @ColorInt + private int mButtonColor; + + DownloaderBannerConfigStrategyPartner(@DrawableRes int icon, @StringRes int message, + @StringRes int buttonText, @ColorInt int buttonTextColor, + @ColorInt int buttonColor) + { + mIcon = icon; + mMessage = message; + mButtonText = buttonText; + mButtonTextColor = buttonTextColor; + mButtonColor = buttonColor; + } + + @Override + public void ConfigureView(@NonNull View parent, @IdRes int iconViewId, @IdRes int messageViewId, + @IdRes int buttonViewId) + { + ImageView icon = parent.findViewById(iconViewId); + icon.setImageResource(mIcon); + TextView message = parent.findViewById(messageViewId); + message.setText(mMessage); + TextView button = parent.findViewById(buttonViewId); + button.setText(mButtonText); + button.setTextColor(mButtonTextColor); + button.setBackgroundColor(mButtonColor); + } +} diff --git a/android/src/com/mapswithme/maps/downloader/DownloaderBannerType.java b/android/src/com/mapswithme/maps/downloader/DownloaderBannerType.java new file mode 100644 index 0000000000..227923fa69 --- /dev/null +++ b/android/src/com/mapswithme/maps/downloader/DownloaderBannerType.java @@ -0,0 +1,84 @@ +package com.mapswithme.maps.downloader; + +import android.graphics.Color; + +import androidx.annotation.NonNull; +import com.mapswithme.maps.R; +import com.mapswithme.util.statistics.StatisticValueConverter; +import com.mapswithme.util.statistics.Statistics; + +enum DownloaderBannerType implements StatisticValueConverter +{ + TINKOFF_AIRLINES(new DownloaderBannerConfigStrategyPartner(R.drawable.ic_logo_tinkoff, + R.string.tinkoff_allairlines_map_downloader_title, + R.string.tinkoff_allairlines_map_downloader_cta_button, + Color.parseColor("#000000"), + Color.parseColor("#FFDD2D"))) + { + @NonNull + @Override + public String toStatisticValue() + { + return Statistics.ParamValue.TINKOFF_ALL_AIRLINES; + } + }, + TINKOFF_INSURANCE(new DownloaderBannerConfigStrategyPartner(R.drawable.ic_logo_tinkoff, + R.string.tinkoff_insurance_map_downloader_title, + R.string.tinkoff_insurance_map_downloader_cta_button, + Color.parseColor("#000000"), + Color.parseColor("#FFDD2D"))) + { + @NonNull + @Override + public String toStatisticValue() + { + return Statistics.ParamValue.TINKOFF_INSURANCE; + } + }, + MTS(new DownloaderBannerConfigStrategyPartner(R.drawable.ic_logo_mts, + R.string.mts_map_downloader_title, + R.string.mts_map_downloader_cta_button, + Color.parseColor("#FFFFFF"), + Color.parseColor("#E30611"))) + { + @NonNull + @Override + public String toStatisticValue() + { + return Statistics.ParamValue.SKYENG; + } + }, + SKYENG(new DownloaderBannerConfigStrategyPartner(R.drawable.ic_logo_skyeng, + R.string.skyeng_map_downloader_title, + R.string.skyeng_map_downloader_cta_button, + Color.parseColor("#FFFFFF"), + Color.parseColor("#4287DF"))) + { + @NonNull + @Override + public String toStatisticValue() + { + return Statistics.ParamValue.MTS; + } + }, + BOOKMARK_CATALOG(new DownloaderBannerConfigStrategyDefault()) + { + @NonNull + @Override + public String toStatisticValue() + { + return Statistics.ParamValue.MAPSME_GUIDES; + } + }; + + @NonNull + private final DownloaderBannerConfigStrategy mViewConfigStrategy; + + DownloaderBannerType(@NonNull DownloaderBannerConfigStrategy viewConfigStrategy) + { + mViewConfigStrategy = viewConfigStrategy; + } + + @NonNull + DownloaderBannerConfigStrategy getViewConfigStrategy() { return mViewConfigStrategy; } +} diff --git a/android/src/com/mapswithme/maps/downloader/DownloaderPromoBanner.java b/android/src/com/mapswithme/maps/downloader/DownloaderPromoBanner.java index 3db5b124a1..b72a254d77 100644 --- a/android/src/com/mapswithme/maps/downloader/DownloaderPromoBanner.java +++ b/android/src/com/mapswithme/maps/downloader/DownloaderPromoBanner.java @@ -1,8 +1,14 @@ package com.mapswithme.maps.downloader; +import android.graphics.Color; + +import androidx.annotation.ColorInt; +import androidx.annotation.DrawableRes; import androidx.annotation.IntDef; import androidx.annotation.NonNull; +import androidx.annotation.StringRes; +import com.mapswithme.maps.R; import com.mapswithme.util.statistics.StatisticValueConverter; import java.lang.annotation.Retention; @@ -11,40 +17,37 @@ import java.lang.annotation.RetentionPolicy; /** * Promo banner for on-map downloader. Created by native code. */ -public final class DownloaderPromoBanner implements StatisticValueConverter +public final class DownloaderPromoBanner { - @Retention(RetentionPolicy.SOURCE) - @IntDef({ DOWNLOADER_PROMO_TYPE_NO_PROMO, DOWNLOADER_PROMO_TYPE_BOOKMARK_CATALOG, - DOWNLOADER_PROMO_TYPE_MEGAFON }) - public @interface DownloaderPromoType {} - - // Must be corresponded to DownloaderPromoType in downloader_promo.hpp - public static final int DOWNLOADER_PROMO_TYPE_NO_PROMO = 0; - public static final int DOWNLOADER_PROMO_TYPE_BOOKMARK_CATALOG = 1; - public static final int DOWNLOADER_PROMO_TYPE_MEGAFON = 2; - - @DownloaderPromoType - private final int mType; - + @NonNull + private final DownloaderBannerType mType; @NonNull private final String mUrl; - public DownloaderPromoBanner(@DownloaderPromoType int type, @NonNull String url) + // Note: must be corresponded to ads::Banner::Type in ads/banner.hpp + private static DownloaderBannerType fromCoreType(int coreValue) { - this.mType = type; + switch (coreValue) + { + case 4: return DownloaderBannerType.TINKOFF_AIRLINES; + case 5: return DownloaderBannerType.TINKOFF_INSURANCE; + case 6: return DownloaderBannerType.MTS; + case 7: return DownloaderBannerType.SKYENG; + case 8: return DownloaderBannerType.BOOKMARK_CATALOG; + default: throw new AssertionError("Incorrect core banner type: " + coreValue); + } + } + + // Note: this constructor must be called from jni only. + private DownloaderPromoBanner(int coreType, @NonNull String url) + { + this.mType = fromCoreType(coreType); this.mUrl = url; } - @DownloaderPromoType - public int getType() { return mType; } + @NonNull + public DownloaderBannerType getType() { return mType; } @NonNull public String getUrl() { return mUrl; } - - @NonNull - @Override - public String toStatisticValue() - { - return DownloaderPromoBannerStats.values()[getType()].getValue(); - } } diff --git a/android/src/com/mapswithme/maps/downloader/DownloaderPromoBannerStats.java b/android/src/com/mapswithme/maps/downloader/DownloaderPromoBannerStats.java deleted file mode 100644 index ef6deae5fd..0000000000 --- a/android/src/com/mapswithme/maps/downloader/DownloaderPromoBannerStats.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.mapswithme.maps.downloader; - -import androidx.annotation.NonNull; - -import com.mapswithme.util.statistics.Statistics; - -public enum DownloaderPromoBannerStats -{ - NO_PROMO - { - @NonNull - @Override - public String getValue() - { - throw new UnsupportedOperationException("Unsupported here"); - } - }, - CATALOG - { - @NonNull - @Override - public String getValue() - { - return Statistics.ParamValue.MAPSME_GUIDES; - } - }, - MEGAFON - { - @NonNull - @Override - public String getValue() - { - return Statistics.ParamValue.MEGAFON; - } - }; - - @NonNull - public abstract String getValue(); -} diff --git a/android/src/com/mapswithme/maps/downloader/OnmapDownloader.java b/android/src/com/mapswithme/maps/downloader/OnmapDownloader.java index 9a4ad78523..246f77de97 100644 --- a/android/src/com/mapswithme/maps/downloader/OnmapDownloader.java +++ b/android/src/com/mapswithme/maps/downloader/OnmapDownloader.java @@ -43,6 +43,8 @@ public class OnmapDownloader implements MwmActivity.LeftAnimationTrackListener @NonNull private final View mCatalogCallToActionContainer; @NonNull + private final View mBannerContainer; + @NonNull private final View mPromoContentDivider; private int mStorageSubscriptionSlot; @@ -244,11 +246,17 @@ public class OnmapDownloader implements MwmActivity.LeftAnimationTrackListener }); mFrame.findViewById(R.id.banner_button).setOnClickListener(v -> { - if (mPromoBanner != null && mPromoBanner.getType() != DownloaderPromoBanner.DOWNLOADER_PROMO_TYPE_NO_PROMO) - Utils.openUrl(mActivity, mPromoBanner.getUrl()); + if (mPromoBanner == null) + return; + + Utils.openUrl(mActivity, mPromoBanner.getUrl()); + + if (mCurrentCountry == null) + return; Statistics.ParameterBuilder builder = - Statistics.makeDownloaderBannerParamBuilder(Statistics.ParamValue.MEGAFON); + Statistics.makeDownloaderBannerParamBuilder(mPromoBanner.getType().toStatisticValue(), + mCurrentCountry.id); Statistics.INSTANCE.trackEvent(Statistics.EventName.DOWNLOADER_BANNER_CLICK, builder); }); @@ -256,6 +264,7 @@ public class OnmapDownloader implements MwmActivity.LeftAnimationTrackListener mCatalogCallToActionContainer = mFrame.findViewById(R.id.catalog_call_to_action_container); downloadGuidesBtn.setOnClickListener(new CatalogCallToActionListener()); mPromoContentDivider = mFrame.findViewById(R.id.onmap_downloader_divider); + mBannerContainer = mFrame.findViewById(R.id.banner); } private void updateBannerVisibility() @@ -264,26 +273,31 @@ public class OnmapDownloader implements MwmActivity.LeftAnimationTrackListener return; mPromoBanner = Framework.nativeGetDownloaderPromoBanner(mCurrentCountry.id); - boolean isPromoFound = mPromoBanner.getType() != DownloaderPromoBanner.DOWNLOADER_PROMO_TYPE_NO_PROMO; + boolean isPromoFound = mPromoBanner != null; boolean enqueued = mCurrentCountry.status == CountryItem.STATUS_ENQUEUED; boolean progress = mCurrentCountry.status == CountryItem.STATUS_PROGRESS; boolean applying = mCurrentCountry.status == CountryItem.STATUS_APPLYING; boolean isDownloading = enqueued || progress || applying; - UiUtils.showIf(isPromoFound && isDownloading, mPromoContentDivider); - boolean hasMegafonPromo = mPromoBanner.getType() == DownloaderPromoBanner.DOWNLOADER_PROMO_TYPE_MEGAFON; - boolean hasCatalogPromo = mPromoBanner.getType() == DownloaderPromoBanner.DOWNLOADER_PROMO_TYPE_BOOKMARK_CATALOG; - - UiUtils.showIf(isDownloading && hasMegafonPromo, mFrame, R.id.banner); - UiUtils.showIf(isDownloading && hasCatalogPromo, mCatalogCallToActionContainer); - - - if (!isPromoFound) + if (!isDownloading || !isPromoFound) + { + UiUtils.hide(mPromoContentDivider, mBannerContainer, mCatalogCallToActionContainer); return; + } + UiUtils.show(mPromoContentDivider); + + boolean hasCatalogPromo = mPromoBanner.getType() == DownloaderBannerType.BOOKMARK_CATALOG; + + View bannerView = hasCatalogPromo ? mCatalogCallToActionContainer : mBannerContainer; + mPromoBanner.getType().getViewConfigStrategy().ConfigureView(bannerView, R.id.icon, R.id.text, + R.id.banner_button); + UiUtils.showIf(!hasCatalogPromo, mBannerContainer); + UiUtils.showIf(hasCatalogPromo, mCatalogCallToActionContainer); Statistics.ParameterBuilder builder = - Statistics.makeDownloaderBannerParamBuilder(mPromoBanner.toStatisticValue()); + Statistics.makeDownloaderBannerParamBuilder(mPromoBanner.getType().toStatisticValue(), + mCurrentCountry.id); Statistics.INSTANCE.trackEvent(Statistics.EventName.DOWNLOADER_BANNER_SHOW, builder); } @@ -336,8 +350,13 @@ public class OnmapDownloader implements MwmActivity.LeftAnimationTrackListener BookmarksCatalogActivity.startForResult(mActivity, BookmarkCategoriesActivity.REQ_CODE_DOWNLOAD_BOOKMARK_CATEGORY, mPromoBanner.getUrl()); + + if (mCurrentCountry == null) + return; + Statistics.ParameterBuilder builder = - Statistics.makeDownloaderBannerParamBuilder(Statistics.ParamValue.MAPSME_GUIDES); + Statistics.makeDownloaderBannerParamBuilder(mPromoBanner.getType().toStatisticValue(), + mCurrentCountry.id); Statistics.INSTANCE.trackEvent(Statistics.EventName.DOWNLOADER_BANNER_CLICK, builder); } } diff --git a/android/src/com/mapswithme/util/statistics/Statistics.java b/android/src/com/mapswithme/util/statistics/Statistics.java index cb9b2a128c..a81ba2ab27 100644 --- a/android/src/com/mapswithme/util/statistics/Statistics.java +++ b/android/src/com/mapswithme/util/statistics/Statistics.java @@ -180,11 +180,13 @@ public enum Statistics } @NonNull - public static ParameterBuilder makeDownloaderBannerParamBuilder(@NonNull String provider) + public static ParameterBuilder makeDownloaderBannerParamBuilder(@NonNull String provider, + @NonNull String mwmId) { return new ParameterBuilder() .add(EventParam.FROM, ParamValue.MAP) - .add(PROVIDER, provider); + .add(PROVIDER, provider) + .add(MWM_NAME, mwmId); } @NonNull @@ -774,6 +776,10 @@ public enum Statistics public static final String DELETE_GROUP = "delete_group"; public static final String OFFSCREEEN = "Offscreen"; public static final String MAPSME_GUIDES = "MapsMeGuides"; + public static final String TINKOFF_INSURANCE = "Tinkoff_Insurance"; + public static final String TINKOFF_ALL_AIRLINES= "Tinkoff_AllAirlines"; + public static final String SKYENG = "Skyeng"; + public static final String MTS = "MTS"; public static final String BY_DEFAULT = "Default"; public static final String BY_DATE = "Date"; public static final String BY_DISTANCE = "Distance"; diff --git a/iphone/Maps/Core/Search/MWMSearch.mm b/iphone/Maps/Core/Search/MWMSearch.mm index 9c38f18d34..31579d4783 100644 --- a/iphone/Maps/Core/Search/MWMSearch.mm +++ b/iphone/Maps/Core/Search/MWMSearch.mm @@ -248,10 +248,8 @@ booking::filter::Tasks MakeBookingFilterTasks(booking::filter::Params && availab manager.textChanged = YES; auto const & adsEngine = GetFramework().GetAdsEngine(); auto const banners = adsEngine.GetSearchBanners(); - auto const & purchase = GetFramework().GetPurchase(); - bool const hasSubscription = purchase && purchase->IsSubscriptionActive(SubscriptionType::RemoveAds); - - if (!hasSubscription && !banners.empty()) { + + if (!banners.empty()) { auto coreBanners = banner_helpers::MatchPriorityBanners(banners, manager.lastQuery); [[MWMBannersCache cache] refreshWithCoreBanners:coreBanners]; } @@ -387,10 +385,8 @@ booking::filter::Tasks MakeBookingFilterTasks(booking::filter::Params && availab { auto const & adsEngine = GetFramework().GetAdsEngine(); auto const banners = adsEngine.GetSearchBanners(); - auto const & purchase = GetFramework().GetPurchase(); - bool const hasSubscription = purchase && purchase->IsSubscriptionActive(SubscriptionType::RemoveAds); - if (!hasSubscription && !banners.empty()) { + if (!banners.empty()) { self.banners = [[MWMSearchBanners alloc] initWithSearchIndex:itemsIndex]; __weak auto weakSelf = self; [[MWMBannersCache cache] getWithCoreBanners:banner_helpers::MatchPriorityBanners(banners, self.lastQuery)