Skip to content

Commit 546f45b

Browse files
author
Jason Sadler
committed
Removed comment Moved corrupt wallet check after state files load Removed extension value Addressing comments Run sanity check on panel open to check wallet state. lint
1 parent ed90540 commit 546f45b

File tree

12 files changed

+59
-6
lines changed

12 files changed

+59
-6
lines changed

common/extensions/api/brave_rewards.json

+6
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,12 @@
257257
"description": "Fired when wallet creation failed",
258258
"parameters": []
259259
},
260+
{
261+
"name": "onWalletCorrupted",
262+
"type": "function",
263+
"description": "Fired when wallet is corrupt",
264+
"parameters": []
265+
},
260266
{
261267
"name": "onPublisherListNormalized",
262268
"type": "function",

components/brave_rewards/browser/extension_rewards_service_observer.cc

+14
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,12 @@ void ExtensionRewardsServiceObserver::OnWalletInitialized(
4444
extensions::api::brave_rewards::OnWalletCreated::kEventName,
4545
std::move(args)));
4646
event_router->BroadcastEvent(std::move(event));
47+
} else if (result == ledger::Result::CORRUPTED_WALLET) {
48+
std::unique_ptr<extensions::Event> event(new extensions::Event(
49+
extensions::events::BRAVE_START,
50+
extensions::api::brave_rewards::OnWalletCorrupted::kEventName,
51+
std::move(args)));
52+
event_router->BroadcastEvent(std::move(event));
4753
} else if (result != ledger::Result::LEDGER_OK) {
4854
std::unique_ptr<extensions::Event> event(new extensions::Event(
4955
extensions::events::BRAVE_WALLET_FAILED,
@@ -60,6 +66,14 @@ void ExtensionRewardsServiceObserver::OnWalletProperties(
6066
std::unique_ptr<brave_rewards::WalletProperties> wallet_properties) {
6167
auto* event_router =
6268
extensions::EventRouter::Get(profile_);
69+
if (error_code == 17) { // ledger::Result::CORRUPT_WALLET
70+
std::unique_ptr<base::ListValue> args(new base::ListValue());
71+
std::unique_ptr<extensions::Event> event(new extensions::Event(
72+
extensions::events::BRAVE_START,
73+
extensions::api::brave_rewards::OnWalletCorrupted::kEventName,
74+
std::move(args)));
75+
event_router->BroadcastEvent(std::move(event));
76+
}
6377
if (event_router && wallet_properties) {
6478
extensions::api::brave_rewards::OnWalletProperties::Properties properties;
6579

components/brave_rewards/resources/extension/brave_rewards/actions/rewards_panel_actions.ts

+2
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ export const onWalletCreated = () => action(types.ON_WALLET_CREATED, {})
1313

1414
export const onWalletCreateFailed = () => action(types.ON_WALLET_CREATE_FAILED, {})
1515

16+
export const onWalletCorrupted = () => action(types.ON_WALLET_CORRUPTED)
17+
1618
export const onTabId = (tabId: number | undefined) => action(types.ON_TAB_ID, {
1719
tabId
1820
})

components/brave_rewards/resources/extension/brave_rewards/background/events/rewardsEvents.ts

+4
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,10 @@ chrome.braveRewards.onWalletFailed.addListener(() => {
6363
rewardsPanelActions.onWalletCreateFailed()
6464
})
6565

66+
chrome.braveRewards.onWalletCorrupted.addListener(() => {
67+
rewardsPanelActions.onWalletCorrupted()
68+
})
69+
6670
chrome.braveRewards.onPublisherListNormalized.addListener((properties: RewardsExtension.PublisherNormalized[]) => {
6771
rewardsPanelActions.onPublisherListNormalized(properties)
6872
})

components/brave_rewards/resources/extension/brave_rewards/background/reducers/rewards_panel_reducer.ts

+7
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,14 @@ export const rewardsPanelReducer = (state: RewardsExtension.State | undefined, a
3939
state.walletCreating = true
4040
state.walletCreateFailed = false
4141
state.walletCreated = false
42+
state.walletCorrupted = false
4243
break
4344
case types.ON_WALLET_CREATED:
4445
state = { ...state }
4546
state.walletCreated = true
4647
state.walletCreateFailed = false
4748
state.walletCreating = false
49+
state.walletCorrupted = false
4850
chrome.braveRewards.saveAdsSetting('adsEnabled', 'true')
4951
chrome.storage.local.get(['is_dismissed'], function (result) {
5052
if (result && result['is_dismissed'] === 'false') {
@@ -60,6 +62,11 @@ export const rewardsPanelReducer = (state: RewardsExtension.State | undefined, a
6062
state.walletCreateFailed = true
6163
state.walletCreating = false
6264
state.walletCreated = false
65+
state.walletCorrupted = false
66+
break
67+
case types.ON_WALLET_CORRUPTED:
68+
state = { ...state }
69+
state.walletCorrupted = true
6370
break
6471
case types.ON_TAB_ID:
6572
if (payload.tabId) {

components/brave_rewards/resources/extension/brave_rewards/background/storage.ts

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { debounce } from '../../../../../common/debounce'
88
const keyName = 'rewards-panel-data'
99

1010
export const defaultState: RewardsExtension.State = {
11+
walletCorrupted: false,
1112
walletCreated: false,
1213
walletCreating: false,
1314
walletCreateFailed: false,

components/brave_rewards/resources/extension/brave_rewards/components/app.tsx

+3-2
Original file line numberDiff line numberDiff line change
@@ -193,13 +193,14 @@ export class RewardsPanel extends React.Component<Props, State> {
193193
walletCreateFailed,
194194
walletCreated,
195195
walletCreating,
196-
walletProperties
196+
walletProperties,
197+
walletCorrupted
197198
} = this.props.rewardsPanelData
198199

199200
const { balance, grants, rates } = walletProperties
200201
const converted = utils.convertBalance(balance.toString(), rates)
201202

202-
if (!walletCreated) {
203+
if (!walletCreated || walletCorrupted) {
203204
return (
204205
<PanelWelcome
205206
error={walletCreateFailed}

components/brave_rewards/resources/extension/brave_rewards/constants/rewards_panel_types.ts

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ export const enum types {
66
CREATE_WALLET = '@@rewards_panel/CREATE_WALLET',
77
ON_WALLET_CREATED = '@@rewards_panel/ON_WALLET_CREATED',
88
ON_WALLET_CREATE_FAILED = '@@rewards_panel/ON_WALLET_CREATE_FAILED',
9+
ON_WALLET_CORRUPTED = '@@rewards_panel/ON_WALLET_CORRUPTED',
910
ON_TAB_ID = '@@rewards_panel/ON_TAB_ID',
1011
ON_TAB_RETRIEVED = '@@rewards_panel/ON_TAB_RETRIEVED',
1112
ON_PUBLISHER_DATA = '@@rewards_panel/ON_PUBLISHER_DATA',

components/definitions/chromel.d.ts

+3
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@ declare namespace chrome.braveRewards {
5656
const onWalletFailed: {
5757
addListener: (callback: () => void) => void
5858
}
59+
const onWalletCorrupted: {
60+
addListener: (callback: () => void) => void
61+
}
5962
const getACEnabled: (callback: (enabled: boolean) => void) => {}
6063
const onPublisherListNormalized: {
6164
addListener: (callback: (properties: RewardsExtension.PublisherNormalized[]) => void) => void

components/definitions/rewardsExtensions.d.ts

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ declare namespace RewardsExtension {
99
report: Report
1010
grants?: GrantInfo[]
1111
pendingContributionTotal: number
12+
walletCorrupted: boolean
1213
walletCreated: boolean
1314
walletCreating: boolean
1415
walletCreateFailed: boolean

vendor/bat-native-ledger/src/bat/ledger/internal/bat_client.cc

+12-2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
#include <ctime>
88
#include <sstream>
99
#include <map>
10+
#include <memory>
11+
#include <utility>
1012

1113
#include "bat/ledger/internal/bat_client.h"
1214
#include "bat/ledger/internal/bat_helper.h"
@@ -313,7 +315,6 @@ void BatClient::WalletPropertiesCallback(
313315

314316
std::string BatClient::getWalletPassphrase() const {
315317
braveledger_bat_helper::WALLET_INFO_ST wallet_info = ledger_->GetWalletInfo();
316-
DCHECK(wallet_info.keyInfoSeed_.size());
317318
std::string passPhrase;
318319
if (wallet_info.keyInfoSeed_.size() == 0) {
319320
return passPhrase;
@@ -376,7 +377,7 @@ void BatClient::OnNicewareListLoaded(const std::string& pass_phrase,
376377
}
377378

378379
void BatClient::continueRecover(int result,
379-
size_t *written,
380+
size_t* written,
380381
const std::vector<uint8_t>& newSeed) {
381382
if (result != 0 || *written == 0) {
382383
BLOG(ledger_, ledger::LogLevel::LOG_INFO)
@@ -480,6 +481,15 @@ ledger_->LogResponse(__func__, response_status_code, response, headers);
480481

481482
void BatClient::getGrants(const std::string& lang,
482483
const std::string& forPaymentId) {
484+
// make sure wallet/client state is sane here as this is the first
485+
// panel call.
486+
const std::string& wallet_payment_id = ledger_->GetPaymentId();
487+
const std::string& passphrase = ledger_->GetWalletPassphrase();
488+
if (wallet_payment_id.empty() || passphrase.empty()) {
489+
braveledger_bat_helper::WALLET_PROPERTIES_ST properties;
490+
ledger_->OnWalletProperties(ledger::Result::CORRUPTED_WALLET, properties);
491+
return;
492+
}
483493
std::string paymentId = forPaymentId;
484494
if (paymentId.empty()) {
485495
paymentId = ledger_->GetPaymentId();

vendor/bat-native-ledger/src/bat/ledger/internal/ledger_impl.cc

+5-2
Original file line numberDiff line numberDiff line change
@@ -280,8 +280,11 @@ void LedgerImpl::OnPublisherStateLoaded(ledger::Result result,
280280
BLOG(this, ledger::LogLevel::LOG_DEBUG) <<
281281
"Failed publisher state: " << data;
282282
}
283-
284-
OnWalletInitialized(result);
283+
if (GetPaymentId().empty() || GetWalletPassphrase().empty()) {
284+
OnWalletInitialized(ledger::Result::CORRUPTED_WALLET);
285+
} else {
286+
OnWalletInitialized(result);
287+
}
285288
}
286289

287290
void LedgerImpl::SaveLedgerState(const std::string& data) {

0 commit comments

Comments
 (0)