Merge pull request #20339 from brave/payout_status_banner_followup

Payout status banner follow up
This commit is contained in:
Deep Pandya
2023-10-03 15:42:04 -04:00
committed by GitHub
4 changed files with 78 additions and 35 deletions
@@ -719,10 +719,11 @@ public class BraveRewardsNativeWorker {
@CalledByNative
public void OnGetAdsAccountStatement(boolean success, double nextPaymentDate,
int adsReceivedThisMonth, double minEarningsThisMonth, double maxEarningsThisMonth,
double earningsLastMonth) {
double minEarningsLastMonth, double maxEarningsLastMonth) {
for (BraveRewardsObserver observer : mObservers) {
observer.OnGetAdsAccountStatement(success, nextPaymentDate, adsReceivedThisMonth,
minEarningsThisMonth, maxEarningsThisMonth, earningsLastMonth);
minEarningsThisMonth, maxEarningsThisMonth, minEarningsLastMonth,
maxEarningsLastMonth);
}
}
@@ -34,7 +34,7 @@ public interface BraveRewardsObserver {
default public void onSendContribution(boolean result){};
default public void OnGetAdsAccountStatement(boolean success, double nextPaymentDate,
int adsReceivedThisMonth, double minEarningsThisMonth, double maxEarningsThisMonth,
double earningsLastMonth){};
double minEarningsLastMonth, double maxEarningsLastMonth){};
default public void onPublisherBanner(String jsonBannerInfo){};
default public void onGetPublishersVisitedCount(int count){};
default public void onGetUserType(int userType){};
@@ -149,7 +149,7 @@ public class BraveRewardsPanel
public static final String WALLET_GENERATION_DISABLED_ERROR = "wallet-generation-disabled";
// Payout status
private static final String PAYOUT_STATUS_PENDING = "pending";
private static final String PAYOUT_STATUS_PENDING = "off";
private static final String PAYOUT_STATUS_PROCESSING = "processing";
private static final String PAYOUT_STATUS_COMPLETE = "complete";
@@ -1023,7 +1023,7 @@ public class BraveRewardsPanel
@Override
public void OnGetAdsAccountStatement(boolean success, double nextPaymentDate,
int adsReceivedThisMonth, double minEarningsThisMonth, double maxEarningsThisMonth,
double earningsLastMonth) {
double minEarningsLastMonth, double maxEarningsLastMonth) {
if (mExternalWallet != null && mExternalWallet.getStatus() == WalletStatus.NOT_CONNECTED
&& !PackageUtils.isFirstInstall(mActivity)) {
mPopupView.findViewById(R.id.estimated_earnings_range_group).setVisibility(View.GONE);
@@ -1048,31 +1048,73 @@ public class BraveRewardsPanel
estimatedRange.setText(estimatedValue);
}
}
showPayoutStatusBanner(nextPaymentDate);
if (minEarningsLastMonth > 0) {
showPayoutStatusBanner((long) nextPaymentDate);
}
}
private void showPayoutStatusBanner(double nextPaymentDate) {
private double getDaysUntilRewardsPayment(long nextPaymentDateLong) {
Date nextPaymentDate = new Date(nextPaymentDateLong);
Calendar nextPaymentDateCalendar = Calendar.getInstance();
nextPaymentDateCalendar.setTime(nextPaymentDate);
nextPaymentDateCalendar.set(Calendar.HOUR_OF_DAY, 0);
nextPaymentDateCalendar.set(Calendar.MINUTE, 0);
nextPaymentDateCalendar.set(Calendar.SECOND, 0);
Calendar nowDateCalendar = Calendar.getInstance();
if (nextPaymentDateCalendar.get(Calendar.MONTH) != nowDateCalendar.get(Calendar.MONTH)) {
return 0;
}
long delta =
nextPaymentDateCalendar.getTime().getTime() - nowDateCalendar.getTime().getTime();
double days = Math.ceil((double) delta / 24 / 60 / 60 / 1000);
if (days < 1) {
return 0;
}
return days;
}
private String getPaymentMonth() {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH, -1);
return (String) android.text.format.DateFormat.format("MMMM", calendar);
}
private String formatPaymentDate(long nextPaymentDateLong) {
Date nextPaymentDate = new Date(nextPaymentDateLong);
Calendar calendar = Calendar.getInstance();
calendar.setTime(nextPaymentDate);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
return (String) android.text.format.DateFormat.format("MMMM dd", calendar.getTime());
}
private void showPayoutStatusBanner(long nextPaymentDate) {
String payoutStatus = mBraveRewardsNativeWorker.getPayoutStatus();
if (mPayoutStatusBannerLayout != null && !TextUtils.isEmpty(payoutStatus)
&& mExternalWallet != null
if (mPayoutStatusBannerLayout != null && mExternalWallet != null
&& mExternalWallet.getStatus() == WalletStatus.CONNECTED) {
String currentDate = (String) android.text.format.DateFormat.format("MMMM", new Date());
mPayoutStatusBannerLayout.setVisibility(View.VISIBLE);
ImageView payoutBannerImg = mPopupView.findViewById(R.id.payout_banner_img);
TextView payoutBannerText = mPopupView.findViewById(R.id.payout_banner_text);
if (payoutStatus.equals(PAYOUT_STATUS_PENDING)) {
if (nextPaymentDate > 0) {
String nextPayoutDate = (String) android.text.format.DateFormat.format(
"MMMM dd", new Date((long) nextPaymentDate));
mPayoutStatusBannerLayout.setBackgroundDrawable(ResourcesCompat.getDrawable(
ContextUtils.getApplicationContext().getResources(),
R.drawable.rewards_panel_payout_processing_bg, null));
payoutBannerImg.setImageResource(R.drawable.ic_payout_status_pending);
payoutBannerText.setText(
String.format(mPopupView.getResources().getString(
R.string.rewards_panel_payout_pending_text),
currentDate, nextPayoutDate));
}
if (payoutStatus.equals(PAYOUT_STATUS_COMPLETE)) {
mPayoutStatusBannerLayout.setBackgroundDrawable(ResourcesCompat.getDrawable(
ContextUtils.getApplicationContext().getResources(),
R.drawable.rewards_panel_payout_complete_bg, null));
payoutBannerImg.setImageResource(R.drawable.ic_payout_status_complete);
SpannableString spannableBannerText = spannableClickSpan(
String.format(mPopupView.getResources().getString(
R.string.rewards_panel_payout_complete_text),
getPaymentMonth(),
mPopupView.getResources().getString(R.string.support)),
mPopupView.getResources().getString(R.string.support), SUPPORT_URL);
payoutBannerText.setMovementMethod(LinkMovementMethod.getInstance());
payoutBannerText.setText(spannableBannerText);
} else if (payoutStatus.equals(PAYOUT_STATUS_PROCESSING)) {
mPayoutStatusBannerLayout.setBackgroundDrawable(ResourcesCompat.getDrawable(
ContextUtils.getApplicationContext().getResources(),
@@ -1081,7 +1123,7 @@ public class BraveRewardsPanel
SpannableString spannableBannerText = spannableClickSpan(
String.format(mPopupView.getResources().getString(
R.string.rewards_panel_payout_processing_text),
currentDate,
getPaymentMonth(),
mPopupView.getResources().getString(
R.string.rewards_panel_payout_check_status_text)),
mPopupView.getResources().getString(
@@ -1089,18 +1131,17 @@ public class BraveRewardsPanel
ADS_PAYOUT_STATUS_URL);
payoutBannerText.setMovementMethod(LinkMovementMethod.getInstance());
payoutBannerText.setText(spannableBannerText);
} else if (payoutStatus.equals(PAYOUT_STATUS_COMPLETE)) {
} else if ((payoutStatus.equals(PAYOUT_STATUS_PENDING)
|| TextUtils.isEmpty(payoutStatus))
&& getDaysUntilRewardsPayment(nextPaymentDate) > 0) {
mPayoutStatusBannerLayout.setBackgroundDrawable(ResourcesCompat.getDrawable(
ContextUtils.getApplicationContext().getResources(),
R.drawable.rewards_panel_payout_complete_bg, null));
payoutBannerImg.setImageResource(R.drawable.ic_payout_status_complete);
SpannableString spannableBannerText = spannableClickSpan(
R.drawable.rewards_panel_payout_processing_bg, null));
payoutBannerImg.setImageResource(R.drawable.ic_payout_status_pending);
payoutBannerText.setText(
String.format(mPopupView.getResources().getString(
R.string.rewards_panel_payout_complete_text),
currentDate, mPopupView.getResources().getString(R.string.support)),
mPopupView.getResources().getString(R.string.support), SUPPORT_URL);
payoutBannerText.setMovementMethod(LinkMovementMethod.getInstance());
payoutBannerText.setText(spannableBannerText);
R.string.rewards_panel_payout_pending_text),
getPaymentMonth(), formatPaymentDate(nextPaymentDate)));
}
}
}