Skip to content

Commit e71d3aa

Browse files
authored
refactor(bg/PaymentSession): improve constructor interface (#1047)
1 parent d64627b commit e71d3aa

File tree

2 files changed

+44
-37
lines changed

2 files changed

+44
-37
lines changed

src/background/services/monetization.ts

+19-17
Original file line numberDiff line numberDiff line change
@@ -91,15 +91,25 @@ export class MonetizationService {
9191
);
9292
return;
9393
}
94-
const { tabId, frameId, url } = getSender(sender);
94+
95+
const deps = {
96+
storage: this.storage,
97+
openPaymentsService: this.openPaymentsService,
98+
outgoingPaymentGrantService: this.outgoingPaymentGrantService,
99+
events: this.events,
100+
tabState: this.tabState,
101+
logger: this.logger,
102+
message: this.message,
103+
};
104+
105+
const { tabId, frameId, url: fullUrl } = getSender(sender);
106+
const url = removeQueryParams(fullUrl!);
95107
const sessions = this.tabState.getSessions(tabId);
96108

97109
const replacedSessions = new Set<string>();
98110

99111
// Initialize new sessions
100-
for (const p of payload) {
101-
const { requestId, walletAddress: receiver } = p;
102-
112+
for (const { requestId, walletAddress: receiver } of payload) {
103113
// Q: How does this impact client side apps/routing?
104114
const existingSession = sessions.get(requestId);
105115
if (existingSession) {
@@ -114,14 +124,8 @@ export class MonetizationService {
114124
requestId,
115125
tabId,
116126
frameId,
117-
this.storage,
118-
this.openPaymentsService,
119-
this.outgoingPaymentGrantService,
120-
this.events,
121-
this.tabState,
122-
removeQueryParams(url!),
123-
this.logger,
124-
this.message,
127+
url,
128+
deps,
125129
);
126130

127131
sessions.set(requestId, session);
@@ -177,17 +181,15 @@ export class MonetizationService {
177181
return;
178182
}
179183

180-
for (const p of payload) {
181-
const { requestId } = p;
182-
184+
for (const { requestId, intent } of payload) {
183185
const session = sessions.get(requestId);
184186
if (!session) continue;
185187

186-
if (p.intent === 'remove') {
188+
if (intent === 'remove') {
187189
needsAdjustAmount = true;
188190
session.stop();
189191
sessions.delete(requestId);
190-
} else if (p.intent === 'disable') {
192+
} else if (intent === 'disable') {
191193
needsAdjustAmount = true;
192194
session.disable();
193195
} else {

src/background/services/paymentSession.ts

+25-20
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,11 @@ import {
1717
} from '@/background/services/openPayments';
1818
import { bigIntMax, convert, getNextSendableAmount } from '@/background/utils';
1919
import type {
20-
EventsService,
21-
OpenPaymentsService,
22-
OutgoingPaymentGrantService,
23-
StorageService,
24-
TabState,
25-
} from '.';
26-
import type {
27-
BackgroundToContentMessage,
28-
MessageManager,
2920
MonetizationEventDetails,
3021
MonetizationEventPayload,
3122
} from '@/shared/messages';
3223
import type { AmountValue } from '@/shared/types';
33-
import type { Logger } from '@/shared/logger';
24+
import type { Cradle as Cradle_ } from '@/background/container';
3425
import {
3526
OUTGOING_PAYMENT_POLLING_INITIAL_DELAY,
3627
OUTGOING_PAYMENT_POLLING_INTERVAL,
@@ -47,17 +38,35 @@ interface CreateOutgoingPaymentParams {
4738
incomingPaymentId: IncomingPayment['id'];
4839
amount: string;
4940
}
41+
type Cradle = Pick<
42+
Cradle_,
43+
| 'storage'
44+
| 'openPaymentsService'
45+
| 'outgoingPaymentGrantService'
46+
| 'events'
47+
| 'tabState'
48+
| 'logger'
49+
| 'message'
50+
>;
5051

5152
export class PaymentSession {
52-
private rate: string;
53+
private storage: Cradle['storage'];
54+
private openPaymentsService: Cradle['openPaymentsService'];
55+
private outgoingPaymentGrantService: Cradle['outgoingPaymentGrantService'];
56+
private events: Cradle['events'];
57+
private tabState: Cradle['tabState'];
58+
private logger: Cradle['logger'];
59+
private message: Cradle['message'];
60+
5361
private active = false;
5462
/** Invalid receiver (providers not peered or other reasons) */
5563
private isInvalid = false;
5664
private countInvalidReceiver = 0;
5765
private isDisabled = false;
5866
private incomingPaymentUrl: string;
5967
private incomingPaymentExpiresAt: number;
60-
private amount: string;
68+
private rate: AmountValue;
69+
private amount: AmountValue;
6170
private intervalInMs: number;
6271
private shouldRetryImmediately = false;
6372

@@ -69,15 +78,11 @@ export class PaymentSession {
6978
private requestId: string,
7079
private tabId: number,
7180
private frameId: number,
72-
private storage: StorageService,
73-
private openPaymentsService: OpenPaymentsService,
74-
private outgoingPaymentGrantService: OutgoingPaymentGrantService,
75-
private events: EventsService,
76-
private tabState: TabState,
7781
private url: string,
78-
private logger: Logger,
79-
private message: MessageManager<BackgroundToContentMessage>,
80-
) {}
82+
private deps: Cradle,
83+
) {
84+
Object.assign(this, this.deps);
85+
}
8186

8287
#adjustAmountLastRate: AmountValue;
8388
#adjustAmountController = new AbortController();

0 commit comments

Comments
 (0)