Add Notifications for retention
This commit is contained in:
@@ -73,6 +73,7 @@ import org.chromium.chrome.browser.CrossPromotionalModalDialogFragment;
|
||||
import org.chromium.chrome.browser.onboarding.v2.HighlightDialogFragment;
|
||||
import org.chromium.chrome.browser.notifications.retention.RetentionNotificationUtil;
|
||||
import org.chromium.chrome.browser.brave_stats.BraveStatsUtil;
|
||||
import org.chromium.chrome.browser.ntp.NewTabPage;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
@@ -274,7 +275,15 @@ public abstract class BraveActivity<C extends ChromeActivityComponent> extends C
|
||||
}
|
||||
}
|
||||
|
||||
RetentionNotificationUtil.scheduleNotification(this, RetentionNotificationUtil.HOUR_3);
|
||||
if (!OnboardingPrefManager.getInstance().isOneTimeNotificationStarted()) {
|
||||
RetentionNotificationUtil.scheduleNotification(this, RetentionNotificationUtil.HOUR_3);
|
||||
RetentionNotificationUtil.scheduleNotification(this, RetentionNotificationUtil.HOUR_24);
|
||||
RetentionNotificationUtil.scheduleNotification(this, RetentionNotificationUtil.DAY_6);
|
||||
RetentionNotificationUtil.scheduleNotification(this, RetentionNotificationUtil.DAY_10);
|
||||
RetentionNotificationUtil.scheduleNotification(this, RetentionNotificationUtil.DAY_30);
|
||||
RetentionNotificationUtil.scheduleNotification(this, RetentionNotificationUtil.DAY_35);
|
||||
OnboardingPrefManager.getInstance().setOneTimeNotificationStarted(true);
|
||||
}
|
||||
}
|
||||
|
||||
private void checkForNotificationData() {
|
||||
@@ -284,20 +293,37 @@ public abstract class BraveActivity<C extends ChromeActivityComponent> extends C
|
||||
String notificationType = notifIntent.getStringExtra(RetentionNotificationUtil.NOTIFICATION_TYPE);
|
||||
switch (notificationType) {
|
||||
case RetentionNotificationUtil.HOUR_3:
|
||||
case RetentionNotificationUtil.HOUR_24:
|
||||
case RetentionNotificationUtil.EVERY_SUNDAY:
|
||||
checkForBraveStats();
|
||||
break;
|
||||
case RetentionNotificationUtil.HOUR_24:
|
||||
checkForBraveStats();
|
||||
case RetentionNotificationUtil.DAY_6:
|
||||
case RetentionNotificationUtil.BRAVE_STATS_ADS_TRACKERS:
|
||||
case RetentionNotificationUtil.BRAVE_STATS_DATA:
|
||||
case RetentionNotificationUtil.BRAVE_STATS_TIME:
|
||||
if (!NewTabPage.isNTPUrl(getActivityTab().getUrlString())) {
|
||||
getTabCreator(false).launchUrl(UrlConstants.NTP_URL, TabLaunchType.FROM_CHROME_UI);
|
||||
}
|
||||
break;
|
||||
case RetentionNotificationUtil.DAY_10:
|
||||
case RetentionNotificationUtil.DAY_30:
|
||||
case RetentionNotificationUtil.DAY_35:
|
||||
openRewardsPanel();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void checkForBraveStats() {
|
||||
public void checkForBraveStats() {
|
||||
if (OnboardingPrefManager.getInstance().isBraveStatsEnabled()) {
|
||||
BraveStatsUtil.showBraveStats();
|
||||
} else {
|
||||
showOnboarding();
|
||||
if (!NewTabPage.isNTPUrl(getActivityTab().getUrlString())) {
|
||||
OnboardingPrefManager.getInstance().setFromNotification(true);
|
||||
getTabCreator(false).launchUrl(UrlConstants.NTP_URL, TabLaunchType.FROM_CHROME_UI);
|
||||
} else {
|
||||
showOnboarding();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -40,6 +40,7 @@ import org.chromium.chrome.browser.local_database.DatabaseHelper;
|
||||
import org.chromium.chrome.browser.local_database.BraveStatsTable;
|
||||
import org.chromium.chrome.browser.local_database.SavedBandwidthTable;
|
||||
import org.chromium.chrome.browser.brave_stats.BraveStatsUtil;
|
||||
import org.chromium.chrome.browser.ntp.BraveNewTabPageLayout;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Arrays;
|
||||
@@ -49,7 +50,6 @@ import java.util.Date;
|
||||
import static org.chromium.ui.base.ViewUtils.dpToPx;
|
||||
|
||||
public class BraveStatsBottomSheetDialogFragment extends BottomSheetDialogFragment {
|
||||
private static final short MILLISECONDS_PER_ITEM = 50;
|
||||
private DatabaseHelper mDatabaseHelper = DatabaseHelper.getInstance();
|
||||
|
||||
private static final int WEBSITES = 0;
|
||||
@@ -155,7 +155,7 @@ public class BraveStatsBottomSheetDialogFragment extends BottomSheetDialogFragme
|
||||
long totalSavedBandwidth = mDatabaseHelper.getTotalSavedBandwidthWithDate(BraveStatsUtil.getCalculatedDate("yyyy-MM-dd", selectedDuration), BraveStatsUtil.getCalculatedDate("yyyy-MM-dd", 0));
|
||||
|
||||
long adsTrackersCount = mDatabaseHelper.getAllStatsWithDate(BraveStatsUtil.getCalculatedDate("yyyy-MM-dd", selectedDuration), BraveStatsUtil.getCalculatedDate("yyyy-MM-dd", 0)).size();
|
||||
long timeSavedCount = adsTrackersCount * MILLISECONDS_PER_ITEM;
|
||||
long timeSavedCount = adsTrackersCount * BraveNewTabPageLayout.MILLISECONDS_PER_ITEM;
|
||||
|
||||
Pair<String, String> adsTrackersPair = BraveStatsUtil.getBraveStatsStringFormNumberPair(adsTrackersCount, false);
|
||||
adsTrackersCountText.setText(String.format(getResources().getString(R.string.ntp_stat_text), adsTrackersPair.first, adsTrackersPair.second));
|
||||
|
||||
@@ -291,34 +291,6 @@ public class DatabaseHelper extends SQLiteOpenHelper {
|
||||
return db.insert(SavedBandwidthTable.TABLE_NAME, null, values);
|
||||
}
|
||||
|
||||
public List<SavedBandwidthTable> getAllSavedBandwidthWithDate(String thresholdTime, String currentTime) {
|
||||
List<SavedBandwidthTable> savedBandwidths = new ArrayList<>();
|
||||
|
||||
// Select All Query
|
||||
String selectQuery = "SELECT * FROM "
|
||||
+ SavedBandwidthTable.TABLE_NAME
|
||||
+ " WHERE " + BraveStatsTable.COLUMN_TIMESTAMP
|
||||
+ " BETWEEN date('" + thresholdTime + "') AND date('" + currentTime + "')";
|
||||
|
||||
SQLiteDatabase db = this.getReadableDatabase();
|
||||
Cursor cursor = db.rawQuery(selectQuery, null);
|
||||
|
||||
// looping through all rows and adding to list
|
||||
if (cursor.moveToFirst()) {
|
||||
do {
|
||||
SavedBandwidthTable savedBandwidthTable = new SavedBandwidthTable(
|
||||
cursor.getLong(cursor.getColumnIndex(SavedBandwidthTable.COLUMN_SAVED_BANDWIDTH)),
|
||||
cursor.getString(cursor.getColumnIndex(SavedBandwidthTable.COLUMN_TIMESTAMP)));
|
||||
|
||||
savedBandwidths.add(savedBandwidthTable);
|
||||
} while (cursor.moveToNext());
|
||||
}
|
||||
|
||||
cursor.close();
|
||||
|
||||
return savedBandwidths;
|
||||
}
|
||||
|
||||
public long getTotalSavedBandwidthWithDate(String thresholdTime, String currentTime) {
|
||||
int sum = 0;
|
||||
String selectQuery = "SELECT SUM(" + SavedBandwidthTable.COLUMN_SAVED_BANDWIDTH + ") as total FROM "
|
||||
@@ -335,4 +307,19 @@ public class DatabaseHelper extends SQLiteOpenHelper {
|
||||
cursor.close();
|
||||
return sum;
|
||||
}
|
||||
|
||||
public long getTotalSavedBandwidth() {
|
||||
int sum = 0;
|
||||
String selectQuery = "SELECT SUM(" + SavedBandwidthTable.COLUMN_SAVED_BANDWIDTH + ") as total FROM "
|
||||
+ SavedBandwidthTable.TABLE_NAME;
|
||||
|
||||
SQLiteDatabase db = this.getReadableDatabase();
|
||||
Cursor cursor = db.rawQuery(selectQuery, null);
|
||||
|
||||
if (cursor.moveToFirst())
|
||||
sum = cursor.getInt(cursor.getColumnIndex("total"));
|
||||
|
||||
cursor.close();
|
||||
return sum;
|
||||
}
|
||||
}
|
||||
+1
@@ -22,6 +22,7 @@ public class BraveChannelDefinitions {
|
||||
public static final String BRAVE_ADS_BACKGROUND = "com.brave.browser.ads.background";
|
||||
public static final String BRAVE_STATS = "com.brave.browser.stats";
|
||||
public static final String BRAVE_REWARDS = "com.brave.browser.rewards";
|
||||
public static final String BRAVE_BROWSER = "com.brave.browser";
|
||||
}
|
||||
|
||||
public class ChannelGroupId {
|
||||
|
||||
+28
-3
@@ -15,7 +15,12 @@ import android.net.Uri;
|
||||
|
||||
import org.chromium.base.Log;
|
||||
import org.chromium.base.ApplicationStatus;
|
||||
import org.chromium.chrome.browser.tab.TabLaunchType;
|
||||
import org.chromium.chrome.browser.ntp.NewTabPage;
|
||||
import org.chromium.components.embedder_support.util.UrlConstants;
|
||||
import org.chromium.chrome.browser.BraveActivity;
|
||||
import org.chromium.chrome.browser.brave_stats.BraveStatsUtil;
|
||||
import org.chromium.chrome.browser.onboarding.OnboardingPrefManager;
|
||||
|
||||
public class RetentionNotificationPublisher extends BroadcastReceiver {
|
||||
private static final String NOTIFICATION_CHANNEL_NAME = "brave";
|
||||
@@ -23,14 +28,35 @@ public class RetentionNotificationPublisher extends BroadcastReceiver {
|
||||
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
String action = intent.getAction();
|
||||
String notificationType = intent.getStringExtra(RetentionNotificationUtil.NOTIFICATION_TYPE);
|
||||
if (action != null && action.equals(RETENTION_NOTIFICATION_ACTION)) {
|
||||
BraveActivity braveActivity = BraveActivity.getBraveActivity();
|
||||
if (braveActivity != null) {
|
||||
braveActivity.showOnboarding();
|
||||
switch (notificationType) {
|
||||
case RetentionNotificationUtil.HOUR_3:
|
||||
case RetentionNotificationUtil.HOUR_24:
|
||||
case RetentionNotificationUtil.EVERY_SUNDAY:
|
||||
braveActivity.checkForBraveStats();
|
||||
break;
|
||||
case RetentionNotificationUtil.DAY_6:
|
||||
case RetentionNotificationUtil.BRAVE_STATS_ADS_TRACKERS:
|
||||
case RetentionNotificationUtil.BRAVE_STATS_DATA:
|
||||
case RetentionNotificationUtil.BRAVE_STATS_TIME:
|
||||
if (!NewTabPage.isNTPUrl(braveActivity.getActivityTab().getUrlString())) {
|
||||
braveActivity.getTabCreator(false).launchUrl(UrlConstants.NTP_URL, TabLaunchType.FROM_CHROME_UI);
|
||||
}
|
||||
break;
|
||||
case RetentionNotificationUtil.DAY_10:
|
||||
case RetentionNotificationUtil.DAY_30:
|
||||
case RetentionNotificationUtil.DAY_35:
|
||||
braveActivity.openRewardsPanel();
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
backgroundNotificationAction(context, intent);
|
||||
}
|
||||
} else {
|
||||
// Can't check for rewards code in background
|
||||
createNotification(context, intent);
|
||||
}
|
||||
}
|
||||
@@ -48,12 +74,11 @@ public class RetentionNotificationPublisher extends BroadcastReceiver {
|
||||
notificationManager.createNotificationChannel(notificationChannel);
|
||||
}
|
||||
assert notificationManager != null;
|
||||
notificationManager.notify(retentionNotification.getNotificationId(), notification) ;
|
||||
notificationManager.notify(retentionNotification.getNotificationId(), notification);
|
||||
}
|
||||
|
||||
private void backgroundNotificationAction(Context context, Intent intent) {
|
||||
String notificationType = intent.getStringExtra(RetentionNotificationUtil.NOTIFICATION_TYPE);
|
||||
RetentionNotification retentionNotification = RetentionNotificationUtil.getNotificationObject(notificationType);
|
||||
if (ApplicationStatus.hasVisibleActivities()) {
|
||||
return;
|
||||
}
|
||||
|
||||
+53
-13
@@ -10,14 +10,19 @@ import android.app.Notification;
|
||||
import android.app.PendingIntent;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.util.Pair;
|
||||
|
||||
import androidx.core.app.NotificationCompat;
|
||||
|
||||
import org.chromium.chrome.R;
|
||||
|
||||
import org.chromium.base.Log;
|
||||
import org.chromium.base.ContextUtils;
|
||||
import org.chromium.chrome.browser.onboarding.OnboardingPrefManager;
|
||||
import org.chromium.chrome.browser.local_database.DatabaseHelper;
|
||||
import org.chromium.chrome.browser.notifications.channels.BraveChannelDefinitions;
|
||||
import org.chromium.chrome.browser.brave_stats.BraveStatsUtil;
|
||||
import org.chromium.chrome.browser.ntp.BraveNewTabPageLayout;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
@@ -30,14 +35,28 @@ public class RetentionNotificationUtil {
|
||||
public static final String HOUR_3 = "hour_3";
|
||||
public static final String HOUR_24 = "hour_24";
|
||||
public static final String HOUR_48 = "hour_48";
|
||||
public static final String DAY_6 = "day_6";
|
||||
public static final String EVERY_SUNDAY = "every_sunday";
|
||||
public static final String DAY_10 = "day_10";
|
||||
public static final String DAY_30 = "day_30";
|
||||
public static final String DAY_35 = "day_35";
|
||||
public static final String BRAVE_STATS_ADS_TRACKERS = "brave_stats_ads_trackers";
|
||||
public static final String BRAVE_STATS_DATA = "brave_stats_data";
|
||||
public static final String BRAVE_STATS_TIME = "brave_stats_time";
|
||||
|
||||
private static Map<String, RetentionNotification> mNotificationMap = new HashMap<String, RetentionNotification>() {
|
||||
{
|
||||
put(HOUR_3, new RetentionNotification(3, 1, "Brave Stats", "Brave Stats"));
|
||||
put(HOUR_24, new RetentionNotification(24, 24 * 60, "Brave Stats", "Brave Stats"));
|
||||
put(HOUR_48, new RetentionNotification(48, 48 * 60, "Brave Stats", "Brave Stats"));
|
||||
put(EVERY_SUNDAY, new RetentionNotification(7, -1, "Brave Stats", "Brave Stats"));
|
||||
put(HOUR_3, new RetentionNotification(3, 3 * 60, BraveChannelDefinitions.ChannelId.BRAVE_STATS, ContextUtils.getApplicationContext().getResources().getString(R.string.brave_stats)));
|
||||
put(HOUR_24, new RetentionNotification(24, 24 * 60, BraveChannelDefinitions.ChannelId.BRAVE_STATS, ContextUtils.getApplicationContext().getResources().getString(R.string.brave_stats)));
|
||||
put(HOUR_48, new RetentionNotification(48, 48 * 60, BraveChannelDefinitions.ChannelId.BRAVE_BROWSER, ContextUtils.getApplicationContext().getResources().getString(R.string.brave_stats)));
|
||||
put(DAY_6, new RetentionNotification(6, 6 * 24 * 60, BraveChannelDefinitions.ChannelId.BRAVE_BROWSER, ContextUtils.getApplicationContext().getResources().getString(R.string.brave_stats)));
|
||||
put(EVERY_SUNDAY, new RetentionNotification(7, -1, BraveChannelDefinitions.ChannelId.BRAVE_STATS, ContextUtils.getApplicationContext().getResources().getString(R.string.brave_stats)));
|
||||
put(DAY_10, new RetentionNotification(10, 10 * 24 * 60, BraveChannelDefinitions.ChannelId.BRAVE_REWARDS, ContextUtils.getApplicationContext().getResources().getString(R.string.brave_ui_brave_rewards)));
|
||||
put(DAY_30, new RetentionNotification(30, 30 * 24 * 60, BraveChannelDefinitions.ChannelId.BRAVE_REWARDS, ContextUtils.getApplicationContext().getResources().getString(R.string.brave_ui_brave_rewards)));
|
||||
put(DAY_35, new RetentionNotification(35, 35 * 24 * 60, BraveChannelDefinitions.ChannelId.BRAVE_REWARDS, ContextUtils.getApplicationContext().getResources().getString(R.string.brave_ui_brave_rewards)));
|
||||
put(BRAVE_STATS_ADS_TRACKERS, new RetentionNotification(14, 60, BraveChannelDefinitions.ChannelId.BRAVE_STATS, ContextUtils.getApplicationContext().getResources().getString(R.string.brave_stats)));
|
||||
put(BRAVE_STATS_DATA, new RetentionNotification(15, 60, BraveChannelDefinitions.ChannelId.BRAVE_STATS, ContextUtils.getApplicationContext().getResources().getString(R.string.brave_stats)));
|
||||
put(BRAVE_STATS_TIME, new RetentionNotification(16, 60, BraveChannelDefinitions.ChannelId.BRAVE_STATS, ContextUtils.getApplicationContext().getResources().getString(R.string.brave_stats)));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -47,7 +66,7 @@ public class RetentionNotificationUtil {
|
||||
|
||||
public static Notification getNotification(Context context, String notificationType) {
|
||||
RetentionNotification retentionNotification = getNotificationObject(notificationType);
|
||||
String notificationText = getNotificationText(notificationType);
|
||||
String notificationText = getNotificationText(context, notificationType);
|
||||
Log.e("NTP", notificationText);
|
||||
NotificationCompat.Builder builder = new NotificationCompat.Builder(context, retentionNotification.getChannelId());
|
||||
builder.setContentTitle(retentionNotification.getNotificationTitle());
|
||||
@@ -59,26 +78,47 @@ public class RetentionNotificationUtil {
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
private static String getNotificationText(String notificationType) {
|
||||
private static String getNotificationText(Context context, String notificationType) {
|
||||
DatabaseHelper mDatabaseHelper = DatabaseHelper.getInstance();
|
||||
long totalSavedBandwidth = mDatabaseHelper.getTotalSavedBandwidth();
|
||||
long adsTrackersCount = mDatabaseHelper.getAllStats().size();
|
||||
long timeSavedCount = adsTrackersCount * BraveNewTabPageLayout.MILLISECONDS_PER_ITEM;
|
||||
|
||||
long adsTrackersCountWeekly = mDatabaseHelper.getAllStatsWithDate(BraveStatsUtil.getCalculatedDate("yyyy-MM-dd", 7), BraveStatsUtil.getCalculatedDate("yyyy-MM-dd", 0)).size();
|
||||
|
||||
Pair<String, String> adsTrackersPair = BraveStatsUtil.getBraveStatsStringFormNumberPair(adsTrackersCount, false);
|
||||
Pair<String, String> dataSavedPair = BraveStatsUtil.getBraveStatsStringFormNumberPair(totalSavedBandwidth, true);
|
||||
switch (notificationType) {
|
||||
case HOUR_3:
|
||||
if (OnboardingPrefManager.getInstance().isBraveStatsEnabled()) {
|
||||
long trackerAdsCount = mDatabaseHelper.getAllStats().size();
|
||||
if (trackerAdsCount >= 5) {
|
||||
return "You blocked " + trackerAdsCount + "trackers & ads with Brave browser in the past 3 hours.";
|
||||
if (adsTrackersCount >= 5) {
|
||||
return String.format(context.getResources().getString(R.string.notification_hour_3_text_1), adsTrackersCount);
|
||||
} else {
|
||||
return "Browse up to 6x faster on major news sites in Brave by blocking trackers & ads.";
|
||||
return context.getResources().getString(R.string.notification_hour_3_text_2);
|
||||
}
|
||||
} else {
|
||||
return "Turn on Brave Stats to see how many trackers & ads have been blocked in the past 3 hours.";
|
||||
return context.getResources().getString(R.string.notification_hour_3_text_3);
|
||||
}
|
||||
case HOUR_24:
|
||||
if (OnboardingPrefManager.getInstance().isBraveStatsEnabled()) {
|
||||
return "You saved Xkb data with Brave browser.";
|
||||
return String.format(context.getResources().getString(R.string.notification_hour_24_text_1), totalSavedBandwidth);
|
||||
} else {
|
||||
return "Turn on Brave Stats to see how much data you've saved";
|
||||
return context.getResources().getString(R.string.notification_hour_24_text_2);
|
||||
}
|
||||
case EVERY_SUNDAY:
|
||||
return String.format(context.getResources().getString(R.string.notification_weekly_stats), adsTrackersCountWeekly);
|
||||
case DAY_6:
|
||||
return context.getResources().getString(R.string.notification_marketing);
|
||||
case DAY_10:
|
||||
case DAY_30:
|
||||
case DAY_35:
|
||||
return context.getResources().getString(R.string.notification_rewards);
|
||||
case BRAVE_STATS_ADS_TRACKERS:
|
||||
return context.getResources().getString(R.string.notification_brave_stats_trackers);
|
||||
case BRAVE_STATS_DATA:
|
||||
return context.getResources().getString(R.string.notification_brave_stats_data);
|
||||
case BRAVE_STATS_TIME:
|
||||
return context.getResources().getString(R.string.notification_brave_stats_time);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
@@ -90,7 +90,7 @@ public class BraveNewTabPageLayout extends NewTabPageLayout {
|
||||
private static final String PREF_TRACKERS_BLOCKED_COUNT = "trackers_blocked_count";
|
||||
private static final String PREF_ADS_BLOCKED_COUNT = "ads_blocked_count";
|
||||
private static final String PREF_HTTPS_UPGRADES_COUNT = "https_upgrades_count";
|
||||
private static final short MILLISECONDS_PER_ITEM = 50;
|
||||
public static final short MILLISECONDS_PER_ITEM = 50;
|
||||
|
||||
private ViewGroup mBraveStatsView;
|
||||
|
||||
@@ -153,11 +153,7 @@ public class BraveNewTabPageLayout extends NewTabPageLayout {
|
||||
mBadgeImageView.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (OnboardingPrefManager.getInstance().isBraveStatsEnabled()) {
|
||||
BraveStatsUtil.showBraveStats();
|
||||
} else {
|
||||
((BraveActivity)mActivity).showOnboarding();
|
||||
}
|
||||
((BraveActivity)mActivity).checkForBraveStats();
|
||||
}
|
||||
});
|
||||
|
||||
@@ -213,6 +209,10 @@ public class BraveNewTabPageLayout extends NewTabPageLayout {
|
||||
&& !OnboardingPrefManager.getInstance().isNewOnboardingShown()) {
|
||||
((BraveActivity)mActivity).showOnboarding();
|
||||
}
|
||||
if (OnboardingPrefManager.getInstance().isFromNotification() ) {
|
||||
((BraveActivity)mActivity).showOnboarding();
|
||||
OnboardingPrefManager.getInstance().setFromNotification(false);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -40,7 +40,11 @@ public class OnboardingPrefManager {
|
||||
private static final String PREF_SHIELDS_TOOLTIP = "shields_tooltip";
|
||||
private static final String PREF_BRAVE_STATS = "brave_stats";
|
||||
public static final String ONBOARDING_TYPE = "onboarding_type";
|
||||
public static final String FROM_SETTINGS = "from_settings";
|
||||
public static final String FROM_NOTIFICATION = "from_notification";
|
||||
public static final String ONE_TIME_NOTIFICATION = "one_time_notification";
|
||||
public static final String ADS_TRACKERS_NOTIFICATION = "ads_trackers_notification";
|
||||
public static final String DATA_SAVED_NOTIFICATION = "data_saved_notification";
|
||||
public static final String TIME_SAVED_NOTIFICATION = "time_saved_notification";
|
||||
|
||||
private static OnboardingPrefManager sInstance;
|
||||
|
||||
@@ -233,4 +237,54 @@ public class OnboardingPrefManager {
|
||||
put(STARTPAGE, SearchEngineEnum.STARTPAGE);
|
||||
}
|
||||
};
|
||||
|
||||
public boolean isFromNotification() {
|
||||
return mSharedPreferences.getBoolean(FROM_NOTIFICATION, false);
|
||||
}
|
||||
|
||||
public void setFromNotification(boolean isFromNotification) {
|
||||
SharedPreferences.Editor sharedPreferencesEditor = mSharedPreferences.edit();
|
||||
sharedPreferencesEditor.putBoolean(FROM_NOTIFICATION, isFromNotification);
|
||||
sharedPreferencesEditor.apply();
|
||||
}
|
||||
|
||||
public boolean isOneTimeNotificationStarted() {
|
||||
return mSharedPreferences.getBoolean(ONE_TIME_NOTIFICATION, false);
|
||||
}
|
||||
|
||||
public void setOneTimeNotificationStarted(boolean isOneTimeNotificationStarted) {
|
||||
SharedPreferences.Editor sharedPreferencesEditor = mSharedPreferences.edit();
|
||||
sharedPreferencesEditor.putBoolean(ONE_TIME_NOTIFICATION, isOneTimeNotificationStarted);
|
||||
sharedPreferencesEditor.apply();
|
||||
}
|
||||
|
||||
public boolean isAdsTrackersNotificationStarted() {
|
||||
return mSharedPreferences.getBoolean(ADS_TRACKERS_NOTIFICATION, false);
|
||||
}
|
||||
|
||||
public void setAdsTrackersNotificationStarted(boolean isAdsTrackersNotificationStarted) {
|
||||
SharedPreferences.Editor sharedPreferencesEditor = mSharedPreferences.edit();
|
||||
sharedPreferencesEditor.putBoolean(ADS_TRACKERS_NOTIFICATION, isAdsTrackersNotificationStarted);
|
||||
sharedPreferencesEditor.apply();
|
||||
}
|
||||
|
||||
public boolean isDataSavedNotificationStarted() {
|
||||
return mSharedPreferences.getBoolean(DATA_SAVED_NOTIFICATION, false);
|
||||
}
|
||||
|
||||
public void setDataSavedNotificationStarted(boolean isDataSavedNotificationStarted) {
|
||||
SharedPreferences.Editor sharedPreferencesEditor = mSharedPreferences.edit();
|
||||
sharedPreferencesEditor.putBoolean(DATA_SAVED_NOTIFICATION, isDataSavedNotificationStarted);
|
||||
sharedPreferencesEditor.apply();
|
||||
}
|
||||
|
||||
public boolean isTimeSavedNotificationStarted() {
|
||||
return mSharedPreferences.getBoolean(TIME_SAVED_NOTIFICATION, false);
|
||||
}
|
||||
|
||||
public void setTimeSavedNotificationStarted(boolean isTimeSavedNotificationStarted) {
|
||||
SharedPreferences.Editor sharedPreferencesEditor = mSharedPreferences.edit();
|
||||
sharedPreferencesEditor.putBoolean(TIME_SAVED_NOTIFICATION, isTimeSavedNotificationStarted);
|
||||
sharedPreferencesEditor.apply();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@ import org.chromium.base.Log;
|
||||
import org.chromium.chrome.browser.onboarding.v2.OnboardingV2PagerAdapter;
|
||||
import org.chromium.chrome.browser.onboarding.OnboardingPrefManager;
|
||||
import org.chromium.chrome.browser.brave_stats.BraveStatsUtil;
|
||||
import org.chromium.chrome.browser.notifications.retention.RetentionNotificationUtil;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
@@ -155,6 +156,7 @@ public class HighlightDialogFragment extends DialogFragment {
|
||||
if (viewpager != null) {
|
||||
if (!OnboardingPrefManager.getInstance().isBraveStatsEnabled()) {
|
||||
OnboardingPrefManager.getInstance().setBraveStatsEnabled(true);
|
||||
RetentionNotificationUtil.scheduleNotificationForEverySunday(getActivity(), RetentionNotificationUtil.EVERY_SUNDAY);
|
||||
if (onboardingV2PagerAdapter != null) {
|
||||
onboardingV2PagerAdapter.notifyDataSetChanged();
|
||||
}
|
||||
|
||||
@@ -75,6 +75,8 @@ import org.chromium.chrome.browser.local_database.DatabaseHelper;
|
||||
import org.chromium.chrome.browser.local_database.BraveStatsTable;
|
||||
import org.chromium.chrome.browser.local_database.SavedBandwidthTable;
|
||||
import org.chromium.chrome.browser.brave_stats.BraveStatsUtil;
|
||||
import org.chromium.chrome.browser.notifications.retention.RetentionNotificationUtil;
|
||||
import org.chromium.chrome.browser.ntp.BraveNewTabPageLayout;
|
||||
|
||||
import java.net.URL;
|
||||
import java.util.List;
|
||||
@@ -87,6 +89,9 @@ public abstract class BraveToolbarLayout extends ToolbarLayout implements OnClic
|
||||
BraveRewardsNativeWorker.PublisherObserver {
|
||||
public static final String PREF_HIDE_BRAVE_REWARDS_ICON = "hide_brave_rewards_icon";
|
||||
|
||||
private static final long MB_10 = 10000000;
|
||||
private static final long MINUTES_10 = 10 * 60 * 1000;
|
||||
|
||||
private DatabaseHelper mDatabaseHelper = DatabaseHelper.getInstance();
|
||||
|
||||
private ImageButton mBraveShieldsButton;
|
||||
@@ -269,6 +274,31 @@ public abstract class BraveToolbarLayout extends ToolbarLayout implements OnClic
|
||||
if (getToolbarDataProvider().getTab() == tab) {
|
||||
mBraveShieldsHandler.updateHost(url);
|
||||
updateBraveShieldsButtonState(tab);
|
||||
|
||||
Profile mProfile = Profile.getLastUsedProfile();
|
||||
long trackersBlockedCount = BravePrefServiceBridge.getInstance().getTrackersBlockedCount(mProfile);
|
||||
long adsBlockedCount = BravePrefServiceBridge.getInstance().getAdsBlockedCount(mProfile);
|
||||
long dataSaved = BravePrefServiceBridge.getInstance().getDataSaved(mProfile);
|
||||
long estimatedMillisecondsSaved = (trackersBlockedCount + adsBlockedCount) * BraveNewTabPageLayout.MILLISECONDS_PER_ITEM;
|
||||
|
||||
if (!OnboardingPrefManager.getInstance().isAdsTrackersNotificationStarted()
|
||||
&& (trackersBlockedCount + adsBlockedCount) > 250) {
|
||||
RetentionNotificationUtil.scheduleNotification(getContext(), RetentionNotificationUtil.BRAVE_STATS_ADS_TRACKERS);
|
||||
OnboardingPrefManager.getInstance().setAdsTrackersNotificationStarted(true);
|
||||
}
|
||||
|
||||
if (!OnboardingPrefManager.getInstance().isDataSavedNotificationStarted()
|
||||
&& dataSaved > MB_10) {
|
||||
RetentionNotificationUtil.scheduleNotification(getContext(), RetentionNotificationUtil.BRAVE_STATS_DATA);
|
||||
OnboardingPrefManager.getInstance().setDataSavedNotificationStarted(true);
|
||||
}
|
||||
|
||||
if (!OnboardingPrefManager.getInstance().isTimeSavedNotificationStarted()
|
||||
&& estimatedMillisecondsSaved > MINUTES_10) {
|
||||
RetentionNotificationUtil.scheduleNotification(getContext(), RetentionNotificationUtil.BRAVE_STATS_TIME);
|
||||
OnboardingPrefManager.getInstance().setTimeSavedNotificationStarted(true);
|
||||
}
|
||||
|
||||
if (!NewTabPage.isNTPUrl(tab.getUrlString())
|
||||
&& !OnboardingPrefManager.getInstance().hasShieldsTooltipShown()
|
||||
&& PackageUtils.isFirstInstall(getContext())
|
||||
|
||||
Reference in New Issue
Block a user