-
Notifications
You must be signed in to change notification settings - Fork 58
feat: disable product cookie when no targeting is true #1071
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 9 commits
b7230d6
b14099e
bbe4f08
507b3e5
9f062ca
d09d4c9
273e170
0847f1e
bfcdb2b
6c0c0c8
95d8fd8
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -88,7 +88,10 @@ export default function _Persistence(mpInstance) { | |||||||||||||||
|
|
||||||||||||||||
| // https://go.mparticle.com/work/SQDSDKS-6048 | ||||||||||||||||
| try { | ||||||||||||||||
| if (mpInstance._Store.isLocalStorageAvailable) { | ||||||||||||||||
| if ( | ||||||||||||||||
| mpInstance._Store.isLocalStorageAvailable && | ||||||||||||||||
| !mpInstance._Store.getPrivacyFlag('Products') | ||||||||||||||||
| ) { | ||||||||||||||||
| var encodedProducts = localStorage.getItem( | ||||||||||||||||
| mpInstance._Store.prodStorageName | ||||||||||||||||
| ); | ||||||||||||||||
|
|
@@ -269,7 +272,10 @@ export default function _Persistence(mpInstance) { | |||||||||||||||
| }; | ||||||||||||||||
|
|
||||||||||||||||
| this.getUserProductsFromLS = function(mpid) { | ||||||||||||||||
| if (!mpInstance._Store.isLocalStorageAvailable) { | ||||||||||||||||
| if ( | ||||||||||||||||
| mpInstance._Store.getPrivacyFlag('Products') || | ||||||||||||||||
| !mpInstance._Store.isLocalStorageAvailable | ||||||||||||||||
| ) { | ||||||||||||||||
| return []; | ||||||||||||||||
| } | ||||||||||||||||
|
|
||||||||||||||||
|
|
@@ -308,6 +314,15 @@ export default function _Persistence(mpInstance) { | |||||||||||||||
| }; | ||||||||||||||||
|
|
||||||||||||||||
| this.getAllUserProductsFromLS = function() { | ||||||||||||||||
| if (mpInstance._Store.getPrivacyFlag('Products')) { | ||||||||||||||||
| var currentUser = mpInstance.Identity.getCurrentUser(); | ||||||||||||||||
| var mpid = currentUser ? currentUser.getMPID() : null; | ||||||||||||||||
| var result = {}; | ||||||||||||||||
| if (mpid) { | ||||||||||||||||
| result[mpid] = { cp: [] }; | ||||||||||||||||
| } | ||||||||||||||||
| return result; | ||||||||||||||||
| } | ||||||||||||||||
| var decodedProducts, | ||||||||||||||||
| encodedProducts = localStorage.getItem( | ||||||||||||||||
| mpInstance._Store.prodStorageName | ||||||||||||||||
|
|
@@ -342,14 +357,20 @@ export default function _Persistence(mpInstance) { | |||||||||||||||
| ? allLocalStorageProducts[mpid].cp | ||||||||||||||||
| : [], | ||||||||||||||||
| }; | ||||||||||||||||
|
|
||||||||||||||||
| if (mpInstance._Store.getPrivacyFlag('Products')) { | ||||||||||||||||
| return; | ||||||||||||||||
| } | ||||||||||||||||
| if (mpid) { | ||||||||||||||||
| allLocalStorageProducts = allLocalStorageProducts || {}; | ||||||||||||||||
| allLocalStorageProducts[mpid] = currentUserProducts; | ||||||||||||||||
| try { | ||||||||||||||||
| window.localStorage.setItem( | ||||||||||||||||
| encodeURIComponent(mpInstance._Store.prodStorageName), | ||||||||||||||||
| Base64.encode(JSON.stringify(allLocalStorageProducts)) | ||||||||||||||||
| ); | ||||||||||||||||
| if (!mpInstance._Store.getPrivacyFlag('Products')) { | ||||||||||||||||
| window.localStorage.setItem( | ||||||||||||||||
| encodeURIComponent(mpInstance._Store.prodStorageName), | ||||||||||||||||
| Base64.encode(JSON.stringify(allLocalStorageProducts)) | ||||||||||||||||
| ); | ||||||||||||||||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I would also clean up the original code a bit so that i's more readable:
Suggested change
|
||||||||||||||||
| } | ||||||||||||||||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is the if check for 368 necessary here? Since you have 361-363 already returning based on the
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I agree, its not needed here since we're already returning at line 362 |
||||||||||||||||
| } catch (e) { | ||||||||||||||||
| mpInstance.Logger.error( | ||||||||||||||||
| 'Error with setting products on localStorage.' | ||||||||||||||||
|
|
@@ -894,6 +915,9 @@ export default function _Persistence(mpInstance) { | |||||||||||||||
| }; | ||||||||||||||||
|
|
||||||||||||||||
| this.getCartProducts = function(mpid) { | ||||||||||||||||
| if (mpInstance._Store.getPrivacyFlag('Products')) { | ||||||||||||||||
| return []; | ||||||||||||||||
| } | ||||||||||||||||
| var allCartProducts, | ||||||||||||||||
| cartProductsString = localStorage.getItem( | ||||||||||||||||
| mpInstance._Store.prodStorageName | ||||||||||||||||
|
|
@@ -913,7 +937,10 @@ export default function _Persistence(mpInstance) { | |||||||||||||||
| }; | ||||||||||||||||
|
|
||||||||||||||||
| this.setCartProducts = function(allProducts) { | ||||||||||||||||
| if (!mpInstance._Store.isLocalStorageAvailable) { | ||||||||||||||||
| if ( | ||||||||||||||||
| !mpInstance._Store.isLocalStorageAvailable || | ||||||||||||||||
| mpInstance._Store.getPrivacyFlag('Products') | ||||||||||||||||
| ) { | ||||||||||||||||
| return; | ||||||||||||||||
| } | ||||||||||||||||
|
|
||||||||||||||||
|
|
||||||||||||||||
| Original file line number | Diff line number | Diff line change | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,34 @@ | ||||||||||||||
| import { | ||||||||||||||
| mParticle, | ||||||||||||||
| MPConfig, | ||||||||||||||
| testMPID, | ||||||||||||||
| } from '../src/config/constants'; | ||||||||||||||
| import { Product } from '@mparticle/web-sdk'; | ||||||||||||||
|
|
||||||||||||||
| describe('Products Persistence', () => { | ||||||||||||||
| let mpInstance = mParticle.getInstance(); | ||||||||||||||
| beforeEach(() => { | ||||||||||||||
| mParticle._resetForTests(MPConfig); | ||||||||||||||
| mpInstance._Persistence.resetPersistence(); | ||||||||||||||
| }); | ||||||||||||||
|
|
||||||||||||||
| it('should save products to localStorage when noTargeting is false by default', () => { | ||||||||||||||
| const product = { Name: 'iphone', Sku: 'iphonesku', Price: 599, Quantity: 1 }; | ||||||||||||||
| mpInstance._Persistence.setCartProducts({ [testMPID]: { cp: [product] } } as unknown as Product[]); | ||||||||||||||
| expect(mpInstance._Persistence.getCartProducts(testMPID).length).toBe(1); | ||||||||||||||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think instead of trying to coerce the Type, let's see if we can use a
Suggested change
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @alexs-mparticle I’ve incorporated |
||||||||||||||
| }); | ||||||||||||||
|
|
||||||||||||||
| it('should NOT save products to localStorage when noTargeting is true', () => { | ||||||||||||||
| mpInstance._Store.setNoTargeting(true); | ||||||||||||||
| const product = { Name: 'iphone', Sku: 'iphonesku', Price: 599, Quantity: 1 }; | ||||||||||||||
| mpInstance._Persistence.setCartProducts({ [testMPID]: { cp: [product] } } as unknown as Product[]); | ||||||||||||||
| expect(mpInstance._Persistence.getCartProducts(testMPID).length).toBe(0); | ||||||||||||||
| }); | ||||||||||||||
|
|
||||||||||||||
| it('should save products to localStorage when noTargeting is false', () => { | ||||||||||||||
| mpInstance._Store.setNoTargeting(false); | ||||||||||||||
| const product = { Name: 'iphone', Sku: 'iphonesku', Price: 599, Quantity: 1 }; | ||||||||||||||
| mpInstance._Persistence.setCartProducts({ [testMPID]: { cp: [product] } } as unknown as Product[]); | ||||||||||||||
| expect(mpInstance._Persistence.getCartProducts(testMPID).length).toBe(1); | ||||||||||||||
| }); | ||||||||||||||
| }); | ||||||||||||||
Uh oh!
There was an error while loading. Please reload this page.