Add rewards onboarding
This commit is contained in:
@@ -50,9 +50,13 @@ import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.appcompat.widget.AppCompatImageView;
|
||||
import androidx.appcompat.widget.SwitchCompat;
|
||||
import androidx.cardview.widget.CardView;
|
||||
import androidx.core.content.res.ResourcesCompat;
|
||||
import androidx.viewpager.widget.ViewPager;
|
||||
|
||||
import com.google.android.material.tabs.TabLayout;
|
||||
|
||||
import org.json.JSONException;
|
||||
|
||||
@@ -61,12 +65,15 @@ import org.chromium.base.ContextUtils;
|
||||
import org.chromium.base.Log;
|
||||
import org.chromium.base.SysUtils;
|
||||
import org.chromium.chrome.R;
|
||||
import org.chromium.chrome.browser.BraveAdsNativeHelper;
|
||||
import org.chromium.chrome.browser.BraveFeatureList;
|
||||
import org.chromium.chrome.browser.BraveRewardsBalance;
|
||||
import org.chromium.chrome.browser.BraveRewardsExternalWallet;
|
||||
import org.chromium.chrome.browser.BraveRewardsExternalWallet.WalletStatus;
|
||||
import org.chromium.chrome.browser.BraveRewardsHelper;
|
||||
import org.chromium.chrome.browser.BraveRewardsNativeWorker;
|
||||
import org.chromium.chrome.browser.BraveRewardsObserver;
|
||||
import org.chromium.chrome.browser.BraveRewardsOnboardingPagerAdapter;
|
||||
import org.chromium.chrome.browser.BraveRewardsPublisher;
|
||||
import org.chromium.chrome.browser.BraveRewardsSiteBannerActivity;
|
||||
import org.chromium.chrome.browser.BraveRewardsUserWalletActivity;
|
||||
@@ -74,12 +81,21 @@ import org.chromium.chrome.browser.BraveRewardsVerifyWalletActivity;
|
||||
import org.chromium.chrome.browser.BraveWalletProvider;
|
||||
import org.chromium.chrome.browser.ChromeTabbedActivity;
|
||||
import org.chromium.chrome.browser.app.BraveActivity;
|
||||
import org.chromium.chrome.browser.custom_layout.HeightWrappingViewPager;
|
||||
import org.chromium.chrome.browser.customtabs.CustomTabActivity;
|
||||
import org.chromium.chrome.browser.flags.ChromeFeatureList;
|
||||
import org.chromium.chrome.browser.preferences.BravePreferenceKeys;
|
||||
import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
|
||||
import org.chromium.chrome.browser.profiles.Profile;
|
||||
import org.chromium.chrome.browser.tab.Tab;
|
||||
import org.chromium.chrome.browser.util.ConfigurationUtils;
|
||||
import org.chromium.chrome.browser.util.PackageUtils;
|
||||
import org.chromium.ui.base.DeviceFormFactor;
|
||||
|
||||
import java.math.RoundingMode;
|
||||
import java.text.DateFormat;
|
||||
import java.text.DecimalFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.Locale;
|
||||
@@ -162,6 +178,14 @@ public class BraveRewardsPanel
|
||||
private View mNotificationLayout;
|
||||
private boolean mClaimInProcess;
|
||||
|
||||
private View braveRewardsOnboardingModalView;
|
||||
// private View braveRewardsOptInView;
|
||||
|
||||
private BraveRewardsOnboardingPagerAdapter braveRewardsOnboardingPagerAdapter;
|
||||
private HeightWrappingViewPager braveRewardsViewPager;
|
||||
private View braveRewardsOnboardingView;
|
||||
// private View braveRewardsWelcomeView;
|
||||
|
||||
public BraveRewardsPanel(View anchorView) {
|
||||
mCurrentNotificationId = "";
|
||||
mPublisherExist = false;
|
||||
@@ -786,10 +810,18 @@ public class BraveRewardsPanel
|
||||
|
||||
mPopupWindow.showAsDropDown(mAnchorView, 0, 0);
|
||||
|
||||
// checkForRewardsOnboarding();
|
||||
checkForRewardsOnboarding();
|
||||
mBraveRewardsNativeWorker.getInstance().StartProcess();
|
||||
}
|
||||
|
||||
private void checkForRewardsOnboarding() {
|
||||
if (mPopupView != null && ChromeFeatureList.isEnabled(BraveFeatureList.BRAVE_REWARDS)
|
||||
&& BraveRewardsHelper.shouldShowBraveRewardsOnboardingOnce()) {
|
||||
showBraveRewardsOnboarding(mPopupView, false);
|
||||
BraveRewardsHelper.setShowBraveRewardsOnboardingOnce(false);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void OnStartProcess() {
|
||||
requestPublisherInfo();
|
||||
@@ -798,31 +830,231 @@ public class BraveRewardsPanel
|
||||
mBraveRewardsNativeWorker.getAdsAccountStatement();
|
||||
mBraveRewardsNativeWorker.GetCurrentBalanceReport();
|
||||
setNotificationsControls();
|
||||
// if (root != null && PackageUtils.isFirstInstall(mActivity)
|
||||
// && ChromeFeatureList.isEnabled(BraveFeatureList.BRAVE_REWARDS)) {
|
||||
// if (BraveRewardsHelper.getBraveRewardsAppOpenCount() == 0
|
||||
// && BraveRewardsHelper.shouldShowBraveRewardsOnboardingModal()
|
||||
// && !BraveAdsNativeHelper.nativeIsBraveAdsEnabled(
|
||||
// Profile.getLastUsedRegularProfile())) {
|
||||
// showBraveRewardsOnboardingModal(root);
|
||||
// BraveRewardsHelper.updateBraveRewardsAppOpenCount();
|
||||
// BraveRewardsHelper.setShowBraveRewardsOnboardingModal(false);
|
||||
// } else if (SharedPreferencesManager.getInstance().readInt(
|
||||
// BravePreferenceKeys.BRAVE_APP_OPEN_COUNT)
|
||||
// > BraveRewardsHelper.getBraveRewardsAppOpenCount()
|
||||
// && BraveRewardsHelper.shouldShowMiniOnboardingModal()) {
|
||||
// if
|
||||
// (BraveAdsNativeHelper.nativeIsBraveAdsEnabled(Profile.getLastUsedRegularProfile()))
|
||||
// {
|
||||
// showBraveRewardsWelcomeLayout(root);
|
||||
// } else {
|
||||
// showBraveRewardsOptInLayout(root);
|
||||
// }
|
||||
// BraveRewardsHelper.setShowMiniOnboardingModal(false);
|
||||
// }
|
||||
// }
|
||||
if (mPopupView != null && PackageUtils.isFirstInstall(mActivity)
|
||||
&& ChromeFeatureList.isEnabled(BraveFeatureList.BRAVE_REWARDS)) {
|
||||
if (BraveRewardsHelper.getBraveRewardsAppOpenCount() == 0
|
||||
&& BraveRewardsHelper.shouldShowBraveRewardsOnboardingModal()
|
||||
&& !BraveAdsNativeHelper.nativeIsBraveAdsEnabled(
|
||||
Profile.getLastUsedRegularProfile())) {
|
||||
showBraveRewardsOnboardingModal(mPopupView);
|
||||
BraveRewardsHelper.updateBraveRewardsAppOpenCount();
|
||||
BraveRewardsHelper.setShowBraveRewardsOnboardingModal(false);
|
||||
} else if (SharedPreferencesManager.getInstance().readInt(
|
||||
BravePreferenceKeys.BRAVE_APP_OPEN_COUNT)
|
||||
> BraveRewardsHelper.getBraveRewardsAppOpenCount()
|
||||
&& BraveRewardsHelper.shouldShowMiniOnboardingModal()) {
|
||||
if (BraveAdsNativeHelper.nativeIsBraveAdsEnabled(
|
||||
Profile.getLastUsedRegularProfile())) {
|
||||
// showBraveRewardsWelcomeLayout(mPopupView);
|
||||
} else {
|
||||
// showBraveRewardsOptInLayout(mPopupView);
|
||||
}
|
||||
BraveRewardsHelper.setShowMiniOnboardingModal(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void showBraveRewardsOnboardingModal(View root) {
|
||||
braveRewardsOnboardingModalView = root.findViewById(R.id.brave_rewards_onboarding_modal_id);
|
||||
braveRewardsOnboardingModalView.setVisibility(View.VISIBLE);
|
||||
|
||||
String tosText =
|
||||
String.format(mActivity.getResources().getString(R.string.brave_rewards_tos_text),
|
||||
mActivity.getResources().getString(R.string.terms_of_service),
|
||||
mActivity.getResources().getString(R.string.privacy_policy));
|
||||
int termsOfServiceIndex =
|
||||
tosText.indexOf(mActivity.getResources().getString(R.string.terms_of_service));
|
||||
Spanned tosTextSpanned = BraveRewardsHelper.spannedFromHtmlString(tosText);
|
||||
SpannableString tosTextSS = new SpannableString(tosTextSpanned.toString());
|
||||
|
||||
ClickableSpan tosClickableSpan = new ClickableSpan() {
|
||||
@Override
|
||||
public void onClick(@NonNull View textView) {
|
||||
CustomTabActivity.showInfoPage(mActivity, BraveActivity.BRAVE_TERMS_PAGE);
|
||||
}
|
||||
@Override
|
||||
public void updateDrawState(@NonNull TextPaint ds) {
|
||||
super.updateDrawState(ds);
|
||||
ds.setUnderlineText(false);
|
||||
}
|
||||
};
|
||||
|
||||
tosTextSS.setSpan(tosClickableSpan, termsOfServiceIndex,
|
||||
termsOfServiceIndex
|
||||
+ mActivity.getResources().getString(R.string.terms_of_service).length(),
|
||||
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
tosTextSS.setSpan(new ForegroundColorSpan(mActivity.getResources().getColor(
|
||||
R.color.brave_rewards_modal_theme_color)),
|
||||
termsOfServiceIndex,
|
||||
termsOfServiceIndex
|
||||
+ mActivity.getResources().getString(R.string.terms_of_service).length(),
|
||||
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
|
||||
ClickableSpan privacyProtectionClickableSpan = new ClickableSpan() {
|
||||
@Override
|
||||
public void onClick(@NonNull View textView) {
|
||||
CustomTabActivity.showInfoPage(mActivity, BraveActivity.BRAVE_PRIVACY_POLICY);
|
||||
}
|
||||
@Override
|
||||
public void updateDrawState(@NonNull TextPaint ds) {
|
||||
super.updateDrawState(ds);
|
||||
ds.setUnderlineText(false);
|
||||
}
|
||||
};
|
||||
|
||||
int privacyPolicyIndex =
|
||||
tosText.indexOf(mActivity.getResources().getString(R.string.privacy_policy));
|
||||
tosTextSS.setSpan(privacyProtectionClickableSpan, privacyPolicyIndex,
|
||||
privacyPolicyIndex
|
||||
+ mActivity.getResources().getString(R.string.privacy_policy).length(),
|
||||
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
tosTextSS.setSpan(new ForegroundColorSpan(mActivity.getResources().getColor(
|
||||
R.color.brave_rewards_modal_theme_color)),
|
||||
privacyPolicyIndex,
|
||||
privacyPolicyIndex
|
||||
+ mActivity.getResources().getString(R.string.privacy_policy).length(),
|
||||
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
|
||||
TextView tosAndPpText = braveRewardsOnboardingModalView.findViewById(
|
||||
R.id.brave_rewards_onboarding_modal_tos_pp_text);
|
||||
tosAndPpText.setMovementMethod(LinkMovementMethod.getInstance());
|
||||
tosAndPpText.setText(tosTextSS);
|
||||
|
||||
TextView takeQuickTourButton = root.findViewById(R.id.take_quick_tour_button);
|
||||
takeQuickTourButton.setOnClickListener((new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
braveRewardsOnboardingModalView.setVisibility(View.GONE);
|
||||
showBraveRewardsOnboarding(root, false);
|
||||
}
|
||||
}));
|
||||
Button btnBraveRewards = root.findViewById(R.id.btn_brave_rewards);
|
||||
btnBraveRewards.setOnClickListener((new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
braveRewardsOnboardingModalView.setVisibility(View.GONE);
|
||||
BraveAdsNativeHelper.nativeSetAdsEnabled(Profile.getLastUsedRegularProfile());
|
||||
BraveRewardsNativeWorker.getInstance().SetAutoContributeEnabled(true);
|
||||
showBraveRewardsOnboarding(root, true);
|
||||
}
|
||||
}));
|
||||
AppCompatImageView modalCloseButton = braveRewardsOnboardingModalView.findViewById(
|
||||
R.id.brave_rewards_onboarding_modal_close);
|
||||
modalCloseButton.setOnClickListener((new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
braveRewardsOnboardingModalView.setVisibility(View.GONE);
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
||||
private void showBraveRewardsOnboarding(View root, boolean shouldShowMoreOption) {
|
||||
braveRewardsOnboardingView = root.findViewById(R.id.brave_rewards_onboarding_layout_id);
|
||||
braveRewardsOnboardingView.setVisibility(View.VISIBLE);
|
||||
final Button btnNext = braveRewardsOnboardingView.findViewById(R.id.btn_next);
|
||||
btnNext.setOnClickListener(braveRewardsOnboardingClickListener);
|
||||
braveRewardsOnboardingView.findViewById(R.id.btn_go_back)
|
||||
.setOnClickListener(braveRewardsOnboardingClickListener);
|
||||
braveRewardsOnboardingView.findViewById(R.id.btn_skip)
|
||||
.setOnClickListener(braveRewardsOnboardingClickListener);
|
||||
braveRewardsOnboardingView.findViewById(R.id.btn_start_quick_tour)
|
||||
.setOnClickListener(braveRewardsOnboardingClickListener);
|
||||
|
||||
braveRewardsViewPager =
|
||||
braveRewardsOnboardingView.findViewById(R.id.brave_rewards_view_pager);
|
||||
braveRewardsViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
|
||||
@Override
|
||||
public void onPageScrolled(
|
||||
int position, float positionOffset, int positionOffsetPixels) {
|
||||
if (positionOffset == 0 && positionOffsetPixels == 0 && position == 0) {
|
||||
braveRewardsOnboardingView.findViewById(R.id.onboarding_first_screen_layout)
|
||||
.setVisibility(View.VISIBLE);
|
||||
braveRewardsOnboardingView.findViewById(R.id.onboarding_action_layout)
|
||||
.setVisibility(View.GONE);
|
||||
} else {
|
||||
braveRewardsOnboardingView.findViewById(R.id.onboarding_action_layout)
|
||||
.setVisibility(View.VISIBLE);
|
||||
braveRewardsOnboardingView.findViewById(R.id.onboarding_first_screen_layout)
|
||||
.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageSelected(int position) {
|
||||
if (braveRewardsOnboardingPagerAdapter != null
|
||||
&& position == braveRewardsOnboardingPagerAdapter.getCount() - 1) {
|
||||
btnNext.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
|
||||
btnNext.setText(mActivity.getResources().getString(R.string.done));
|
||||
} else {
|
||||
btnNext.setText(mActivity.getResources().getString(R.string.next));
|
||||
btnNext.setCompoundDrawablesWithIntrinsicBounds(
|
||||
0, 0, R.drawable.ic_chevron_right, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageScrollStateChanged(int state) {}
|
||||
});
|
||||
braveRewardsOnboardingPagerAdapter = new BraveRewardsOnboardingPagerAdapter();
|
||||
braveRewardsOnboardingPagerAdapter.setOnboardingType(shouldShowMoreOption);
|
||||
braveRewardsViewPager.setAdapter(braveRewardsOnboardingPagerAdapter);
|
||||
TabLayout braveRewardsTabLayout =
|
||||
braveRewardsOnboardingView.findViewById(R.id.brave_rewards_tab_layout);
|
||||
braveRewardsTabLayout.setupWithViewPager(braveRewardsViewPager, true);
|
||||
AppCompatImageView modalCloseButton = braveRewardsOnboardingView.findViewById(
|
||||
R.id.brave_rewards_onboarding_layout_modal_close);
|
||||
modalCloseButton.setOnClickListener((new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
braveRewardsOnboardingView.setVisibility(View.GONE);
|
||||
}
|
||||
}));
|
||||
braveRewardsOnboardingView.findViewById(R.id.onboarding_first_screen_layout)
|
||||
.setVisibility(View.VISIBLE);
|
||||
braveRewardsOnboardingView.findViewById(R.id.onboarding_action_layout)
|
||||
.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
View.OnClickListener braveRewardsOnboardingClickListener = new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
int viewId = view.getId();
|
||||
if (viewId == R.id.btn_start_quick_tour) {
|
||||
if (braveRewardsViewPager != null && braveRewardsViewPager.getCurrentItem() == 0) {
|
||||
braveRewardsViewPager.setCurrentItem(
|
||||
braveRewardsViewPager.getCurrentItem() + 1);
|
||||
}
|
||||
}
|
||||
|
||||
if (viewId == R.id.btn_next) {
|
||||
if (braveRewardsViewPager != null && braveRewardsOnboardingPagerAdapter != null) {
|
||||
if (braveRewardsViewPager.getCurrentItem()
|
||||
== braveRewardsOnboardingPagerAdapter.getCount() - 1) {
|
||||
if (braveRewardsOnboardingView != null) {
|
||||
braveRewardsOnboardingView.setVisibility(View.GONE);
|
||||
}
|
||||
if (BraveAdsNativeHelper.nativeIsBraveAdsEnabled(
|
||||
Profile.getLastUsedRegularProfile())) {
|
||||
// showBraveRewardsWelcomeLayout(mPopupView);
|
||||
}
|
||||
} else {
|
||||
braveRewardsViewPager.setCurrentItem(
|
||||
braveRewardsViewPager.getCurrentItem() + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (viewId == R.id.btn_skip && braveRewardsOnboardingView != null) {
|
||||
braveRewardsViewPager.setCurrentItem(
|
||||
braveRewardsOnboardingPagerAdapter.getCount() - 1);
|
||||
}
|
||||
|
||||
if (viewId == R.id.btn_go_back && braveRewardsViewPager != null) {
|
||||
braveRewardsViewPager.setCurrentItem(braveRewardsViewPager.getCurrentItem() - 1);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
public void OnGetCurrentBalanceReport(double[] report) {
|
||||
Log.e(TAG, "OnGetCurrentBalanceReport : " + report);
|
||||
|
||||
@@ -18,6 +18,14 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<include
|
||||
android:id="@+id/brave_rewards_onboarding_modal_id"
|
||||
layout="@layout/brave_rewards_onboarding_modal"/>
|
||||
|
||||
<include
|
||||
android:id="@+id/brave_rewards_onboarding_layout_id"
|
||||
layout="@layout/brave_rewards_onboarding_layout"/>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/rewards_main_layout"
|
||||
android:layout_width="match_parent"
|
||||
@@ -207,6 +215,10 @@
|
||||
android:id="@+id/brave_rewards_panel_notification_layout_id"
|
||||
layout="@layout/brave_rewards_panel_notification_layout" />
|
||||
|
||||
<include
|
||||
android:id="@+id/brave_rewards_welcome_layout_id"
|
||||
layout="@layout/brave_rewards_welcome_layout"/>
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
</ScrollView>
|
||||
|
||||
Reference in New Issue
Block a user