[android] Fixed NPE in banner controller, purchase controller is obtained only from provider at runtime

This commit is contained in:
Александр Зацепин 2018-10-03 12:26:06 +03:00 committed by Daria Volvenkova
parent 87d6502f2d
commit e77041c42a
4 changed files with 13 additions and 8 deletions

View file

@ -1834,7 +1834,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
}
@Override
@NonNull
@Nullable
public PurchaseController<AdsRemovalPurchaseCallback> getAdsRemovalPurchaseController()
{
return mAdsRemovalPurchaseController;

View file

@ -1,9 +1,9 @@
package com.mapswithme.maps.purchase;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
public interface AdsRemovalPurchaseControllerProvider
{
@NonNull
@Nullable
PurchaseController<AdsRemovalPurchaseCallback> getAdsRemovalPurchaseController();
}

View file

@ -23,6 +23,7 @@ import com.mapswithme.maps.ads.CompoundNativeAdLoader;
import com.mapswithme.maps.ads.MwmNativeAd;
import com.mapswithme.maps.ads.NativeAdError;
import com.mapswithme.maps.ads.NativeAdListener;
import com.mapswithme.maps.purchase.AdsRemovalPurchaseControllerProvider;
import com.mapswithme.maps.purchase.AdsRemovalPurchaseDialog;
import com.mapswithme.maps.purchase.PurchaseController;
import com.mapswithme.util.Config;
@ -125,11 +126,11 @@ final class BannerController
@NonNull
private MyNativeAdsListener mAdsListener = new MyNativeAdsListener();
@NonNull
private final PurchaseController mPurchaseController;
private final AdsRemovalPurchaseControllerProvider mAdsRemovalProvider;
BannerController(@NonNull ViewGroup bannerContainer, @Nullable BannerListener listener,
@NonNull CompoundNativeAdLoader loader, @Nullable AdTracker tracker,
@NonNull PurchaseController purchaseController)
@NonNull AdsRemovalPurchaseControllerProvider adsRemovalProvider)
{
LOGGER.d(TAG, "Constructor()");
mContainerView = bannerContainer;
@ -140,7 +141,7 @@ final class BannerController
mAdTracker = tracker;
Resources resources = mBannerView.getResources();
mCloseFrameHeight = resources.getDimension(R.dimen.placepage_banner_height);
mPurchaseController = purchaseController;
mAdsRemovalProvider = adsRemovalProvider;
initBannerViews();
}
@ -220,7 +221,11 @@ final class BannerController
else if (mCurrentAd != null)
{
UiUtils.showIf(mCurrentAd.getType().showAdChoiceIcon(), mAdChoices);
UiUtils.showIf(mPurchaseController.isPurchaseSupported(), mAdsRemovalIcon, mAdsRemovalButton);
PurchaseController<?> purchaseController
= mAdsRemovalProvider.getAdsRemovalPurchaseController();
boolean showRemovalButtons = purchaseController != null
&& purchaseController.isPurchaseSupported();
UiUtils.showIf(showRemovalButtons, mAdsRemovalIcon, mAdsRemovalButton);
UiUtils.show(mIcon, mTitle, mMessage, mActionSmall, mActionContainer, mActionLarge,
mAdsRemovalButton, mAdChoicesLabel);
if (mOpened)

View file

@ -495,7 +495,7 @@ public class PlacePageView extends RelativeLayout
DefaultAdTracker tracker = new DefaultAdTracker();
CompoundNativeAdLoader loader = com.mapswithme.maps.ads.Factory.createCompoundLoader(tracker, tracker);
mBannerController = new BannerController(bannerContainer, this, loader, tracker,
getActivity().getAdsRemovalPurchaseController());
getActivity());
}
mButtons = new PlacePageButtons(this, ppButtons, new PlacePageButtons.ItemListener()