Skip to content

Commit f574085

Browse files
kjozwiakbsclifton
authored andcommitted
Merge pull request #5518 from brave/recover-payout-1.8
Adds recovery path for may payout problem (uplift to 1.8.x)
1 parent 8afc9c9 commit f574085

File tree

15 files changed

+291
-15
lines changed

15 files changed

+291
-15
lines changed

components/brave_rewards/common/pref_names.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ const char kUseRewardsStagingServer[] = "brave.rewards.use_staging_server";
3333
const char kStatePromotionLastFetchStamp[] =
3434
"brave.rewards.promotion_last_fetch_stamp";
3535
const char kStatePromotionCorruptedMigrated[] =
36-
"brave.rewards.promotion_corrupted_migrated";
36+
"brave.rewards.promotion_corrupted_migrated2";
3737
const char kStateAnonTransferChecked[] = "brave.rewards.anon_transfer_checked";
3838
} // namespace prefs
3939
} // namespace brave_rewards

vendor/bat-native-ledger/include/bat/ledger/public/interfaces/ledger.mojom

+4-2
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,8 @@ enum PromotionStatus {
360360
ACTIVE = 0,
361361
ATTESTED = 1,
362362
FINISHED = 4,
363-
OVER = 5
363+
OVER = 5,
364+
CORRUPTED = 6
364365
};
365366

366367
struct Promotion {
@@ -440,7 +441,8 @@ enum CredsBatchStatus {
440441
BLINDED = 1,
441442
CLAIMED = 2,
442443
SIGNED = 3,
443-
FINISHED = 4
444+
FINISHED = 4,
445+
CORRUPTED = 5
444446
};
445447

446448
struct CredsBatch {

vendor/bat-native-ledger/src/bat/ledger/internal/credentials/credentials_promotion.cc

+4
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,10 @@ void CredentialsPromotion::OnStart(
102102
callback(ledger::Result::LEDGER_OK);
103103
break;
104104
}
105+
case ledger::CredsBatchStatus::CORRUPTED: {
106+
callback(ledger::Result::LEDGER_ERROR);
107+
break;
108+
}
105109
}
106110
}
107111

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

+25
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,18 @@ void Database::UpdateCredsBatchStatus(
201201
creds_batch_->UpdateStatus(trigger_id, trigger_type, status, callback);
202202
}
203203

204+
void Database::UpdateCredsBatchesStatus(
205+
const std::vector<std::string>& trigger_ids,
206+
const ledger::CredsBatchType trigger_type,
207+
const ledger::CredsBatchStatus status,
208+
ledger::ResultCallback callback) {
209+
creds_batch_->UpdateRecordsStatus(
210+
trigger_ids,
211+
trigger_type,
212+
status,
213+
callback);
214+
}
215+
204216
/**
205217
* MEDIA PUBLISHER INFO
206218
*/
@@ -296,6 +308,13 @@ void Database::UpdatePromotionStatus(
296308
promotion_->UpdateStatus(promotion_id, status, callback);
297309
}
298310

311+
void Database::UpdatePromotionsStatus(
312+
const std::vector<std::string>& promotion_ids,
313+
const ledger::PromotionStatus status,
314+
ledger::ResultCallback callback) {
315+
promotion_->UpdateRecordsStatus(promotion_ids, status, callback);
316+
}
317+
299318
void Database::PromotionCredentialCompleted(
300319
const std::string& promotion_id,
301320
ledger::ResultCallback callback) {
@@ -314,6 +333,12 @@ void Database::GetPromotionListByType(
314333
promotion_->GetRecordsByType(types, callback);
315334
}
316335

336+
void Database::UpdatePromotionsBlankPublicKey(
337+
const std::vector<std::string>& ids,
338+
ledger::ResultCallback callback) {
339+
promotion_->UpdateRecordsBlankPublicKey(ids, callback);
340+
}
341+
317342
/**
318343
* PUBLISHER INFO
319344
*/

vendor/bat-native-ledger/src/bat/ledger/internal/database/database.h

+15
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,12 @@ class Database {
140140
const ledger::CredsBatchStatus status,
141141
ledger::ResultCallback callback);
142142

143+
void UpdateCredsBatchesStatus(
144+
const std::vector<std::string>& trigger_ids,
145+
const ledger::CredsBatchType trigger_type,
146+
const ledger::CredsBatchStatus status,
147+
ledger::ResultCallback callback);
148+
143149
/**
144150
* MEDIA PUBLISHER INFO
145151
*/
@@ -207,6 +213,11 @@ class Database {
207213
const ledger::PromotionStatus status,
208214
ledger::ResultCallback callback);
209215

216+
void UpdatePromotionsStatus(
217+
const std::vector<std::string>& promotion_ids,
218+
const ledger::PromotionStatus status,
219+
ledger::ResultCallback callback);
220+
210221
void PromotionCredentialCompleted(
211222
const std::string& promotion_id,
212223
ledger::ResultCallback callback);
@@ -219,6 +230,10 @@ class Database {
219230
const std::vector<ledger::PromotionType>& types,
220231
ledger::GetPromotionListCallback callback);
221232

233+
void UpdatePromotionsBlankPublicKey(
234+
const std::vector<std::string>& ids,
235+
ledger::ResultCallback callback);
236+
222237
/**
223238
* PUBLISHER INFO
224239
*/

vendor/bat-native-ledger/src/bat/ledger/internal/database/database_creds_batch.cc

+33
Original file line numberDiff line numberDiff line change
@@ -378,4 +378,37 @@ void DatabaseCredsBatch::UpdateStatus(
378378
ledger_->RunDBTransaction(std::move(transaction), transaction_callback);
379379
}
380380

381+
void DatabaseCredsBatch::UpdateRecordsStatus(
382+
const std::vector<std::string>& trigger_ids,
383+
const ledger::CredsBatchType trigger_type,
384+
const ledger::CredsBatchStatus status,
385+
ledger::ResultCallback callback) {
386+
if (trigger_ids.empty()) {
387+
callback(ledger::Result::LEDGER_ERROR);
388+
return;
389+
}
390+
391+
auto transaction = ledger::DBTransaction::New();
392+
393+
const std::string query = base::StringPrintf(
394+
"UPDATE %s SET status = ? WHERE trigger_id IN (%s) AND trigger_type = ?",
395+
kTableName,
396+
GenerateStringInCase(trigger_ids).c_str());
397+
398+
auto command = ledger::DBCommand::New();
399+
command->type = ledger::DBCommand::Type::RUN;
400+
command->command = query;
401+
402+
BindInt(command.get(), 0, static_cast<int>(status));
403+
BindInt(command.get(), 1, static_cast<int>(trigger_type));
404+
405+
transaction->commands.push_back(std::move(command));
406+
407+
auto transaction_callback = std::bind(&OnResultCallback,
408+
_1,
409+
callback);
410+
411+
ledger_->RunDBTransaction(std::move(transaction), transaction_callback);
412+
}
413+
381414
} // namespace braveledger_database

vendor/bat-native-ledger/src/bat/ledger/internal/database/database_creds_batch.h

+6
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,12 @@ class DatabaseCredsBatch: public DatabaseTable {
4141
const ledger::CredsBatchStatus status,
4242
ledger::ResultCallback callback);
4343

44+
void UpdateRecordsStatus(
45+
const std::vector<std::string>& trigger_ids,
46+
const ledger::CredsBatchType trigger_type,
47+
const ledger::CredsBatchStatus status,
48+
ledger::ResultCallback callback);
49+
4450
private:
4551
bool CreateTableV18(ledger::DBTransaction* transaction);
4652

vendor/bat-native-ledger/src/bat/ledger/internal/database/database_promotion.cc

+53
Original file line numberDiff line numberDiff line change
@@ -469,6 +469,36 @@ void DatabasePromotion::UpdateStatus(
469469
ledger_->RunDBTransaction(std::move(transaction), transaction_callback);
470470
}
471471

472+
void DatabasePromotion::UpdateRecordsStatus(
473+
const std::vector<std::string>& ids,
474+
const ledger::PromotionStatus status,
475+
ledger::ResultCallback callback) {
476+
if (ids.empty()) {
477+
callback(ledger::Result::LEDGER_ERROR);
478+
return;
479+
}
480+
481+
const std::string query = base::StringPrintf(
482+
"UPDATE %s SET status = ? WHERE promotion_id IN (%s)",
483+
kTableName,
484+
GenerateStringInCase(ids).c_str());
485+
486+
auto transaction = ledger::DBTransaction::New();
487+
auto command = ledger::DBCommand::New();
488+
command->type = ledger::DBCommand::Type::RUN;
489+
command->command = query;
490+
491+
BindInt(command.get(), 0, static_cast<int>(status));
492+
493+
transaction->commands.push_back(std::move(command));
494+
495+
auto transaction_callback = std::bind(&OnResultCallback,
496+
_1,
497+
callback);
498+
499+
ledger_->RunDBTransaction(std::move(transaction), transaction_callback);
500+
}
501+
472502
void DatabasePromotion::CredentialCompleted(
473503
const std::string& promotion_id,
474504
ledger::ResultCallback callback) {
@@ -623,4 +653,27 @@ void DatabasePromotion::GetRecordsByType(
623653
ledger_->RunDBTransaction(std::move(transaction), transaction_callback);
624654
}
625655

656+
void DatabasePromotion::UpdateRecordsBlankPublicKey(
657+
const std::vector<std::string>& ids,
658+
ledger::ResultCallback callback) {
659+
const std::string query = base::StringPrintf(
660+
"UPDATE %s as p SET public_keys = "
661+
"(SELECT PRINTF('[\"%%s\"]', public_key) FROM creds_batch as cb "
662+
"WHERE cb.trigger_id = p.promotion_id) WHERE p.promotion_id IN (%s)",
663+
kTableName,
664+
GenerateStringInCase(ids).c_str());
665+
666+
auto transaction = ledger::DBTransaction::New();
667+
auto command = ledger::DBCommand::New();
668+
command->type = ledger::DBCommand::Type::EXECUTE;
669+
command->command = query;
670+
transaction->commands.push_back(std::move(command));
671+
672+
auto transaction_callback = std::bind(&OnResultCallback,
673+
_1,
674+
callback);
675+
676+
ledger_->RunDBTransaction(std::move(transaction), transaction_callback);
677+
}
678+
626679
} // namespace braveledger_database

vendor/bat-native-ledger/src/bat/ledger/internal/database/database_promotion.h

+9
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,11 @@ class DatabasePromotion: public DatabaseTable {
5151
const ledger::PromotionStatus status,
5252
ledger::ResultCallback callback);
5353

54+
void UpdateRecordsStatus(
55+
const std::vector<std::string>& ids,
56+
const ledger::PromotionStatus status,
57+
ledger::ResultCallback callback);
58+
5459
void CredentialCompleted(
5560
const std::string& promotion_id,
5661
ledger::ResultCallback callback);
@@ -59,6 +64,10 @@ class DatabasePromotion: public DatabaseTable {
5964
const std::vector<ledger::PromotionType>& types,
6065
ledger::GetPromotionListCallback callback);
6166

67+
void UpdateRecordsBlankPublicKey(
68+
const std::vector<std::string>& ids,
69+
ledger::ResultCallback callback);
70+
6271
private:
6372
bool CreateTableV10(ledger::DBTransaction* transaction);
6473

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

+25
Original file line numberDiff line numberDiff line change
@@ -1713,6 +1713,13 @@ void LedgerImpl::UpdatePromotionStatus(
17131713
bat_database_->UpdatePromotionStatus(promotion_id, status, callback);
17141714
}
17151715

1716+
void LedgerImpl::UpdatePromotionsStatus(
1717+
const std::vector<std::string>& promotion_ids,
1718+
const ledger::PromotionStatus status,
1719+
ledger::ResultCallback callback) {
1720+
bat_database_->UpdatePromotionsStatus(promotion_ids, status, callback);
1721+
}
1722+
17161723
void LedgerImpl::PromotionCredentialCompleted(
17171724
const std::string& promotion_id,
17181725
ledger::ResultCallback callback) {
@@ -1752,4 +1759,22 @@ void LedgerImpl::UpdateCredsBatchStatus(
17521759
callback);
17531760
}
17541761

1762+
void LedgerImpl::UpdateCredsBatchesStatus(
1763+
const std::vector<std::string>& trigger_ids,
1764+
const ledger::CredsBatchType trigger_type,
1765+
const ledger::CredsBatchStatus status,
1766+
ledger::ResultCallback callback) {
1767+
bat_database_->UpdateCredsBatchesStatus(
1768+
trigger_ids,
1769+
trigger_type,
1770+
status,
1771+
callback);
1772+
}
1773+
1774+
void LedgerImpl::UpdatePromotionsBlankPublicKey(
1775+
const std::vector<std::string>& ids,
1776+
ledger::ResultCallback callback) {
1777+
bat_database_->UpdatePromotionsBlankPublicKey(ids, callback);
1778+
}
1779+
17551780
} // namespace bat_ledger

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

+15
Original file line numberDiff line numberDiff line change
@@ -713,6 +713,11 @@ class LedgerImpl : public ledger::Ledger {
713713
const ledger::PromotionStatus status,
714714
ledger::ResultCallback callback);
715715

716+
void UpdatePromotionsStatus(
717+
const std::vector<std::string>& promotion_ids,
718+
const ledger::PromotionStatus status,
719+
ledger::ResultCallback callback);
720+
716721
void PromotionCredentialCompleted(
717722
const std::string& promotion_id,
718723
ledger::ResultCallback callback);
@@ -735,6 +740,16 @@ class LedgerImpl : public ledger::Ledger {
735740
const ledger::CredsBatchStatus status,
736741
ledger::ResultCallback callback);
737742

743+
void UpdateCredsBatchesStatus(
744+
const std::vector<std::string>& trigger_ids,
745+
const ledger::CredsBatchType trigger_type,
746+
const ledger::CredsBatchStatus status,
747+
ledger::ResultCallback callback);
748+
749+
void UpdatePromotionsBlankPublicKey(
750+
const std::vector<std::string>& ids,
751+
ledger::ResultCallback callback);
752+
738753
private:
739754
void InitializeConfirmations(
740755
const bool execute_create_script,

0 commit comments

Comments
 (0)