Skip to content

Commit e7db2b9

Browse files
committed
make sure we only register once
1 parent e762290 commit e7db2b9

File tree

2 files changed

+18
-13
lines changed

2 files changed

+18
-13
lines changed

src/integrationTests/secureSignal.test.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ describe('Secure Signal Tests', () => {
124124
__uid2SSProviderScriptLoad();
125125
__uid2InternalHandleScriptLoad();
126126
(window.__uid2 as UID2).init({});
127-
expect(secureSignalProvidersPushMock).toHaveBeenCalled();
127+
expect(secureSignalProvidersPushMock).toHaveBeenCalledTimes(1);
128128
await expect(secureSignalProvidersPushMock).toHaveBeenCalledWith(
129129
expect.objectContaining({
130130
id: 'uidapi.com',
@@ -141,7 +141,7 @@ describe('Secure Signal Tests', () => {
141141
__uid2InternalHandleScriptLoad();
142142
(window.__uid2 as UID2).init({});
143143
(window.__uid2 as UID2).setIdentity(identity);
144-
expect(secureSignalProvidersPushMock).toHaveBeenCalled();
144+
expect(secureSignalProvidersPushMock).toHaveBeenCalledTimes(1);
145145
await expect(secureSignalProvidersPushMock).toHaveBeenCalledWith(
146146
expect.objectContaining({
147147
id: 'uidapi.com',
@@ -157,8 +157,7 @@ describe('Secure Signal Tests', () => {
157157
__uid2InternalHandleScriptLoad();
158158
(window.__uid2 as UID2).init({ identity });
159159
__uid2SSProviderScriptLoad();
160-
// will fire on both InitCompleted and SdkLoaded
161-
expect(secureSignalProvidersPushMock).toHaveBeenCalledTimes(2);
160+
expect(secureSignalProvidersPushMock).toHaveBeenCalledTimes(1);
162161
await expect(secureSignalProvidersPushMock).toHaveBeenCalledWith(
163162
expect.objectContaining({
164163
id: 'uidapi.com',

src/secureSignal_shared.ts

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@ const MAXIMUM_RETRY = 3;
44
export class UidSecureSignalProvider implements UidSecureSignalProviderType {
55
debug: boolean;
66
isEuid: boolean;
7+
hasRegisteredSecureSignals: boolean;
78

89
constructor(debug = false, isEuid = false) {
910
this.debug = debug;
1011
this.isEuid = isEuid;
12+
this.hasRegisteredSecureSignals = false;
1113

1214
if (
1315
(!this.isEuid && typeof window.getUid2AdvertisingToken === 'function') ||
@@ -31,15 +33,19 @@ export class UidSecureSignalProvider implements UidSecureSignalProviderType {
3133
};
3234

3335
window.googletag.secureSignalProviders = window.googletag.secureSignalProviders || [];
34-
window.googletag.secureSignalProviders.push({
35-
id: this.isEuid ? 'euid.eu' : 'uidapi.com',
36-
collectorFunction: async () => {
37-
this.logging('collectorFunction invoked');
38-
const uidAdvertisingToken = await this.getUidAdvertisingTokenWithRetry(uidHandler);
39-
this.logging(`collectorFunction pushes: ${uidAdvertisingToken}`);
40-
return uidAdvertisingToken;
41-
},
42-
});
36+
37+
if (!this.hasRegisteredSecureSignals) {
38+
window.googletag.secureSignalProviders.push({
39+
id: this.isEuid ? 'euid.eu' : 'uidapi.com',
40+
collectorFunction: async () => {
41+
this.logging('collectorFunction invoked');
42+
const uidAdvertisingToken = await this.getUidAdvertisingTokenWithRetry(uidHandler);
43+
this.logging(`collectorFunction pushes: ${uidAdvertisingToken}`);
44+
return uidAdvertisingToken;
45+
},
46+
});
47+
}
48+
this.hasRegisteredSecureSignals = true;
4349
};
4450

4551
public logging = (message: string) => {

0 commit comments

Comments
 (0)