Skip to content

Commit cbefb33

Browse files
committed
feat: Report deprecated method usage through logging dispatcher (#1270)
1 parent f40b67a commit cbefb33

7 files changed

Lines changed: 216 additions & 69 deletions

File tree

src/consent.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import KitFilterHelper from './kitFilterHelper';
99
import Constants from './constants';
1010
import { IMParticleUser } from './identity-user-interfaces';
1111
import { IMParticleWebSDKInstance } from './mp-instance';
12+
import { logDeprecatedMethodUsage } from './reporting/deprecatedMethodLogger';
1213

1314
const { CCPAPurpose } = Constants;
1415

@@ -505,8 +506,13 @@ export default function Consent(this: IConsent, mpInstance: IMParticleWebSDKInst
505506

506507
// TODO: Can we remove this? It is deprecated.
507508
function removeCCPAState(this: ConsentState) {
508-
mpInstance.Logger.warning(
509-
'removeCCPAState is deprecated and will be removed in a future release; use removeCCPAConsentState instead'
509+
logDeprecatedMethodUsage(
510+
{
511+
methodName: 'Consent.removeCCPAState',
512+
warningMessage: 'removeCCPAState is deprecated and will be removed in a future release; use removeCCPAConsentState instead',
513+
},
514+
mpInstance.Logger,
515+
mpInstance._LoggingDispatcher
510516
);
511517
// @ts-ignore
512518
return removeCCPAConsentState();

src/identity.js

Lines changed: 77 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import {
2020
} from './utils';
2121
import { hasMPIDAndUserLoginChanged, hasMPIDChanged } from './user-utils';
2222
import { processReadyQueue } from './pre-init-utils';
23+
import { logDeprecatedMethodUsage } from './reporting/deprecatedMethodLogger';
2324

2425
export default function Identity(mpInstance) {
2526
const { getFeatureFlag, extend } = mpInstance._Helpers;
@@ -1252,8 +1253,14 @@ export default function Identity(mpInstance) {
12521253
* @return a cart object
12531254
*/
12541255
getCart: function() {
1255-
mpInstance.Logger.warning(
1256-
'Deprecated function Identity.getCurrentUser().getCart() will be removed in future releases'
1256+
logDeprecatedMethodUsage(
1257+
{
1258+
methodName: 'Identity.getCurrentUser().getCart()',
1259+
warningMessage:
1260+
'Deprecated function Identity.getCurrentUser().getCart() will be removed in future releases',
1261+
},
1262+
mpInstance.Logger,
1263+
mpInstance._LoggingDispatcher
12571264
);
12581265
return self.mParticleUserCart();
12591266
},
@@ -1334,13 +1341,18 @@ export default function Identity(mpInstance) {
13341341
* @deprecated
13351342
*/
13361343
add: function() {
1337-
mpInstance.Logger.warning(
1338-
generateDeprecationMessage(
1339-
'Identity.getCurrentUser().getCart().add()',
1340-
true,
1341-
'eCommerce.logProductAction()',
1342-
'https://docs.mparticle.com/developers/sdk/web/commerce-tracking'
1343-
)
1344+
logDeprecatedMethodUsage(
1345+
{
1346+
methodName: 'Identity.getCurrentUser().getCart().add()',
1347+
warningMessage: generateDeprecationMessage(
1348+
'Identity.getCurrentUser().getCart().add()',
1349+
true,
1350+
'eCommerce.logProductAction()',
1351+
'https://docs.mparticle.com/developers/sdk/web/commerce-tracking'
1352+
),
1353+
},
1354+
mpInstance.Logger,
1355+
mpInstance._LoggingDispatcher
13441356
);
13451357
},
13461358
/**
@@ -1349,13 +1361,19 @@ export default function Identity(mpInstance) {
13491361
* @deprecated
13501362
*/
13511363
remove: function() {
1352-
mpInstance.Logger.warning(
1353-
generateDeprecationMessage(
1354-
'Identity.getCurrentUser().getCart().remove()',
1355-
true,
1356-
'eCommerce.logProductAction()',
1357-
'https://docs.mparticle.com/developers/sdk/web/commerce-tracking'
1358-
)
1364+
logDeprecatedMethodUsage(
1365+
{
1366+
methodName:
1367+
'Identity.getCurrentUser().getCart().remove()',
1368+
warningMessage: generateDeprecationMessage(
1369+
'Identity.getCurrentUser().getCart().remove()',
1370+
true,
1371+
'eCommerce.logProductAction()',
1372+
'https://docs.mparticle.com/developers/sdk/web/commerce-tracking'
1373+
),
1374+
},
1375+
mpInstance.Logger,
1376+
mpInstance._LoggingDispatcher
13591377
);
13601378
},
13611379
/**
@@ -1364,13 +1382,19 @@ export default function Identity(mpInstance) {
13641382
* @deprecated
13651383
*/
13661384
clear: function() {
1367-
mpInstance.Logger.warning(
1368-
generateDeprecationMessage(
1369-
'Identity.getCurrentUser().getCart().clear()',
1370-
true,
1371-
'',
1372-
'https://docs.mparticle.com/developers/sdk/web/commerce-tracking'
1373-
)
1385+
logDeprecatedMethodUsage(
1386+
{
1387+
methodName:
1388+
'Identity.getCurrentUser().getCart().clear()',
1389+
warningMessage: generateDeprecationMessage(
1390+
'Identity.getCurrentUser().getCart().clear()',
1391+
true,
1392+
'',
1393+
'https://docs.mparticle.com/developers/sdk/web/commerce-tracking'
1394+
),
1395+
},
1396+
mpInstance.Logger,
1397+
mpInstance._LoggingDispatcher
13741398
);
13751399
},
13761400
/**
@@ -1380,13 +1404,19 @@ export default function Identity(mpInstance) {
13801404
* @deprecated
13811405
*/
13821406
getCartProducts: function() {
1383-
mpInstance.Logger.warning(
1384-
generateDeprecationMessage(
1385-
'Identity.getCurrentUser().getCart().getCartProducts()',
1386-
true,
1387-
'eCommerce.logProductAction()',
1388-
'https://docs.mparticle.com/developers/sdk/web/commerce-tracking'
1389-
)
1407+
logDeprecatedMethodUsage(
1408+
{
1409+
methodName:
1410+
'Identity.getCurrentUser().getCart().getCartProducts()',
1411+
warningMessage: generateDeprecationMessage(
1412+
'Identity.getCurrentUser().getCart().getCartProducts()',
1413+
true,
1414+
'eCommerce.logProductAction()',
1415+
'https://docs.mparticle.com/developers/sdk/web/commerce-tracking'
1416+
),
1417+
},
1418+
mpInstance.Logger,
1419+
mpInstance._LoggingDispatcher
13901420
);
13911421
return [];
13921422
},
@@ -1540,7 +1570,8 @@ export default function Identity(mpInstance) {
15401570
prevUser,
15411571
newUser,
15421572
identityApiData,
1543-
mpInstance.Logger
1573+
mpInstance.Logger,
1574+
mpInstance._LoggingDispatcher
15441575
);
15451576

15461577
const persistence = mpInstance._Persistence.getPersistence();
@@ -1775,14 +1806,27 @@ export default function Identity(mpInstance) {
17751806
}
17761807

17771808
// https://go.mparticle.com/work/SQDSDKS-6359
1778-
function tryOnUserAlias(previousUser, newUser, identityApiData, logger) {
1809+
function tryOnUserAlias(
1810+
previousUser,
1811+
newUser,
1812+
identityApiData,
1813+
logger,
1814+
loggingDispatcher
1815+
) {
17791816
if (
17801817
identityApiData &&
17811818
identityApiData.onUserAlias &&
17821819
isFunction(identityApiData.onUserAlias)
17831820
) {
17841821
try {
1785-
logger.warning(generateDeprecationMessage('onUserAlias'));
1822+
logDeprecatedMethodUsage(
1823+
{
1824+
methodName: 'onUserAlias',
1825+
warningMessage: generateDeprecationMessage('onUserAlias'),
1826+
},
1827+
logger,
1828+
loggingDispatcher
1829+
);
17861830
identityApiData.onUserAlias(previousUser, newUser);
17871831
} catch (e) {
17881832
logger.error(

src/mp-instance.ts

Lines changed: 58 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ import CookieConsentManager, { ICookieConsentManager } from './cookieConsentMana
5555
import { ErrorReportingDispatcher } from './reporting/errorReportingDispatcher';
5656
import { LoggingDispatcher } from './reporting/loggingDispatcher';
5757
import { IErrorReportingService, ILoggingService } from './reporting/types';
58+
import { logDeprecatedMethodUsage } from './reporting/deprecatedMethodLogger';
5859

5960
export interface IErrorLogMessage {
6061
message?: string;
@@ -772,13 +773,18 @@ export default function mParticleInstance(this: IMParticleWebSDKInstance, instan
772773
* @deprecated
773774
*/
774775
add: function(product, logEventBoolean) {
775-
self.Logger.warning(
776-
generateDeprecationMessage(
777-
'eCommerce.Cart.add()',
778-
true,
779-
'eCommerce.logProductAction()',
780-
'https://docs.mparticle.com/developers/sdk/web/commerce-tracking'
781-
)
776+
logDeprecatedMethodUsage(
777+
{
778+
methodName: 'mPInstance.eCommerce.Cart.add()',
779+
warningMessage: generateDeprecationMessage(
780+
'eCommerce.Cart.add()',
781+
true,
782+
'eCommerce.logProductAction()',
783+
'https://docs.mparticle.com/developers/sdk/web/commerce-tracking'
784+
),
785+
},
786+
self.Logger,
787+
self._LoggingDispatcher
782788
);
783789
},
784790
/**
@@ -789,13 +795,18 @@ export default function mParticleInstance(this: IMParticleWebSDKInstance, instan
789795
* @deprecated
790796
*/
791797
remove: function(product, logEventBoolean) {
792-
self.Logger.warning(
793-
generateDeprecationMessage(
794-
'eCommerce.Cart.remove()',
795-
true,
796-
'eCommerce.logProductAction()',
797-
'https://docs.mparticle.com/developers/sdk/web/commerce-tracking'
798-
)
798+
logDeprecatedMethodUsage(
799+
{
800+
methodName: 'mPInstance.eCommerce.Cart.remove()',
801+
warningMessage: generateDeprecationMessage(
802+
'eCommerce.Cart.remove()',
803+
true,
804+
'eCommerce.logProductAction()',
805+
'https://docs.mparticle.com/developers/sdk/web/commerce-tracking'
806+
),
807+
},
808+
self.Logger,
809+
self._LoggingDispatcher
799810
);
800811
},
801812
/**
@@ -804,13 +815,18 @@ export default function mParticleInstance(this: IMParticleWebSDKInstance, instan
804815
* @deprecated
805816
*/
806817
clear: function() {
807-
self.Logger.warning(
808-
generateDeprecationMessage(
809-
'eCommerce.Cart.clear()',
810-
true,
811-
'',
812-
'https://docs.mparticle.com/developers/sdk/web/commerce-tracking'
813-
)
818+
logDeprecatedMethodUsage(
819+
{
820+
methodName: 'mPInstance.eCommerce.Cart.clear()',
821+
warningMessage: generateDeprecationMessage(
822+
'eCommerce.Cart.clear()',
823+
true,
824+
'',
825+
'https://docs.mparticle.com/developers/sdk/web/commerce-tracking'
826+
),
827+
},
828+
self.Logger,
829+
self._LoggingDispatcher
814830
);
815831
},
816832
},
@@ -940,8 +956,13 @@ export default function mParticleInstance(this: IMParticleWebSDKInstance, instan
940956
* @deprecated
941957
*/
942958
logCheckout: function(step, option, attrs, customFlags) {
943-
self.Logger.warning(
944-
'mParticle.logCheckout is deprecated, please use mParticle.logProductAction instead'
959+
logDeprecatedMethodUsage(
960+
{
961+
methodName: 'mParticle.logCheckout',
962+
warningMessage: 'mParticle.logCheckout is deprecated, please use mParticle.logProductAction instead',
963+
},
964+
self.Logger,
965+
self._LoggingDispatcher
945966
);
946967

947968
if (!self._Store.isInitialized) {
@@ -1020,8 +1041,13 @@ export default function mParticleInstance(this: IMParticleWebSDKInstance, instan
10201041
attrs,
10211042
customFlags
10221043
) {
1023-
self.Logger.warning(
1024-
'mParticle.logPurchase is deprecated, please use mParticle.logProductAction instead'
1044+
logDeprecatedMethodUsage(
1045+
{
1046+
methodName: 'mParticle.logPurchase',
1047+
warningMessage: 'mParticle.logPurchase is deprecated, please use mParticle.logProductAction instead',
1048+
},
1049+
self.Logger,
1050+
self._LoggingDispatcher
10251051
);
10261052
if (!self._Store.isInitialized) {
10271053
self.ready(function() {
@@ -1132,8 +1158,13 @@ export default function mParticleInstance(this: IMParticleWebSDKInstance, instan
11321158
attrs,
11331159
customFlags
11341160
) {
1135-
self.Logger.warning(
1136-
'mParticle.logRefund is deprecated, please use mParticle.logProductAction instead'
1161+
logDeprecatedMethodUsage(
1162+
{
1163+
methodName: 'mParticle.logRefund',
1164+
warningMessage: 'mParticle.logRefund is deprecated, please use mParticle.logProductAction instead',
1165+
},
1166+
self.Logger,
1167+
self._LoggingDispatcher
11371168
);
11381169
if (!self._Store.isInitialized) {
11391170
self.ready(function() {
@@ -1741,4 +1772,3 @@ function queueIfNotInitialized(func, self) {
17411772
});
17421773
return true;
17431774
}
1744-
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { ErrorCodes, ILoggingService } from './types';
2+
import { SDKLoggerApi } from '../sdkRuntimeModels';
3+
4+
interface DeprecatedMethodUsage {
5+
methodName: string;
6+
warningMessage: string;
7+
}
8+
9+
export function logDeprecatedMethodUsage(
10+
usage: DeprecatedMethodUsage,
11+
logger: Pick<SDKLoggerApi, 'warning'>,
12+
loggingDispatcher: ILoggingService | undefined
13+
): void {
14+
logger.warning(usage.warningMessage);
15+
loggingDispatcher?.log({
16+
message: usage.methodName,
17+
code: ErrorCodes.MP_DEPRECATED_METHOD_USAGE,
18+
});
19+
}

src/reporting/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ export const ErrorCodes = {
66
IDENTITY_REQUEST: 'IDENTITY_REQUEST',
77
IDENTITY_MISMATCH: 'IDENTITY_MISMATCH',
88
ROKT_KIT_ATTACHED: 'ROKT_KIT_ATTACHED',
9+
MP_DEPRECATED_METHOD_USAGE: 'MP_DEPRECATED_METHOD_USAGE',
910
} as const;
1011

1112
export type ErrorCodes = valueof<typeof ErrorCodes>;

src/sessionManager.ts

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { generateDeprecationMessage } from './utils';
66
import { IMParticleUser } from './identity-user-interfaces';
77
import { IMParticleWebSDKInstance } from './mp-instance';
88
import { hasIdentityRequestChanged, hasExplicitIdentifier } from './identity-utils';
9+
import { logDeprecatedMethodUsage } from './reporting/deprecatedMethodLogger';
910

1011
const { Messages } = Constants;
1112

@@ -67,12 +68,17 @@ export default function SessionManager(
6768
};
6869

6970
this.getSession = function (): string {
70-
mpInstance.Logger.warning(
71-
generateDeprecationMessage(
72-
'SessionManager.getSession()',
73-
false,
74-
'SessionManager.getSessionId()'
75-
)
71+
logDeprecatedMethodUsage(
72+
{
73+
methodName: 'SessionManager.getSession()',
74+
warningMessage: generateDeprecationMessage(
75+
'SessionManager.getSession()',
76+
false,
77+
'SessionManager.getSessionId()'
78+
),
79+
},
80+
mpInstance.Logger,
81+
mpInstance._LoggingDispatcher
7682
);
7783
return this.getSessionId();
7884
};

0 commit comments

Comments
 (0)