@@ -121,7 +121,6 @@ export class MonetizationService {
121121 ) ;
122122
123123 this . events . emit ( 'monetization.state_update' , tabId ) ;
124- await paymentManager . adjustAmount ( ) ;
125124
126125 if (
127126 enabled &&
@@ -145,30 +144,35 @@ export class MonetizationService {
145144 payload : StopMonetizationPayload ,
146145 sender : Runtime . MessageSender ,
147146 ) {
148- let needsAdjustAmount = false ;
149147 const { tabId, frameId } = getSender ( sender ) ;
150148 const paymentManager = this . tabState . paymentManagers . get ( tabId ) ;
151149 if ( ! paymentManager ) {
152150 this . logger . warn ( `No payment manager found for tab ${ tabId } .` ) ;
153151 return ;
154152 }
155153
154+ let removedCount = 0 ;
155+ let pausedCount = 0 ;
156156 for ( const { requestId, intent } of payload ) {
157157 if ( intent === 'remove' ) {
158158 paymentManager . removeSession ( requestId , frameId ) ;
159- needsAdjustAmount = true ;
159+ removedCount ++ ;
160160 } else if ( intent === 'disable' ) {
161161 paymentManager . disableSession ( requestId , frameId ) ;
162- needsAdjustAmount = true ;
163162 } else {
164- paymentManager . stopSession ( requestId , frameId ) ;
163+ paymentManager . deactivateSession ( requestId , frameId ) ;
164+ pausedCount ++ ;
165165 }
166166 }
167167
168- if ( needsAdjustAmount ) {
169- this . events . emit ( 'monetization.state_update' , tabId ) ;
170- await paymentManager . adjustAmount ( ) ;
168+ if ( pausedCount > 0 && paymentManager . payableSessions . length === 0 ) {
169+ paymentManager ?. pause ( 'all-paused' ) ;
171170 }
171+ if ( removedCount > 0 && paymentManager . size === 0 ) {
172+ this . tabState . paymentManagers . destroy ( tabId ) ;
173+ }
174+
175+ this . events . emit ( 'monetization.state_update' , tabId ) ;
172176 }
173177
174178 async resumePaymentSession (
@@ -179,7 +183,7 @@ export class MonetizationService {
179183 const paymentManager = this . tabState . paymentManagers . get ( tabId ) ;
180184
181185 if ( ! paymentManager ) {
182- this . logger . debug ( `No payment manager found for tab ${ tabId } .` ) ;
186+ this . logger . warn ( `No payment manager found for tab ${ tabId } .` ) ;
183187 // If there are no sessions and we got a resume call, treat it as a fresh
184188 // start call. The sessions could be cleared as:
185189 // - the background script/worker had terminated, so all sessions (stored
@@ -401,8 +405,8 @@ export class MonetizationService {
401405 }
402406
403407 private stopAllSessions ( ) {
404- for ( const session of this . tabState . getAllSessions ( ) ) {
405- session . stop ( ) ;
408+ for ( const paymentManager of this . tabState . paymentManagers . values ( ) ) {
409+ paymentManager . stop ( ) ;
406410 }
407411 this . logger . debug ( 'All payment sessions stopped.' ) ;
408412 }
0 commit comments