diff --git a/android/brave_java_resources.gni b/android/brave_java_resources.gni index ca7de4f7a2f1..53578e60e441 100644 --- a/android/brave_java_resources.gni +++ b/android/brave_java_resources.gni @@ -76,6 +76,7 @@ brave_java_resources = [ "java/res/drawable/brave_stats_radio_button_selected.xml", "java/res/drawable/brave_stats_radio_group_bg.xml", "java/res/drawable/ic_phone.xml", + "java/res/drawable/ic_help_filled.xml", "java/res/drawable-hdpi/check.png", "java/res/drawable-hdpi/btn_bookmark.png", "java/res/drawable-hdpi/arrow_forward.png", diff --git a/android/java/org/chromium/chrome/browser/BraveActivity.java b/android/java/org/chromium/chrome/browser/BraveActivity.java index 5fdcf2d13a53..d091c6c3f7cd 100644 --- a/android/java/org/chromium/chrome/browser/BraveActivity.java +++ b/android/java/org/chromium/chrome/browser/BraveActivity.java @@ -331,6 +331,14 @@ public void showOnboarding() { transaction.commit(); } + public void hideRewardsOnboardingIcon() { + BraveToolbarLayout layout = (BraveToolbarLayout)findViewById(R.id.toolbar); + assert layout != null; + if (layout != null) { + layout.hideRewardsOnboardingIcon(); + } + } + private void createNotificationChannel() { Context context = ContextUtils.getApplicationContext(); // Create the NotificationChannel, but only on API 26+ because diff --git a/android/java/org/chromium/chrome/browser/notifications/BraveOnboardingNotification.java b/android/java/org/chromium/chrome/browser/notifications/BraveOnboardingNotification.java index 2add1c5ce90c..bdca4a893f8f 100644 --- a/android/java/org/chromium/chrome/browser/notifications/BraveOnboardingNotification.java +++ b/android/java/org/chromium/chrome/browser/notifications/BraveOnboardingNotification.java @@ -18,10 +18,13 @@ import org.chromium.chrome.browser.notifications.BraveAdsNotificationBuilder; import org.chromium.chrome.browser.notifications.NotificationBuilderBase; import org.chromium.chrome.browser.notifications.NotificationUmaTracker; +import org.chromium.chrome.browser.notifications.retention.RetentionNotificationUtil; +import org.chromium.chrome.browser.notifications.retention.RetentionNotificationPublisher; import org.chromium.components.browser_ui.notifications.ChromeNotification; import org.chromium.components.browser_ui.notifications.NotificationManagerProxyImpl; import org.chromium.components.browser_ui.notifications.NotificationMetadata; import org.chromium.components.browser_ui.notifications.PendingIntentProvider; +import org.chromium.chrome.browser.BraveActivity; import java.util.Locale; @@ -74,13 +77,19 @@ private static PendingIntentProvider getDeepLinkIntent(Context context) { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); + BraveActivity braveActivity = BraveActivity.getBraveActivity(); if (action != null && action.equals(DEEP_LINK)) { - Intent webIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(getNotificationUrl())); - webIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - webIntent.setPackage(context.getPackageName()); - context.startActivity(webIntent); + if (braveActivity != null) { + braveActivity.openRewardsPanel(); + } else { + intent.putExtra(RetentionNotificationUtil.NOTIFICATION_TYPE, RetentionNotificationUtil.DAY_10); + RetentionNotificationPublisher.backgroundNotificationAction(context, intent); + } } else { showOnboardingNotification(context); + if (braveActivity != null) { + braveActivity.hideRewardsOnboardingIcon(); + } } } diff --git a/android/java/org/chromium/chrome/browser/notifications/retention/RetentionNotificationPublisher.java b/android/java/org/chromium/chrome/browser/notifications/retention/RetentionNotificationPublisher.java index 2ebc0fc8d536..c2876f8ff1a1 100644 --- a/android/java/org/chromium/chrome/browser/notifications/retention/RetentionNotificationPublisher.java +++ b/android/java/org/chromium/chrome/browser/notifications/retention/RetentionNotificationPublisher.java @@ -77,7 +77,7 @@ private void createNotification(Context context, Intent intent) { notificationManager.notify(retentionNotification.getNotificationId(), notification); } - private void backgroundNotificationAction(Context context, Intent intent) { + public static void backgroundNotificationAction(Context context, Intent intent) { String notificationType = intent.getStringExtra(RetentionNotificationUtil.NOTIFICATION_TYPE); if (ApplicationStatus.hasVisibleActivities()) { return; diff --git a/android/java/org/chromium/chrome/browser/toolbar/top/BraveToolbarLayout.java b/android/java/org/chromium/chrome/browser/toolbar/top/BraveToolbarLayout.java index bff1ff13f362..5d0ac671cb14 100644 --- a/android/java/org/chromium/chrome/browser/toolbar/top/BraveToolbarLayout.java +++ b/android/java/org/chromium/chrome/browser/toolbar/top/BraveToolbarLayout.java @@ -20,6 +20,7 @@ import android.widget.FrameLayout; import android.widget.ImageButton; import android.widget.TextView; +import android.widget.ImageView; import android.widget.PopupWindow; import android.util.Pair; @@ -108,6 +109,7 @@ public abstract class BraveToolbarLayout extends ToolbarLayout implements OnClic private BraveShieldsContentSettings mBraveShieldsContentSettings; private BraveShieldsContentSettingsObserver mBraveShieldsContentSettingsObserver; private TextView mBraveRewardsNotificationsCount; + private ImageView mBraveRewardsOnboardingIcon; private boolean mShieldsLayoutIsColorBackground; private int mCurrentToolbarColor; @@ -149,6 +151,7 @@ protected void onFinishInflate() { mShieldsLayout = (FrameLayout) findViewById(R.id.brave_shields_button_layout); mRewardsLayout = (FrameLayout) findViewById(R.id.brave_rewards_button_layout); mBraveRewardsNotificationsCount = (TextView) findViewById(R.id.br_notifications_count); + mBraveRewardsOnboardingIcon = findViewById(R.id.br_rewards_onboarding_icon); mBraveShieldsButton = (ImageButton) findViewById(R.id.brave_shields_button); mBraveRewardsButton = (ImageButton) findViewById(R.id.brave_rewards_button); mHomeButton = (HomeButton) findViewById(R.id.home_button); @@ -390,6 +393,19 @@ protected void onPostExecute(Void result) { } .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } + public void hideRewardsOnboardingIcon() { + if (mBraveRewardsOnboardingIcon != null) { + mBraveRewardsOnboardingIcon.setVisibility(View.GONE); + } + if (mBraveRewardsNotificationsCount != null) { + mBraveRewardsNotificationsCount.setVisibility(View.GONE); + } + SharedPreferences sharedPref = ContextUtils.getAppSharedPreferences(); + SharedPreferences.Editor editor = sharedPref.edit(); + editor.putBoolean(BraveRewardsPanelPopup.PREF_WAS_TOOLBAR_BAT_LOGO_BUTTON_PRESSED, true); + editor.apply(); + } + @Override public void onClick(View v) { if (mBraveShieldsHandler == null) { @@ -400,10 +416,9 @@ public void onClick(View v) { showShieldsMenu(mBraveShieldsButton); } else if (mBraveRewardsButton == v && mBraveRewardsButton != null) { Context context = getContext(); - if ((PackageUtils.isFirstInstall(context) - || (!PackageUtils.isFirstInstall(context) && !BraveAdsNativeHelper.nativeIsBraveAdsEnabled(Profile.getLastUsedRegularProfile()))) - && !OnboardingPrefManager.getInstance().isOnboardingShown()) { + if (checkForRewardsOnboarding()) { OnboardingPrefManager.getInstance().showOnboarding(context); + hideRewardsOnboardingIcon(); } else { if (null != mRewardsPopup) { return; @@ -422,6 +437,14 @@ public void onClick(View v) { } } + + + private boolean checkForRewardsOnboarding() { + return (ChromeFeatureList.isEnabled(BraveFeatureList.BRAVE_REWARDS) && !BravePrefServiceBridge.getInstance().getBoolean(BravePref.BRAVE_REWARDS_ENABLED)) + && !BraveAdsNativeHelper.nativeIsBraveAdsEnabled(Profile.getLastUsedRegularProfile()) + && !OnboardingPrefManager.getInstance().isOnboardingShown(); + } + private void showShieldsMenu(View mBraveShieldsButton) { Tab currentTab = getToolbarDataProvider().getTab(); if (currentTab == null) { @@ -719,6 +742,11 @@ public void OnNotificationsCount(int count) { && !OnboardingPrefManager.getInstance().isAdsAvailable()) { mayShowBraveAdsOnboardingDialog(); } + + if (checkForRewardsOnboarding()) { + mBraveRewardsOnboardingIcon.setVisibility(View.VISIBLE); + mBraveRewardsNotificationsCount.setVisibility(View.GONE); + } } @Override diff --git a/android/java/res/drawable/ic_help_filled.xml b/android/java/res/drawable/ic_help_filled.xml new file mode 100644 index 000000000000..5ab1ddccc5a1 --- /dev/null +++ b/android/java/res/drawable/ic_help_filled.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + diff --git a/android/java/res/layout/brave_toolbar.xml b/android/java/res/layout/brave_toolbar.xml index 8b637ac02b4d..802973b7f6fd 100644 --- a/android/java/res/layout/brave_toolbar.xml +++ b/android/java/res/layout/brave_toolbar.xml @@ -70,6 +70,18 @@ android:layout_gravity="center" android:contentDescription="@string/accessibility_toolbar_btn_brave_rewards" /> + +