@@ -4,6 +4,8 @@ import {PingRollbackTrade} from '../bridge/handlers/ping_rollback_trade';
44import { TradeStatus } from '../types/steam_constants' ;
55import { isBackgroundNotaryRollbackEnabled , proveTradesInBackground } from './notary' ;
66import { reportTradeError } from './error_report' ;
7+ import { gStore } from '../storage/store' ;
8+ import { StorageKey } from '../storage/keys' ;
79
810interface RollbackTradeInfo {
911 steamTrade : TradeHistoryStatus ;
@@ -52,13 +54,22 @@ export async function pingRollbackTrades(pendingTrades: SlimTrade[], tradeHistor
5254 }
5355
5456 if ( await isBackgroundNotaryRollbackEnabled ( ) ) {
55- try {
56- await proveTradesInBackground ( rollbackTrades . map ( ( r ) => r . steamTrade ) ) ;
57- console . log ( `proved ${ rollbackTrades . length } rollback trade(s) via notary` ) ;
58- return ;
59- } catch ( e ) {
60- console . error ( 'notary proving failed, falling back to legacy ping' , e ) ;
61- reportTradeError ( rollbackTrades [ 0 ] . csfloatTrade . id , `background extension notary failed: ${ e } ` ) ;
57+ const lastFailure = await gStore . getWithStorage < number > (
58+ chrome . storage . local ,
59+ StorageKey . LAST_NOTARY_BG_PROOF_FAILURE
60+ ) ;
61+ if ( lastFailure && lastFailure > Date . now ( ) - 60 * 60 * 1000 ) {
62+ console . log ( 'skipping notary proof, last failure was less than 60 minutes ago' ) ;
63+ } else {
64+ try {
65+ await proveTradesInBackground ( rollbackTrades . map ( ( r ) => r . steamTrade ) ) ;
66+ console . log ( `proved ${ rollbackTrades . length } rollback trade(s) via notary` ) ;
67+ return ;
68+ } catch ( e ) {
69+ console . error ( 'notary proving failed, falling back to legacy ping' , e ) ;
70+ await gStore . setWithStorage ( chrome . storage . local , StorageKey . LAST_NOTARY_BG_PROOF_FAILURE , Date . now ( ) ) ;
71+ reportTradeError ( rollbackTrades [ 0 ] . csfloatTrade . id , `background extension notary failed: ${ e } ` ) ;
72+ }
6273 }
6374 }
6475
0 commit comments