diff --git a/android/java/org/chromium/chrome/browser/rewards/BraveRewardsPanel.java b/android/java/org/chromium/chrome/browser/rewards/BraveRewardsPanel.java
index 0c332b677b9..1530838f293 100644
--- a/android/java/org/chromium/chrome/browser/rewards/BraveRewardsPanel.java
+++ b/android/java/org/chromium/chrome/browser/rewards/BraveRewardsPanel.java
@@ -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);
diff --git a/android/java/res/layout/brave_rewards_panel_layout.xml b/android/java/res/layout/brave_rewards_panel_layout.xml
index 6ec1727f2eb..602c36305cd 100644
--- a/android/java/res/layout/brave_rewards_panel_layout.xml
+++ b/android/java/res/layout/brave_rewards_panel_layout.xml
@@ -18,6 +18,14 @@
android:layout_width="match_parent"
android:layout_height="wrap_content">
+
+
+
+
+
+