public static void updatePremiumViews()

in ClassyTaxiJava/app/src/main/java/com/sample/android/classytaxijava/ui/SubscriptionBindingAdapter.java [189:275]


    public static void updatePremiumViews(View view, List<SubscriptionStatus> subscriptions) {
        TextView restoreMsg = view.findViewById(R.id.premium_restore_message);
        View paywallMsg = view.findViewById(R.id.premium_paywall_message);
        View gracePeriodMsg = view.findViewById(R.id.premium_grace_period_message);
        View transferMsg = view.findViewById(R.id.premium_transfer_message);
        View accountHoldMsg = view.findViewById(R.id.premium_account_hold_message);
        View accountPausedMsg = view.findViewById(R.id.premium_account_paused_message);
        TextView accountPausedMsgTxt = view.findViewById(R.id.premium_account_paused_message_text);
        View premiumContent = view.findViewById(R.id.premium_premium_content);
        View upgradeMsg = view.findViewById(R.id.premium_upgrade_message);

        // Set visibility assuming no subscription is available.
        // If a subscription is found that meets certain criteria, then the visibility of the paywall
        // will be changed to View.GONE.
        paywallMsg.setVisibility(View.VISIBLE);
        // The remaining views start hidden. If a subscription is found that meets each criteria,
        // then the visibility will be changed to View.VISIBLE.
        restoreMsg.setVisibility(View.GONE);
        gracePeriodMsg.setVisibility(View.GONE);
        transferMsg.setVisibility(View.GONE);
        accountHoldMsg.setVisibility(View.GONE);
        accountPausedMsg.setVisibility(View.GONE);
        premiumContent.setVisibility(View.GONE);
        upgradeMsg.setVisibility(View.GONE);

        // The Upgrade button should appear if the user has a basic subscription, but does not
        // have a premium subscription. This variable keeps track of whether a premium subscription
        // has been found when looking throug the list of subscriptions.
        boolean hasPremium = false;
        // Update based on subscription information.
        if (subscriptions != null) {
            for (SubscriptionStatus subscription : subscriptions) {
                if (BillingUtilities.isSubscriptionRestore(subscription)) {
                    Log.d(TAG, "restore VISIBLE");
                    restoreMsg.setVisibility(View.VISIBLE);
                    String expiryDate = getHumanReadableDate(subscription.getActiveUntilMillisec());
                    restoreMsg.setText(view.getResources()
                            .getString(R.string.restore_message_with_date, expiryDate));
                    paywallMsg.setVisibility(View.GONE); // Paywall gone.
                }
                if (BillingUtilities.isGracePeriod(subscription)) {
                    Log.d(TAG, "grace period VISIBLE");
                    gracePeriodMsg.setVisibility(View.VISIBLE);
                    paywallMsg.setVisibility(View.GONE); // Paywall gone.
                }
                if (BillingUtilities.isTransferRequired(subscription)
                        && TextUtils.equals(subscription.getSku(), Constants.PREMIUM_SKU)) {
                    Log.d(TAG, "transfer VISIBLE");
                    transferMsg.setVisibility(View.VISIBLE);
                    paywallMsg.setVisibility(View.GONE); // Paywall gone.
                }
                if (BillingUtilities.isAccountHold(subscription)) {
                    Log.d(TAG, "account hold VISIBLE");
                    accountHoldMsg.setVisibility(View.VISIBLE);
                    paywallMsg.setVisibility(View.GONE); // Paywall gone.
                }
                if (BillingUtilities.isPaused(subscription)) {
                    Log.d(TAG, "account paused VISIBLE");
                    String autoResumeDate = getHumanReadableDate(subscription.getAutoResumeTimeMillis());
                    String text = view.getResources()
                            .getString(R.string.account_paused_message_string, autoResumeDate);
                    accountPausedMsgTxt.setText(text);
                    accountPausedMsg.setVisibility(View.VISIBLE);
                    paywallMsg.setVisibility(View.GONE); // Paywall gone.
                }
                // The upgrade message must be shown if there is a basic subscription
                // and there are zero premium subscriptions. We need to keep track of the premium
                // subscriptions and hide the upgrade message if we find any.
                if (BillingUtilities.isPremiumContent(subscription)) {
                    Log.d(TAG, "premium VISIBLE");
                    premiumContent.setVisibility(View.VISIBLE);
                    paywallMsg.setVisibility(View.GONE); // Paywall gone.
                    // Make sure we do not ask for an upgrade when user has premium subscription.
                    hasPremium = true;
                    upgradeMsg.setVisibility(View.GONE);
                }
                if (BillingUtilities.isBasicContent(subscription)
                        && !BillingUtilities.isPremiumContent(subscription)
                        && !hasPremium) {
                    Log.d(TAG, "basic VISIBLE");
                    // Upgrade message will be hidden if a premium subscription is found later.
                    upgradeMsg.setVisibility(View.VISIBLE);
                    paywallMsg.setVisibility(View.GONE); // Paywall gone.
                }
            }
        }
    }