Skip to content

Commit

Permalink
Merge pull request #590 from SourcePointUSA/DIA-3283_expire_consent_p…
Browse files Browse the repository at this point in the history
…ropertyId

DIA-3283 expire consent if propertyId or accountId change
  • Loading branch information
andresilveirah authored Jan 13, 2025
2 parents 1997d2c + 2a93902 commit 9147291
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,8 @@ class SourcepointClientCoordinator: SPClientCoordinator {
var partitionUUID: String?
}

var accountId, propertyId: Int?

var gdpr: SPGDPRConsent?
var ccpa: SPCCPAConsent?
var usnat: SPUSNatConsent?
Expand Down Expand Up @@ -336,12 +338,33 @@ class SourcepointClientCoordinator: SPClientCoordinator {
)
self.deviceManager = deviceManager

self.state = Self.setupState(from: storage, campaigns: campaigns)
self.state = Self.setupState(
from: storage,
accountId: accountId,
propertyId: propertyId,
campaigns: campaigns
)
self.storage.spState = self.state
}

static func setupState(from localStorage: SPLocalStorage, campaigns localCampaigns: SPCampaigns) -> State {
static func setupState(
from localStorage: SPLocalStorage,
accountId: Int,
propertyId: Int,
campaigns localCampaigns: SPCampaigns
) -> State {
var spState = localStorage.spState ?? .init()
if spState.accountId == nil || spState.propertyId == nil {
spState.accountId = accountId
spState.propertyId = propertyId
}

if spState.accountId != accountId || spState.propertyId != propertyId {
spState = .init()
spState.accountId = accountId
spState.propertyId = propertyId
}

if localCampaigns.gdpr != nil, spState.gdpr == nil {
spState.gdpr = localStorage.userData.gdpr?.consents ?? .empty()
spState.gdpr?.applies = localStorage.userData.gdpr?.applies ?? false
Expand Down Expand Up @@ -485,7 +508,12 @@ class SourcepointClientCoordinator: SPClientCoordinator {
}

func loadMessages(forAuthId authId: String?, pubData: SPPublisherData?, _ handler: @escaping MessagesAndConsentsHandler) {
state = Self.setupState(from: storage, campaigns: campaigns)
state = Self.setupState(
from: storage,
accountId: accountId,
propertyId: propertyId,
campaigns: campaigns
)
storage.spState = state

self.authId = authId
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -934,6 +934,26 @@ class SPClientCoordinatorSpec: QuickSpec {
}
}
}

it("when propertyId changes") {
let sameStorage = LocalStorageMock()
coordinator = coordinatorFor(propertyId: 999, campaigns: gdprCcpaCampaigns, storage: sameStorage)
coordinator.state.gdpr?.uuid = "foo"
expect(coordinator.state.gdpr?.uuid).to(equal("foo"))

coordinator = coordinatorFor(propertyId: 123, campaigns: gdprCcpaCampaigns, storage: sameStorage)
expect(coordinator.state.gdpr?.uuid).to(beNil())
}

it("when accountId changes") {
let sameStorage = LocalStorageMock()
coordinator = coordinatorFor(accountId: 999, campaigns: gdprCcpaCampaigns, storage: sameStorage)
coordinator.state.gdpr?.uuid = "foo"
expect(coordinator.state.gdpr?.uuid).to(equal("foo"))

coordinator = coordinatorFor(accountId: 123, campaigns: gdprCcpaCampaigns, storage: sameStorage)
expect(coordinator.state.gdpr?.uuid).to(beNil())
}
}
}
}

0 comments on commit 9147291

Please sign in to comment.