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. +