diff --git a/android/java/org/chromium/chrome/browser/BraveRewardsNativeWorker.java b/android/java/org/chromium/chrome/browser/BraveRewardsNativeWorker.java
index 61cd68d7f77..5cefe6ce193 100644
--- a/android/java/org/chromium/chrome/browser/BraveRewardsNativeWorker.java
+++ b/android/java/org/chromium/chrome/browser/BraveRewardsNativeWorker.java
@@ -618,6 +618,14 @@ public void OnProcessRewardsPageUrl(int error_code, String wallet_type,
}
}
+ @CalledByNative
+ public void OnClaimPromotion(int error_code) {
+ grantClaimInProcess = false;
+ for (BraveRewardsObserver observer : mObservers) {
+ observer.OnClaimPromotion(error_code);
+ }
+ }
+
private native void nativeInit();
private native void nativeDestroy(long nativeBraveRewardsNativeWorker);
private native void nativeCreateWallet(long nativeBraveRewardsNativeWorker);
diff --git a/android/java/org/chromium/chrome/browser/BraveRewardsObserver.java b/android/java/org/chromium/chrome/browser/BraveRewardsObserver.java
index bd57a648fde..69ab2083e21 100644
--- a/android/java/org/chromium/chrome/browser/BraveRewardsObserver.java
+++ b/android/java/org/chromium/chrome/browser/BraveRewardsObserver.java
@@ -31,4 +31,5 @@ default public void OnDisconnectWallet(int error_code,
String external_wallet) {};
default public void OnProcessRewardsPageUrl(int error_code,
String wallet_type, String action, String json_args ) {};
+ default public void OnClaimPromotion(int error_code) {};
}
diff --git a/android/java/org/chromium/chrome/browser/BraveRewardsPanelPopup.java b/android/java/org/chromium/chrome/browser/BraveRewardsPanelPopup.java
index 62d1355bbd1..a33d675494b 100644
--- a/android/java/org/chromium/chrome/browser/BraveRewardsPanelPopup.java
+++ b/android/java/org/chromium/chrome/browser/BraveRewardsPanelPopup.java
@@ -93,6 +93,8 @@
// Custom Android notification
private static final int REWARDS_NOTIFICATION_NO_INTERNET = 1000;
private static final String REWARDS_NOTIFICATION_NO_INTERNET_ID = "29d835c2-5752-4152-93c3-8a1ded9dd4ec";
+ private static final int REWARDS_PROMOTION_CLAIM_ERROR = REWARDS_NOTIFICATION_NO_INTERNET + 1;
+ private static final String REWARDS_PROMOTION_CLAIM_ERROR_ID = "rewards_promotion_claim_error_id";
//
// Auto contribute results
@@ -793,6 +795,7 @@ private boolean IsValidNotificationType(int type, int argsNum){
case BraveRewardsNativeWorker.REWARDS_NOTIFICATION_TIPS_PROCESSED:
case BraveRewardsNativeWorker.REWARDS_NOTIFICATION_ADS_ONBOARDING:
case REWARDS_NOTIFICATION_NO_INTERNET:
+ case REWARDS_PROMOTION_CLAIM_ERROR:
valid = true;
break;
default:
@@ -975,6 +978,21 @@ private void ShowNotification(String id, int type, long timestamp,
nit.setLayoutParams(params);
tv.setGravity(Gravity.START);
break;
+ case REWARDS_PROMOTION_CLAIM_ERROR:
+ title = "";
+ btClaimOk.setText(root.getResources().getString(R.string.ok));
+ description = "" +
+ root.getResources().getString(
+ R.string.brave_rewards_local_general_grant_error_title)
+ + "";
+ notification_icon.setImageResource(R.drawable.coin_stack);
+ hl.setBackgroundResource(R.drawable.notification_header_error);
+ notificationClose.setVisibility(View.GONE);
+ nit.setOrientation(LinearLayout.HORIZONTAL);
+ params.setMargins(params.leftMargin, 180, params.rightMargin, params.bottomMargin);
+ nit.setLayoutParams(params);
+ tv.setGravity(Gravity.START);
+ break;
default:
Log.e(TAG, "This notification type is either invalid or not handled yet: " + type);
assert false;
@@ -1413,7 +1431,10 @@ public void OnGetLatestNotification(String id, int type, long timestamp,
}
return;
}
- ShowNotification(id, type, timestamp, args);
+
+ if (currentNotificationId.isEmpty()) {
+ ShowNotification(id, type, timestamp, args);
+ }
}
@Override
@@ -1673,4 +1694,16 @@ public void OnGetExternalWallet(int error_code, String external_wallet) {
mExternal_wallet = null;
}
}
+
+ /**
+ * Show the "promotion claim failed" error message.
+ * Succesful claims are dismissed by a notification.
+ */
+ @Override
+ public void OnClaimPromotion(int error_code) {
+ if (error_code != BraveRewardsNativeWorker.LEDGER_OK) {
+ String args[] = {};
+ ShowNotification(REWARDS_PROMOTION_CLAIM_ERROR_ID, REWARDS_PROMOTION_CLAIM_ERROR, 0, args);
+ }
+ }
}
diff --git a/android/java/res/drawable-hdpi/coin_stack.png b/android/java/res/drawable-hdpi/coin_stack.png
new file mode 100644
index 00000000000..63dc96139b6
Binary files /dev/null and b/android/java/res/drawable-hdpi/coin_stack.png differ
diff --git a/android/java/res/drawable-mdpi/coin_stack.png b/android/java/res/drawable-mdpi/coin_stack.png
new file mode 100644
index 00000000000..a499d17391c
Binary files /dev/null and b/android/java/res/drawable-mdpi/coin_stack.png differ
diff --git a/android/java/res/drawable-xhdpi/coin_stack.png b/android/java/res/drawable-xhdpi/coin_stack.png
new file mode 100644
index 00000000000..e0e09dfcab0
Binary files /dev/null and b/android/java/res/drawable-xhdpi/coin_stack.png differ
diff --git a/android/java/res/drawable-xxhdpi/coin_stack.png b/android/java/res/drawable-xxhdpi/coin_stack.png
new file mode 100644
index 00000000000..e813824bdac
Binary files /dev/null and b/android/java/res/drawable-xxhdpi/coin_stack.png differ
diff --git a/android/java/res/drawable-xxxhdpi/coin_stack.png b/android/java/res/drawable-xxxhdpi/coin_stack.png
new file mode 100644
index 00000000000..21074dfedea
Binary files /dev/null and b/android/java/res/drawable-xxxhdpi/coin_stack.png differ
diff --git a/browser/brave_rewards/android/brave_rewards_native_worker.cc b/browser/brave_rewards/android/brave_rewards_native_worker.cc
index 998b32bc34f..65eafaaa138 100644
--- a/browser/brave_rewards/android/brave_rewards_native_worker.cc
+++ b/browser/brave_rewards/android/brave_rewards_native_worker.cc
@@ -391,8 +391,9 @@ void BraveRewardsNativeWorker::GetGrant(JNIEnv* env,
void BraveRewardsNativeWorker::OnClaimPromotion(const int32_t result,
std::unique_ptr promotion) {
- // TODO(sergz) do nothing here. We receive an even that promotion
- // being claimed on delete notification
+ JNIEnv* env = base::android::AttachCurrentThread();
+ Java_BraveRewardsNativeWorker_OnClaimPromotion(env,
+ weak_java_brave_rewards_native_worker_.get(env), result);
}
int BraveRewardsNativeWorker::GetCurrentGrantsCount(JNIEnv* env,
diff --git a/browser/ui/android/strings/android_brave_strings.grd b/browser/ui/android/strings/android_brave_strings.grd
index f20b5806802..012d8810fa3 100644
--- a/browser/ui/android/strings/android_brave_strings.grd
+++ b/browser/ui/android/strings/android_brave_strings.grd
@@ -1023,6 +1023,9 @@ until they verify, or until 90 days have passed.
Share Brave with your friends!
+
+ Oops, something is wrong. Please try again later.
+