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 +