diff --git a/src/background/services/monetization.ts b/src/background/services/monetization.ts index 90a6582d2..cbf8f0ede 100644 --- a/src/background/services/monetization.ts +++ b/src/background/services/monetization.ts @@ -91,15 +91,25 @@ export class MonetizationService { ); return; } - const { tabId, frameId, url } = getSender(sender); + + const deps = { + storage: this.storage, + openPaymentsService: this.openPaymentsService, + outgoingPaymentGrantService: this.outgoingPaymentGrantService, + events: this.events, + tabState: this.tabState, + logger: this.logger, + message: this.message, + }; + + const { tabId, frameId, url: fullUrl } = getSender(sender); + const url = removeQueryParams(fullUrl!); const sessions = this.tabState.getSessions(tabId); const replacedSessions = new Set(); // Initialize new sessions - for (const p of payload) { - const { requestId, walletAddress: receiver } = p; - + for (const { requestId, walletAddress: receiver } of payload) { // Q: How does this impact client side apps/routing? const existingSession = sessions.get(requestId); if (existingSession) { @@ -114,14 +124,8 @@ export class MonetizationService { requestId, tabId, frameId, - this.storage, - this.openPaymentsService, - this.outgoingPaymentGrantService, - this.events, - this.tabState, - removeQueryParams(url!), - this.logger, - this.message, + url, + deps, ); sessions.set(requestId, session); @@ -177,17 +181,15 @@ export class MonetizationService { return; } - for (const p of payload) { - const { requestId } = p; - + for (const { requestId, intent } of payload) { const session = sessions.get(requestId); if (!session) continue; - if (p.intent === 'remove') { + if (intent === 'remove') { needsAdjustAmount = true; session.stop(); sessions.delete(requestId); - } else if (p.intent === 'disable') { + } else if (intent === 'disable') { needsAdjustAmount = true; session.disable(); } else { diff --git a/src/background/services/paymentSession.ts b/src/background/services/paymentSession.ts index 5129ffd0c..b6e65fada 100644 --- a/src/background/services/paymentSession.ts +++ b/src/background/services/paymentSession.ts @@ -17,20 +17,11 @@ import { } from '@/background/services/openPayments'; import { bigIntMax, convert, getNextSendableAmount } from '@/background/utils'; import type { - EventsService, - OpenPaymentsService, - OutgoingPaymentGrantService, - StorageService, - TabState, -} from '.'; -import type { - BackgroundToContentMessage, - MessageManager, MonetizationEventDetails, MonetizationEventPayload, } from '@/shared/messages'; import type { AmountValue } from '@/shared/types'; -import type { Logger } from '@/shared/logger'; +import type { Cradle as Cradle_ } from '@/background/container'; import { OUTGOING_PAYMENT_POLLING_INITIAL_DELAY, OUTGOING_PAYMENT_POLLING_INTERVAL, @@ -47,9 +38,26 @@ interface CreateOutgoingPaymentParams { incomingPaymentId: IncomingPayment['id']; amount: string; } +type Cradle = Pick< + Cradle_, + | 'storage' + | 'openPaymentsService' + | 'outgoingPaymentGrantService' + | 'events' + | 'tabState' + | 'logger' + | 'message' +>; export class PaymentSession { - private rate: string; + private storage: Cradle['storage']; + private openPaymentsService: Cradle['openPaymentsService']; + private outgoingPaymentGrantService: Cradle['outgoingPaymentGrantService']; + private events: Cradle['events']; + private tabState: Cradle['tabState']; + private logger: Cradle['logger']; + private message: Cradle['message']; + private active = false; /** Invalid receiver (providers not peered or other reasons) */ private isInvalid = false; @@ -57,7 +65,8 @@ export class PaymentSession { private isDisabled = false; private incomingPaymentUrl: string; private incomingPaymentExpiresAt: number; - private amount: string; + private rate: AmountValue; + private amount: AmountValue; private intervalInMs: number; private shouldRetryImmediately = false; @@ -69,15 +78,11 @@ export class PaymentSession { private requestId: string, private tabId: number, private frameId: number, - private storage: StorageService, - private openPaymentsService: OpenPaymentsService, - private outgoingPaymentGrantService: OutgoingPaymentGrantService, - private events: EventsService, - private tabState: TabState, private url: string, - private logger: Logger, - private message: MessageManager, - ) {} + private deps: Cradle, + ) { + Object.assign(this, this.deps); + } #adjustAmountLastRate: AmountValue; #adjustAmountController = new AbortController();