diff --git a/android/java/org/chromium/chrome/browser/BraveRewardsNativeWorker.java b/android/java/org/chromium/chrome/browser/BraveRewardsNativeWorker.java
index 9d79c22fb093..99c39303acf3 100644
--- a/android/java/org/chromium/chrome/browser/BraveRewardsNativeWorker.java
+++ b/android/java/org/chromium/chrome/browser/BraveRewardsNativeWorker.java
@@ -437,6 +437,19 @@ public void OnRecoverWallet(int errorCode) {
}
}
+ public void RefreshPublisher(String publisherKey) {
+ synchronized (lock) {
+ nativeRefreshPublisher(mNativeBraveRewardsNativeWorker, publisherKey);
+ }
+ }
+
+ @CalledByNative
+ public void OnRefreshPublisher(int status, String publisherKey) {
+ for (BraveRewardsObserver observer : mObservers) {
+ observer.OnRefreshPublisher(status, publisherKey);
+ }
+ }
+
@CalledByNative
public void OnGetRewardsMainEnabled(boolean enabled) {
int oldRewardsStatus = rewardsStatus;
@@ -671,5 +684,6 @@ private native boolean nativeIsCurrentPublisherInRecurrentDonations(long nativeB
private native void nativeDisconnectWallet(long nativeBraveRewardsNativeWorker, String wallet_type);
private native void nativeProcessRewardsPageUrl(long nativeBraveRewardsNativeWorker, String path, String query);
private native void nativeRecoverWallet(long nativeBraveRewardsNativeWorker, String passPhrase);
+ private native void nativeRefreshPublisher(long nativeBraveRewardsNativeWorker, String publisherKey);
private native void nativeGetRewardsParameters(long nativeBraveRewardsNativeWorker);
}
diff --git a/android/java/org/chromium/chrome/browser/BraveRewardsObserver.java b/android/java/org/chromium/chrome/browser/BraveRewardsObserver.java
index 35af742ecb51..f88b22039584 100644
--- a/android/java/org/chromium/chrome/browser/BraveRewardsObserver.java
+++ b/android/java/org/chromium/chrome/browser/BraveRewardsObserver.java
@@ -32,4 +32,5 @@ default public void OnProcessRewardsPageUrl(int error_code,
String wallet_type, String action, String json_args ) {};
default public void OnClaimPromotion(int error_code) {};
default public void OnRecoverWallet(int errorCode) {};
+ default public void OnRefreshPublisher(int status, String publisherKey){};
}
diff --git a/android/java/org/chromium/chrome/browser/BraveRewardsPanelPopup.java b/android/java/org/chromium/chrome/browser/BraveRewardsPanelPopup.java
index ed69dd5ed155..ed9c58d2974a 100644
--- a/android/java/org/chromium/chrome/browser/BraveRewardsPanelPopup.java
+++ b/android/java/org/chromium/chrome/browser/BraveRewardsPanelPopup.java
@@ -1167,47 +1167,8 @@ public void OnPublisherInfo(int tabId) {
btAutoContribute.setOnCheckedChangeListener(autoContributeSwitchListener);
}
- // set publisher verified/unverified status
- String verified_text = "";
- TextView tvVerified = (TextView)root.findViewById(R.id.publisher_verified);
- @PublisherStatus int pubStatus =
- thisObject.mBraveRewardsNativeWorker.GetPublisherStatus(currentTabId);
- if (pubStatus == BraveRewardsPublisher.CONNECTED ||
- pubStatus == BraveRewardsPublisher.VERIFIED) {
- verified_text = root.getResources().getString(R.string.brave_ui_verified_publisher);
- } else {
- verified_text = root.getResources().getString(R.string.brave_ui_not_verified_publisher);
- tvVerified.setCompoundDrawablesWithIntrinsicBounds(R.drawable.bat_unverified, 0, 0, 0);
- }
- tvVerified.setText(verified_text);
- tvVerified.setVisibility(View.VISIBLE);
-
- // show |brave_ui_panel_connected_text| text if
- // publisher is CONNECTED and user doesn't have any Brave funds (anonymous or
- // blinded wallets)
- String verified_description = "";
- if (pubStatus == BraveRewardsPublisher.CONNECTED) {
- BraveRewardsBalance balance_obj = mBraveRewardsNativeWorker.GetWalletBalance();
- if (balance_obj != null) {
- double braveFunds = ((balance_obj.mWallets.containsKey(BraveRewardsBalance.WALLET_ANONYMOUS) && balance_obj.mWallets.get(BraveRewardsBalance.WALLET_ANONYMOUS) != null) ? balance_obj.mWallets.get(BraveRewardsBalance.WALLET_ANONYMOUS) : .0) +
- ((balance_obj.mWallets.containsKey(BraveRewardsBalance.WALLET_BLINDED) && balance_obj.mWallets.get(BraveRewardsBalance.WALLET_BLINDED) != null) ? balance_obj.mWallets.get(BraveRewardsBalance.WALLET_BLINDED) : .0);
- if (braveFunds <= 0) {
- verified_description = root.getResources().getString(R.string.brave_ui_panel_connected_text);
- }
- }
- } else if (pubStatus == BraveRewardsPublisher.NOT_VERIFIED) {
- verified_description = root.getResources().getString(
- R.string.brave_ui_not_verified_publisher_description);
- }
-
- if (!TextUtils.isEmpty(verified_description)) {
- verified_description += "
" +
- root.getResources().getString(R.string.learn_more) + ".";
- Spanned toInsert = BraveRewardsHelper.spannedFromHtmlString(verified_description);
- TextView tv_note = (TextView)root.findViewById(R.id.publisher_not_verified);
- tv_note.setText(toInsert);
- tv_note.setVisibility(View.VISIBLE);
- }
+ UpdatePublisherStatus(
+ thisObject.mBraveRewardsNativeWorker.GetPublisherStatus(currentTabId));
tv = (TextView)root.findViewById(R.id.br_no_activities_yet);
gl = (GridLayout)thisObject.root.findViewById(R.id.br_activities);
@@ -1678,4 +1639,94 @@ public void OnClaimPromotion(int error_code) {
ShowNotification(REWARDS_PROMOTION_CLAIM_ERROR_ID, REWARDS_PROMOTION_CLAIM_ERROR, 0, args);
}
}
+
+ private void UpdatePublisherStatus(int pubStatus) {
+ // Set publisher verified/unverified status
+ String verified_text = "";
+ TextView publisherVerified = (TextView) root.findViewById(R.id.publisher_verified);
+ publisherVerified.setAlpha(1f);
+ TextView publisherDelimiter = (TextView) root.findViewById(R.id.publisher_delimiter);
+ publisherDelimiter.setAlpha(1f);
+ publisherDelimiter.setText(" | ");
+ TextView refreshPublisher = (TextView) root.findViewById(R.id.refresh_publisher);
+ refreshPublisher.setAlpha(1f);
+ refreshPublisher.setEnabled(true);
+ View refreshStatusProgress = root.findViewById(R.id.progress_refresh_status);
+ refreshStatusProgress.setVisibility(View.GONE);
+ refreshPublisher.setOnClickListener((new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ String pubId = thisObject.mBraveRewardsNativeWorker.GetPublisherId(currentTabId);
+ refreshStatusProgress.setVisibility(View.VISIBLE);
+ refreshPublisher.setEnabled(false);
+ publisherVerified.setAlpha(.3f);
+ publisherDelimiter.setAlpha(.3f);
+ refreshPublisher.setAlpha(.3f);
+ mBraveRewardsNativeWorker.RefreshPublisher(pubId);
+ }
+ }));
+ if (pubStatus == BraveRewardsPublisher.CONNECTED
+ || pubStatus == BraveRewardsPublisher.VERIFIED) {
+ verified_text = root.getResources().getString(R.string.brave_ui_verified_publisher);
+ publisherVerified.setCompoundDrawablesWithIntrinsicBounds(
+ R.drawable.bat_verified, 0, 0, 0);
+ publisherDelimiter.setVisibility(View.GONE);
+ refreshPublisher.setVisibility(View.GONE);
+ } else {
+ verified_text = root.getResources().getString(R.string.brave_ui_not_verified_publisher);
+ publisherVerified.setCompoundDrawablesWithIntrinsicBounds(
+ R.drawable.bat_unverified, 0, 0, 0);
+ publisherDelimiter.setVisibility(View.VISIBLE);
+ refreshPublisher.setVisibility(View.VISIBLE);
+ }
+ publisherVerified.setText(verified_text);
+ publisherVerified.setVisibility(View.VISIBLE);
+
+ // show |brave_ui_panel_connected_text| text if
+ // publisher is CONNECTED and user doesn't have any Brave funds (anonymous or
+ // blinded wallets)
+ String verified_description = "";
+ if (pubStatus == BraveRewardsPublisher.CONNECTED) {
+ BraveRewardsBalance balance_obj = mBraveRewardsNativeWorker.GetWalletBalance();
+ if (balance_obj != null) {
+ double braveFunds =
+ ((balance_obj.mWallets.containsKey(BraveRewardsBalance.WALLET_ANONYMOUS)
+ && balance_obj.mWallets.get(BraveRewardsBalance.WALLET_ANONYMOUS)
+ != null)
+ ? balance_obj.mWallets.get(
+ BraveRewardsBalance.WALLET_ANONYMOUS)
+ : .0)
+ + ((balance_obj.mWallets.containsKey(BraveRewardsBalance.WALLET_BLINDED)
+ && balance_obj.mWallets.get(BraveRewardsBalance.WALLET_BLINDED)
+ != null)
+ ? balance_obj.mWallets.get(
+ BraveRewardsBalance.WALLET_BLINDED)
+ : .0);
+ if (braveFunds <= 0) {
+ verified_description =
+ root.getResources().getString(R.string.brave_ui_panel_connected_text);
+ }
+ }
+ } else if (pubStatus == BraveRewardsPublisher.NOT_VERIFIED) {
+ verified_description = root.getResources().getString(
+ R.string.brave_ui_not_verified_publisher_description);
+ }
+
+ if (!TextUtils.isEmpty(verified_description)) {
+ verified_description += "
"
+ + root.getResources().getString(R.string.learn_more) + ".";
+ Spanned toInsert = BraveRewardsHelper.spannedFromHtmlString(verified_description);
+ TextView tv_note = (TextView) root.findViewById(R.id.publisher_not_verified);
+ tv_note.setText(toInsert);
+ tv_note.setVisibility(View.VISIBLE);
+ }
+ }
+
+ @Override
+ public void OnRefreshPublisher(int status, String publisherKey) {
+ String pubName = thisObject.mBraveRewardsNativeWorker.GetPublisherName(currentTabId);
+ if (pubName.equals(publisherKey)) {
+ UpdatePublisherStatus(status);
+ }
+ };
}
diff --git a/android/java/res/layout/brave_rewards_panel.xml b/android/java/res/layout/brave_rewards_panel.xml
index b5a84aababa7..72b9d18e3904 100644
--- a/android/java/res/layout/brave_rewards_panel.xml
+++ b/android/java/res/layout/brave_rewards_panel.xml
@@ -300,19 +300,66 @@
android:textColor="@color/modern_grey_700"
android:textSize="16sp"/>
-
+ android:layout_height="wrap_content"
+ android:background="@android:color/transparent" >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/browser/brave_rewards/android/brave_rewards_native_worker.cc b/browser/brave_rewards/android/brave_rewards_native_worker.cc
index 7826488654b4..9be6848893e4 100644
--- a/browser/brave_rewards/android/brave_rewards_native_worker.cc
+++ b/browser/brave_rewards/android/brave_rewards_native_worker.cc
@@ -762,6 +762,29 @@ void BraveRewardsNativeWorker::OnRecoverWallet(
env, weak_java_brave_rewards_native_worker_.get(env), result);
}
+void BraveRewardsNativeWorker::RefreshPublisher(
+ JNIEnv* env,
+ const base::android::JavaParamRef& obj,
+ const base::android::JavaParamRef& publisher_key) {
+ if (!brave_rewards_service_) {
+ NOTREACHED();
+ return;
+ }
+ brave_rewards_service_->RefreshPublisher(
+ base::android::ConvertJavaStringToUTF8(env, publisher_key),
+ base::BindOnce(&BraveRewardsNativeWorker::OnRefreshPublisher,
+ base::Unretained(this)));
+}
+
+void BraveRewardsNativeWorker::OnRefreshPublisher(
+ uint32_t status,
+ const std::string& publisher_key) {
+ JNIEnv* env = base::android::AttachCurrentThread();
+ Java_BraveRewardsNativeWorker_OnRefreshPublisher(
+ env, weak_java_brave_rewards_native_worker_.get(env), status,
+ base::android::ConvertUTF8ToJavaString(env, publisher_key));
+}
+
static void JNI_BraveRewardsNativeWorker_Init(
JNIEnv* env,
const base::android::JavaParamRef& jcaller) {
diff --git a/browser/brave_rewards/android/brave_rewards_native_worker.h b/browser/brave_rewards/android/brave_rewards_native_worker.h
index b76189b2a283..b051797ec842 100644
--- a/browser/brave_rewards/android/brave_rewards_native_worker.h
+++ b/browser/brave_rewards/android/brave_rewards_native_worker.h
@@ -179,6 +179,11 @@ class BraveRewardsNativeWorker : public brave_rewards::RewardsServiceObserver,
const base::android::JavaParamRef& obj,
const base::android::JavaParamRef& pass_phrase);
+ void RefreshPublisher(
+ JNIEnv* env,
+ const base::android::JavaParamRef& obj,
+ const base::android::JavaParamRef& publisher_key);
+
void OnResetTheWholeState(const bool success);
void OnGetGetReconcileStamp(uint64_t timestamp);
@@ -256,6 +261,8 @@ class BraveRewardsNativeWorker : public brave_rewards::RewardsServiceObserver,
brave_rewards::RewardsService* rewards_service,
const int32_t result) override;
+ void OnRefreshPublisher(uint32_t status, const std::string& publisher_key);
+
private:
std::string StdStrStrMapToJsonString(
const std::map& args);
diff --git a/browser/ui/android/strings/android_brave_strings.grd b/browser/ui/android/strings/android_brave_strings.grd
index 3e6751805819..8650cef0d652 100644
--- a/browser/ui/android/strings/android_brave_strings.grd
+++ b/browser/ui/android/strings/android_brave_strings.grd
@@ -1299,6 +1299,9 @@ until they verify, or until 90 days have passed.
Privacy reports data has been cleared.
+
+ Refresh Status
+