Skip to content

Commit 1471f39

Browse files
authored
Merge pull request #6301 from brave/android_refresh_publisher
[Android] Added ability to refresh publisher status
2 parents 97dfc02 + 6042f9c commit 1471f39

File tree

7 files changed

+199
-53
lines changed

7 files changed

+199
-53
lines changed

android/java/org/chromium/chrome/browser/BraveRewardsNativeWorker.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -437,6 +437,19 @@ public void OnRecoverWallet(int errorCode) {
437437
}
438438
}
439439

440+
public void RefreshPublisher(String publisherKey) {
441+
synchronized (lock) {
442+
nativeRefreshPublisher(mNativeBraveRewardsNativeWorker, publisherKey);
443+
}
444+
}
445+
446+
@CalledByNative
447+
public void OnRefreshPublisher(int status, String publisherKey) {
448+
for (BraveRewardsObserver observer : mObservers) {
449+
observer.OnRefreshPublisher(status, publisherKey);
450+
}
451+
}
452+
440453
@CalledByNative
441454
public void OnGetRewardsMainEnabled(boolean enabled) {
442455
int oldRewardsStatus = rewardsStatus;
@@ -671,5 +684,6 @@ private native boolean nativeIsCurrentPublisherInRecurrentDonations(long nativeB
671684
private native void nativeDisconnectWallet(long nativeBraveRewardsNativeWorker, String wallet_type);
672685
private native void nativeProcessRewardsPageUrl(long nativeBraveRewardsNativeWorker, String path, String query);
673686
private native void nativeRecoverWallet(long nativeBraveRewardsNativeWorker, String passPhrase);
687+
private native void nativeRefreshPublisher(long nativeBraveRewardsNativeWorker, String publisherKey);
674688
private native void nativeGetRewardsParameters(long nativeBraveRewardsNativeWorker);
675689
}

android/java/org/chromium/chrome/browser/BraveRewardsObserver.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,5 @@ default public void OnProcessRewardsPageUrl(int error_code,
3232
String wallet_type, String action, String json_args ) {};
3333
default public void OnClaimPromotion(int error_code) {};
3434
default public void OnRecoverWallet(int errorCode) {};
35+
default public void OnRefreshPublisher(int status, String publisherKey){};
3536
}

android/java/org/chromium/chrome/browser/BraveRewardsPanelPopup.java

Lines changed: 92 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1167,47 +1167,8 @@ public void OnPublisherInfo(int tabId) {
11671167
btAutoContribute.setOnCheckedChangeListener(autoContributeSwitchListener);
11681168
}
11691169

1170-
// set publisher verified/unverified status
1171-
String verified_text = "";
1172-
TextView tvVerified = (TextView)root.findViewById(R.id.publisher_verified);
1173-
@PublisherStatus int pubStatus =
1174-
thisObject.mBraveRewardsNativeWorker.GetPublisherStatus(currentTabId);
1175-
if (pubStatus == BraveRewardsPublisher.CONNECTED ||
1176-
pubStatus == BraveRewardsPublisher.VERIFIED) {
1177-
verified_text = root.getResources().getString(R.string.brave_ui_verified_publisher);
1178-
} else {
1179-
verified_text = root.getResources().getString(R.string.brave_ui_not_verified_publisher);
1180-
tvVerified.setCompoundDrawablesWithIntrinsicBounds(R.drawable.bat_unverified, 0, 0, 0);
1181-
}
1182-
tvVerified.setText(verified_text);
1183-
tvVerified.setVisibility(View.VISIBLE);
1184-
1185-
// show |brave_ui_panel_connected_text| text if
1186-
// publisher is CONNECTED and user doesn't have any Brave funds (anonymous or
1187-
// blinded wallets)
1188-
String verified_description = "";
1189-
if (pubStatus == BraveRewardsPublisher.CONNECTED) {
1190-
BraveRewardsBalance balance_obj = mBraveRewardsNativeWorker.GetWalletBalance();
1191-
if (balance_obj != null) {
1192-
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) +
1193-
((balance_obj.mWallets.containsKey(BraveRewardsBalance.WALLET_BLINDED) && balance_obj.mWallets.get(BraveRewardsBalance.WALLET_BLINDED) != null) ? balance_obj.mWallets.get(BraveRewardsBalance.WALLET_BLINDED) : .0);
1194-
if (braveFunds <= 0) {
1195-
verified_description = root.getResources().getString(R.string.brave_ui_panel_connected_text);
1196-
}
1197-
}
1198-
} else if (pubStatus == BraveRewardsPublisher.NOT_VERIFIED) {
1199-
verified_description = root.getResources().getString(
1200-
R.string.brave_ui_not_verified_publisher_description);
1201-
}
1202-
1203-
if (!TextUtils.isEmpty(verified_description)) {
1204-
verified_description += "<br/><font color=#73CBFF>" +
1205-
root.getResources().getString(R.string.learn_more) + ".</font>";
1206-
Spanned toInsert = BraveRewardsHelper.spannedFromHtmlString(verified_description);
1207-
TextView tv_note = (TextView)root.findViewById(R.id.publisher_not_verified);
1208-
tv_note.setText(toInsert);
1209-
tv_note.setVisibility(View.VISIBLE);
1210-
}
1170+
UpdatePublisherStatus(
1171+
thisObject.mBraveRewardsNativeWorker.GetPublisherStatus(currentTabId));
12111172

12121173
tv = (TextView)root.findViewById(R.id.br_no_activities_yet);
12131174
gl = (GridLayout)thisObject.root.findViewById(R.id.br_activities);
@@ -1678,4 +1639,94 @@ public void OnClaimPromotion(int error_code) {
16781639
ShowNotification(REWARDS_PROMOTION_CLAIM_ERROR_ID, REWARDS_PROMOTION_CLAIM_ERROR, 0, args);
16791640
}
16801641
}
1642+
1643+
private void UpdatePublisherStatus(int pubStatus) {
1644+
// Set publisher verified/unverified status
1645+
String verified_text = "";
1646+
TextView publisherVerified = (TextView) root.findViewById(R.id.publisher_verified);
1647+
publisherVerified.setAlpha(1f);
1648+
TextView publisherDelimiter = (TextView) root.findViewById(R.id.publisher_delimiter);
1649+
publisherDelimiter.setAlpha(1f);
1650+
publisherDelimiter.setText(" | ");
1651+
TextView refreshPublisher = (TextView) root.findViewById(R.id.refresh_publisher);
1652+
refreshPublisher.setAlpha(1f);
1653+
refreshPublisher.setEnabled(true);
1654+
View refreshStatusProgress = root.findViewById(R.id.progress_refresh_status);
1655+
refreshStatusProgress.setVisibility(View.GONE);
1656+
refreshPublisher.setOnClickListener((new View.OnClickListener() {
1657+
@Override
1658+
public void onClick(View v) {
1659+
String pubId = thisObject.mBraveRewardsNativeWorker.GetPublisherId(currentTabId);
1660+
refreshStatusProgress.setVisibility(View.VISIBLE);
1661+
refreshPublisher.setEnabled(false);
1662+
publisherVerified.setAlpha(.3f);
1663+
publisherDelimiter.setAlpha(.3f);
1664+
refreshPublisher.setAlpha(.3f);
1665+
mBraveRewardsNativeWorker.RefreshPublisher(pubId);
1666+
}
1667+
}));
1668+
if (pubStatus == BraveRewardsPublisher.CONNECTED
1669+
|| pubStatus == BraveRewardsPublisher.VERIFIED) {
1670+
verified_text = root.getResources().getString(R.string.brave_ui_verified_publisher);
1671+
publisherVerified.setCompoundDrawablesWithIntrinsicBounds(
1672+
R.drawable.bat_verified, 0, 0, 0);
1673+
publisherDelimiter.setVisibility(View.GONE);
1674+
refreshPublisher.setVisibility(View.GONE);
1675+
} else {
1676+
verified_text = root.getResources().getString(R.string.brave_ui_not_verified_publisher);
1677+
publisherVerified.setCompoundDrawablesWithIntrinsicBounds(
1678+
R.drawable.bat_unverified, 0, 0, 0);
1679+
publisherDelimiter.setVisibility(View.VISIBLE);
1680+
refreshPublisher.setVisibility(View.VISIBLE);
1681+
}
1682+
publisherVerified.setText(verified_text);
1683+
publisherVerified.setVisibility(View.VISIBLE);
1684+
1685+
// show |brave_ui_panel_connected_text| text if
1686+
// publisher is CONNECTED and user doesn't have any Brave funds (anonymous or
1687+
// blinded wallets)
1688+
String verified_description = "";
1689+
if (pubStatus == BraveRewardsPublisher.CONNECTED) {
1690+
BraveRewardsBalance balance_obj = mBraveRewardsNativeWorker.GetWalletBalance();
1691+
if (balance_obj != null) {
1692+
double braveFunds =
1693+
((balance_obj.mWallets.containsKey(BraveRewardsBalance.WALLET_ANONYMOUS)
1694+
&& balance_obj.mWallets.get(BraveRewardsBalance.WALLET_ANONYMOUS)
1695+
!= null)
1696+
? balance_obj.mWallets.get(
1697+
BraveRewardsBalance.WALLET_ANONYMOUS)
1698+
: .0)
1699+
+ ((balance_obj.mWallets.containsKey(BraveRewardsBalance.WALLET_BLINDED)
1700+
&& balance_obj.mWallets.get(BraveRewardsBalance.WALLET_BLINDED)
1701+
!= null)
1702+
? balance_obj.mWallets.get(
1703+
BraveRewardsBalance.WALLET_BLINDED)
1704+
: .0);
1705+
if (braveFunds <= 0) {
1706+
verified_description =
1707+
root.getResources().getString(R.string.brave_ui_panel_connected_text);
1708+
}
1709+
}
1710+
} else if (pubStatus == BraveRewardsPublisher.NOT_VERIFIED) {
1711+
verified_description = root.getResources().getString(
1712+
R.string.brave_ui_not_verified_publisher_description);
1713+
}
1714+
1715+
if (!TextUtils.isEmpty(verified_description)) {
1716+
verified_description += "<br/><font color=#73CBFF>"
1717+
+ root.getResources().getString(R.string.learn_more) + ".</font>";
1718+
Spanned toInsert = BraveRewardsHelper.spannedFromHtmlString(verified_description);
1719+
TextView tv_note = (TextView) root.findViewById(R.id.publisher_not_verified);
1720+
tv_note.setText(toInsert);
1721+
tv_note.setVisibility(View.VISIBLE);
1722+
}
1723+
}
1724+
1725+
@Override
1726+
public void OnRefreshPublisher(int status, String publisherKey) {
1727+
String pubName = thisObject.mBraveRewardsNativeWorker.GetPublisherName(currentTabId);
1728+
if (pubName.equals(publisherKey)) {
1729+
UpdatePublisherStatus(status);
1730+
}
1731+
};
16811732
}

android/java/res/layout/brave_rewards_panel.xml

Lines changed: 59 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -300,19 +300,66 @@
300300
android:textColor="@color/modern_grey_700"
301301
android:textSize="16sp"/>
302302

303-
<TextView
304-
android:id="@+id/publisher_verified"
305-
android:layout_height="wrap_content"
303+
<FrameLayout
306304
android:layout_width="wrap_content"
307-
android:layout_gravity="start|center"
308-
android:text="@string/brave_ui_verified_publisher"
309-
android:drawableStart="@drawable/bat_verified"
310-
android:drawablePadding="4dp"
311-
android:fontFamily="sans-serif"
312-
android:gravity="start"
313-
android:textSize="14sp"
314-
android:textColor="@color/modern_grey_700"
315-
android:visibility="gone"/>
305+
android:layout_height="wrap_content"
306+
android:background="@android:color/transparent" >
307+
308+
<ProgressBar
309+
android:id="@+id/progress_refresh_status"
310+
android:indeterminateDrawable="@drawable/progress_indeterminate_orange"
311+
android:layout_height="18dp"
312+
android:layout_width="wrap_content"
313+
android:layout_gravity="center"
314+
android:gravity="center"
315+
android:alpha="1"
316+
android:visibility="gone" />
317+
318+
<LinearLayout
319+
android:layout_height="wrap_content"
320+
android:layout_width="wrap_content"
321+
android:orientation="horizontal" >
322+
323+
<TextView
324+
android:id="@+id/publisher_verified"
325+
android:layout_height="wrap_content"
326+
android:layout_width="wrap_content"
327+
android:layout_gravity="start|center"
328+
android:text="@string/brave_ui_verified_publisher"
329+
android:drawableStart="@drawable/bat_verified"
330+
android:drawablePadding="4dp"
331+
android:fontFamily="sans-serif"
332+
android:gravity="start"
333+
android:textSize="14sp"
334+
android:textColor="@color/modern_grey_700"
335+
android:visibility="gone" />
336+
337+
<TextView
338+
android:id="@+id/publisher_delimiter"
339+
android:layout_height="wrap_content"
340+
android:layout_width="wrap_content"
341+
android:layout_gravity="start|center"
342+
android:text=""
343+
android:fontFamily="sans-serif"
344+
android:textSize="14sp"
345+
android:textColor="@color/modern_grey_700"
346+
android:visibility="gone" />
347+
348+
<TextView
349+
android:id="@+id/refresh_publisher"
350+
android:layout_height="wrap_content"
351+
android:layout_width="wrap_content"
352+
android:layout_gravity="start|center"
353+
android:text="@string/brave_ui_refresh_publisher_status"
354+
android:fontFamily="sans-serif"
355+
android:textSize="14sp"
356+
android:textColor="#4E56CD"
357+
android:clickable="true"
358+
android:visibility="gone" />
359+
360+
</LinearLayout>
361+
362+
</FrameLayout>
316363

317364
</LinearLayout>
318365

browser/brave_rewards/android/brave_rewards_native_worker.cc

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -762,6 +762,29 @@ void BraveRewardsNativeWorker::OnRecoverWallet(
762762
env, weak_java_brave_rewards_native_worker_.get(env), result);
763763
}
764764

765+
void BraveRewardsNativeWorker::RefreshPublisher(
766+
JNIEnv* env,
767+
const base::android::JavaParamRef<jobject>& obj,
768+
const base::android::JavaParamRef<jstring>& publisher_key) {
769+
if (!brave_rewards_service_) {
770+
NOTREACHED();
771+
return;
772+
}
773+
brave_rewards_service_->RefreshPublisher(
774+
base::android::ConvertJavaStringToUTF8(env, publisher_key),
775+
base::BindOnce(&BraveRewardsNativeWorker::OnRefreshPublisher,
776+
base::Unretained(this)));
777+
}
778+
779+
void BraveRewardsNativeWorker::OnRefreshPublisher(
780+
uint32_t status,
781+
const std::string& publisher_key) {
782+
JNIEnv* env = base::android::AttachCurrentThread();
783+
Java_BraveRewardsNativeWorker_OnRefreshPublisher(
784+
env, weak_java_brave_rewards_native_worker_.get(env), status,
785+
base::android::ConvertUTF8ToJavaString(env, publisher_key));
786+
}
787+
765788
static void JNI_BraveRewardsNativeWorker_Init(
766789
JNIEnv* env,
767790
const base::android::JavaParamRef<jobject>& jcaller) {

browser/brave_rewards/android/brave_rewards_native_worker.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,11 @@ class BraveRewardsNativeWorker : public brave_rewards::RewardsServiceObserver,
179179
const base::android::JavaParamRef<jobject>& obj,
180180
const base::android::JavaParamRef<jstring>& pass_phrase);
181181

182+
void RefreshPublisher(
183+
JNIEnv* env,
184+
const base::android::JavaParamRef<jobject>& obj,
185+
const base::android::JavaParamRef<jstring>& publisher_key);
186+
182187
void OnResetTheWholeState(const bool success);
183188

184189
void OnGetGetReconcileStamp(uint64_t timestamp);
@@ -256,6 +261,8 @@ class BraveRewardsNativeWorker : public brave_rewards::RewardsServiceObserver,
256261
brave_rewards::RewardsService* rewards_service,
257262
const int32_t result) override;
258263

264+
void OnRefreshPublisher(uint32_t status, const std::string& publisher_key);
265+
259266
private:
260267
std::string StdStrStrMapToJsonString(
261268
const std::map<std::string, std::string>& args);

browser/ui/android/strings/android_brave_strings.grd

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1299,6 +1299,9 @@ until they verify, or until 90 days have passed.
12991299
<message name="IDS_DATA_HAS_BEEN_CLEARED" desc="Brave stats pref summary text">
13001300
Privacy reports data has been cleared.
13011301
</message>
1302+
<message name="IDS_BRAVE_UI_REFRESH_PUBLISHER_STATUS" desc="A button that allows to refresh publisher status">
1303+
Refresh Status
1304+
</message>
13021305
</messages>
13031306
</release>
13041307
</grit>

0 commit comments

Comments
 (0)