From 9eb9f9728b340887b0638f3b55e4a259c5f22f4b Mon Sep 17 00:00:00 2001
From: Brandon Sneed <brandon@redf.net>
Date: Fri, 13 Sep 2024 10:36:29 -0700
Subject: [PATCH 1/5] Fixed atomic set

---
 Package.resolved                     | 17 +++++++++++++----
 Package.swift                        |  2 +-
 Sources/SegmentConsent/Manager.swift |  2 +-
 3 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/Package.resolved b/Package.resolved
index 8a5ecc8..a727a04 100644
--- a/Package.resolved
+++ b/Package.resolved
@@ -5,8 +5,17 @@
       "kind" : "remoteSourceControl",
       "location" : "https://github.com/segmentio/analytics-swift.git",
       "state" : {
-        "revision" : "efc111b5fccaebd1063ef0db6d206c252da387ec",
-        "version" : "1.4.8"
+        "revision" : "338be8f55c83309f10d2cfd0193505117b4ab2d5",
+        "version" : "1.6.0"
+      }
+    },
+    {
+      "identity" : "jsonsafeencoding-swift",
+      "kind" : "remoteSourceControl",
+      "location" : "https://github.com/segmentio/jsonsafeencoding-swift.git",
+      "state" : {
+        "revision" : "af6a8b360984085e36c6341b21ecb35c12f47ebd",
+        "version" : "2.0.0"
       }
     },
     {
@@ -14,8 +23,8 @@
       "kind" : "remoteSourceControl",
       "location" : "https://github.com/segmentio/Sovran-Swift.git",
       "state" : {
-        "revision" : "64f3b5150c282a34af4578188dce2fd597e600e3",
-        "version" : "1.1.0"
+        "revision" : "24867f3e4ac62027db9827112135e6531b6f4051",
+        "version" : "1.1.2"
       }
     }
   ],
diff --git a/Package.swift b/Package.swift
index 4439af5..26494b7 100644
--- a/Package.swift
+++ b/Package.swift
@@ -19,7 +19,7 @@ let package = Package(
     dependencies: [
         // Dependencies declare other packages that this package depends on.
         // .package(url: /* package url */, from: "1.0.0"),
-        .package(url: "https://github.com/segmentio/analytics-swift.git", from: "1.4.8")
+        .package(url: "https://github.com/segmentio/analytics-swift.git", from: "1.6.0")
     ],
     targets: [
         // Targets are the basic building blocks of a package. A target can define a module or a test suite.
diff --git a/Sources/SegmentConsent/Manager.swift b/Sources/SegmentConsent/Manager.swift
index fa8e346..f3cbf12 100644
--- a/Sources/SegmentConsent/Manager.swift
+++ b/Sources/SegmentConsent/Manager.swift
@@ -81,7 +81,7 @@ extension ConsentManager {
     }
     
     public func start() {
-        started = true
+        _started.set(true)
         // replay events.  they'll be sent back through the system and get stamped above.
         for event in queuedEvents {
             analytics?.process(event: event)

From 1919d9afaa54ffb7d9e66862cda9af1c11a8bec8 Mon Sep 17 00:00:00 2001
From: Brandon Sneed <brandon@redf.net>
Date: Fri, 13 Sep 2024 10:40:07 -0700
Subject: [PATCH 2/5] Updated tvos version req.

---
 Package.swift | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Package.swift b/Package.swift
index 26494b7..f27d9e3 100644
--- a/Package.swift
+++ b/Package.swift
@@ -8,7 +8,7 @@ let package = Package(
     platforms: [
         .macOS("10.15"),
         .iOS("13.0"),
-        .tvOS("11.0")
+        .tvOS("12.0")
     ],
     products: [
         // Products define the executables and libraries a package produces, and make them visible to other packages.

From 2340cea591855b87a642da8c94138363307a4793 Mon Sep 17 00:00:00 2001
From: Brandon Sneed <brandon@redf.net>
Date: Fri, 13 Sep 2024 10:42:07 -0700
Subject: [PATCH 3/5] Bumped tvOS to 13.

---
 Package.swift | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Package.swift b/Package.swift
index f27d9e3..a2e6294 100644
--- a/Package.swift
+++ b/Package.swift
@@ -8,7 +8,7 @@ let package = Package(
     platforms: [
         .macOS("10.15"),
         .iOS("13.0"),
-        .tvOS("12.0")
+        .tvOS("13.0")
     ],
     products: [
         // Products define the executables and libraries a package produces, and make them visible to other packages.

From b7da6cf863ecbfee6945a2f86854199eba111488 Mon Sep 17 00:00:00 2001
From: Brandon Sneed <brandon@redf.net>
Date: Fri, 13 Sep 2024 10:52:46 -0700
Subject: [PATCH 4/5] updated tests to use unique writekeys

---
 .../ConsentBlockerTests.swift                 |  8 +++---
 .../ConsentNotEnabledAtSegment.swift          | 12 ++++----
 .../DestinationsMultipleCategories.swift      | 16 +++++------
 .../NoUnmappedDestinationsTests.swift         |  4 +--
 .../UnmappedDestinationsTests.swift           | 28 +++++++++----------
 5 files changed, 34 insertions(+), 34 deletions(-)

diff --git a/Sources/SegmentConsent-Tests/ConsentBlockerTests.swift b/Sources/SegmentConsent-Tests/ConsentBlockerTests.swift
index e2ee5b0..c84d785 100644
--- a/Sources/SegmentConsent-Tests/ConsentBlockerTests.swift
+++ b/Sources/SegmentConsent-Tests/ConsentBlockerTests.swift
@@ -17,7 +17,7 @@ final class ConsentBlockerTests: XCTestCase {
     }
     
     func testBlockWhenPartialConsentAvailable() {
-        let analytics = Analytics(configuration: Configuration(writeKey: "test").trackApplicationLifecycleEvents(false))
+        let analytics = Analytics(configuration: Configuration(writeKey: "cbt.testBlockWhenPartialConsentAvailable").trackApplicationLifecycleEvents(false))
         
         // Artificially give segment.io destination some consent settings
         let segmentSettings = [
@@ -51,7 +51,7 @@ final class ConsentBlockerTests: XCTestCase {
     }
     
     func testBlockBecauseNoConsentSettings() {
-        let analytics = Analytics(configuration: Configuration(writeKey: "test").trackApplicationLifecycleEvents(false))
+        let analytics = Analytics(configuration: Configuration(writeKey: "cbt.testBlockBecauseNoConsentSettings").trackApplicationLifecycleEvents(false))
         let output = OutputReaderPlugin()
         let consentManager = ConsentManager(provider: NoConsentProvider())
         
@@ -72,7 +72,7 @@ final class ConsentBlockerTests: XCTestCase {
     }
     
     func testBlockBecauseNoStamp() {
-        let analytics = Analytics(configuration: Configuration(writeKey: "test").trackApplicationLifecycleEvents(false))
+        let analytics = Analytics(configuration: Configuration(writeKey: "cbt.testBlockBecauseNoStamp").trackApplicationLifecycleEvents(false))
         let output = OutputReaderPlugin()
         let consentManager = ConsentManager(provider: AllConsentProvider())
         
@@ -106,7 +106,7 @@ final class ConsentBlockerTests: XCTestCase {
     }
     
     func testBlockBecauseNoConsent() {
-        let analytics = Analytics(configuration: Configuration(writeKey: "test").trackApplicationLifecycleEvents(false))
+        let analytics = Analytics(configuration: Configuration(writeKey: "cbt.testBlockBecauseNoConsent").trackApplicationLifecycleEvents(false))
         let output = OutputReaderPlugin()
         let consentManager = ConsentManager(provider: NoConsentProvider())
         
diff --git a/Sources/SegmentConsent-Tests/ConsentNotEnabledAtSegment.swift b/Sources/SegmentConsent-Tests/ConsentNotEnabledAtSegment.swift
index 690bcb8..325ff7a 100644
--- a/Sources/SegmentConsent-Tests/ConsentNotEnabledAtSegment.swift
+++ b/Sources/SegmentConsent-Tests/ConsentNotEnabledAtSegment.swift
@@ -20,10 +20,10 @@ final class ConsentNotEnabledAtSegment: XCTestCase {
     }
 
     func testNoToAll() {
-        removeUserDefaults(forWriteKey: "test")
+        removeUserDefaults(forWriteKey: "testNoToAll")
         
         let settings = Settings.load(resource: "ConsentNotEnabledAtSegment.json", bundle: Bundle.module)
-        let analytics = Analytics(configuration: Configuration(writeKey: "test")
+        let analytics = Analytics(configuration: Configuration(writeKey: "testNoToAll")
             .trackApplicationLifecycleEvents(false)
             .defaultSettings(settings)
         )
@@ -82,10 +82,10 @@ final class ConsentNotEnabledAtSegment: XCTestCase {
     }
 
     func testYesToSome() {
-        removeUserDefaults(forWriteKey: "test")
+        removeUserDefaults(forWriteKey: "testYesToSome")
         
         let settings = Settings.load(resource: "ConsentNotEnabledAtSegment.json", bundle: Bundle.module)
-        let analytics = Analytics(configuration: Configuration(writeKey: "test")
+        let analytics = Analytics(configuration: Configuration(writeKey: "testYesToSome")
             .trackApplicationLifecycleEvents(false)
             .defaultSettings(settings)
         )
@@ -144,10 +144,10 @@ final class ConsentNotEnabledAtSegment: XCTestCase {
     }
 
     func testYesToAll() {
-        removeUserDefaults(forWriteKey: "test")
+        removeUserDefaults(forWriteKey: "testYesToAll")
         
         let settings = Settings.load(resource: "ConsentNotEnabledAtSegment.json", bundle: Bundle.module)
-        let analytics = Analytics(configuration: Configuration(writeKey: "test")
+        let analytics = Analytics(configuration: Configuration(writeKey: "testYesToAll")
             .trackApplicationLifecycleEvents(false)
             .defaultSettings(settings)
         )
diff --git a/Sources/SegmentConsent-Tests/DestinationsMultipleCategories.swift b/Sources/SegmentConsent-Tests/DestinationsMultipleCategories.swift
index 606e8df..c2db180 100644
--- a/Sources/SegmentConsent-Tests/DestinationsMultipleCategories.swift
+++ b/Sources/SegmentConsent-Tests/DestinationsMultipleCategories.swift
@@ -20,10 +20,10 @@ final class DestinationsMultipleCategoriesTests: XCTestCase {
     }
     
     func testNoToAll() {
-        removeUserDefaults(forWriteKey: "test")
+        removeUserDefaults(forWriteKey: "dmc.testNoToAll")
         
         let settings = Settings.load(resource: "DestinationsMultipleCategories.json", bundle: Bundle.module)
-        let analytics = Analytics(configuration: Configuration(writeKey: "test")
+        let analytics = Analytics(configuration: Configuration(writeKey: "dmc.testNoToAll")
             .trackApplicationLifecycleEvents(false)
             .defaultSettings(settings)
         )
@@ -67,10 +67,10 @@ final class DestinationsMultipleCategoriesTests: XCTestCase {
     }
     
     func testYesTo1() {
-        removeUserDefaults(forWriteKey: "test")
+        removeUserDefaults(forWriteKey: "dmc.testYesTo1")
         
         let settings = Settings.load(resource: "DestinationsMultipleCategories.json", bundle: Bundle.module)
-        let analytics = Analytics(configuration: Configuration(writeKey: "test")
+        let analytics = Analytics(configuration: Configuration(writeKey: "dmc.testYesTo1")
             .trackApplicationLifecycleEvents(false)
             .defaultSettings(settings)
         )
@@ -114,10 +114,10 @@ final class DestinationsMultipleCategoriesTests: XCTestCase {
     }
 
     func testYesTo2() {
-        removeUserDefaults(forWriteKey: "test")
+        removeUserDefaults(forWriteKey: "dmc.testYesTo2")
         
         let settings = Settings.load(resource: "DestinationsMultipleCategories.json", bundle: Bundle.module)
-        let analytics = Analytics(configuration: Configuration(writeKey: "test")
+        let analytics = Analytics(configuration: Configuration(writeKey: "dmc.testYesTo2")
             .trackApplicationLifecycleEvents(false)
             .defaultSettings(settings)
         )
@@ -161,10 +161,10 @@ final class DestinationsMultipleCategoriesTests: XCTestCase {
     }
     
     func testYesToAll() {
-        removeUserDefaults(forWriteKey: "test")
+        removeUserDefaults(forWriteKey: "dmc.testYesToAll")
         
         let settings = Settings.load(resource: "DestinationsMultipleCategories.json", bundle: Bundle.module)
-        let analytics = Analytics(configuration: Configuration(writeKey: "test")
+        let analytics = Analytics(configuration: Configuration(writeKey: "dmc.testYesToAll")
             .trackApplicationLifecycleEvents(false)
             .defaultSettings(settings)
         )
diff --git a/Sources/SegmentConsent-Tests/NoUnmappedDestinationsTests.swift b/Sources/SegmentConsent-Tests/NoUnmappedDestinationsTests.swift
index 4dc7cce..cd9244e 100644
--- a/Sources/SegmentConsent-Tests/NoUnmappedDestinationsTests.swift
+++ b/Sources/SegmentConsent-Tests/NoUnmappedDestinationsTests.swift
@@ -20,10 +20,10 @@ final class NoUnmappedDestinationsTests: XCTestCase {
     }
     
     func testNoToAll() {
-        removeUserDefaults(forWriteKey: "test")
+        removeUserDefaults(forWriteKey: "nud.testNoToAll")
         
         let settings = Settings.load(resource: "NoUnmappedDestinations.json", bundle: Bundle.module)
-        let analytics = Analytics(configuration: Configuration(writeKey: "test")
+        let analytics = Analytics(configuration: Configuration(writeKey: "nud.testNoToAll")
             .trackApplicationLifecycleEvents(false)
             .defaultSettings(settings)
         )
diff --git a/Sources/SegmentConsent-Tests/UnmappedDestinationsTests.swift b/Sources/SegmentConsent-Tests/UnmappedDestinationsTests.swift
index 0df8aa7..0c68175 100644
--- a/Sources/SegmentConsent-Tests/UnmappedDestinationsTests.swift
+++ b/Sources/SegmentConsent-Tests/UnmappedDestinationsTests.swift
@@ -20,10 +20,10 @@ final class UnmappedDestinationsTests: XCTestCase {
     }
     
     func testNoToAll() {
-        removeUserDefaults(forWriteKey: "test")
+        removeUserDefaults(forWriteKey: "ud.testNoToAll")
         
         let settings = Settings.load(resource: "UnmappedDestinations.json", bundle: Bundle.module)
-        let analytics = Analytics(configuration: Configuration(writeKey: "test")
+        let analytics = Analytics(configuration: Configuration(writeKey: "ud.testNoToAll")
             .trackApplicationLifecycleEvents(false)
             .defaultSettings(settings)
         )
@@ -82,10 +82,10 @@ final class UnmappedDestinationsTests: XCTestCase {
     }
     
     func testYesTo1() {
-        removeUserDefaults(forWriteKey: "test")
+        removeUserDefaults(forWriteKey: "ud.testYesTo1")
         
         let settings = Settings.load(resource: "UnmappedDestinations.json", bundle: Bundle.module)
-        let analytics = Analytics(configuration: Configuration(writeKey: "test")
+        let analytics = Analytics(configuration: Configuration(writeKey: "ud.testYesTo1")
             .trackApplicationLifecycleEvents(false)
             .defaultSettings(settings)
         )
@@ -144,10 +144,10 @@ final class UnmappedDestinationsTests: XCTestCase {
     }
 
     func testYesTo2() {
-        removeUserDefaults(forWriteKey: "test")
+        removeUserDefaults(forWriteKey: "ud.testYesTo2")
         
         let settings = Settings.load(resource: "UnmappedDestinations.json", bundle: Bundle.module)
-        let analytics = Analytics(configuration: Configuration(writeKey: "test")
+        let analytics = Analytics(configuration: Configuration(writeKey: "ud.testYesTo2")
             .trackApplicationLifecycleEvents(false)
             .defaultSettings(settings)
         )
@@ -206,10 +206,10 @@ final class UnmappedDestinationsTests: XCTestCase {
     }
 
     func testYesTo3() {
-        removeUserDefaults(forWriteKey: "test")
+        removeUserDefaults(forWriteKey: "ud.testYesTo3")
         
         let settings = Settings.load(resource: "UnmappedDestinations.json", bundle: Bundle.module)
-        let analytics = Analytics(configuration: Configuration(writeKey: "test")
+        let analytics = Analytics(configuration: Configuration(writeKey: "ud.testYesTo3")
             .trackApplicationLifecycleEvents(false)
             .defaultSettings(settings)
         )
@@ -268,10 +268,10 @@ final class UnmappedDestinationsTests: XCTestCase {
     }
 
     func testYesTo4() {
-        removeUserDefaults(forWriteKey: "test")
+        removeUserDefaults(forWriteKey: "ud.testYesTo4")
         
         let settings = Settings.load(resource: "UnmappedDestinations.json", bundle: Bundle.module)
-        let analytics = Analytics(configuration: Configuration(writeKey: "test")
+        let analytics = Analytics(configuration: Configuration(writeKey: "ud.testYesTo4")
             .trackApplicationLifecycleEvents(false)
             .defaultSettings(settings)
         )
@@ -330,10 +330,10 @@ final class UnmappedDestinationsTests: XCTestCase {
     }
 
     func testYesTo1and2() {
-        removeUserDefaults(forWriteKey: "test")
+        removeUserDefaults(forWriteKey: "ud.testYesTo1and2")
         
         let settings = Settings.load(resource: "UnmappedDestinations.json", bundle: Bundle.module)
-        let analytics = Analytics(configuration: Configuration(writeKey: "test")
+        let analytics = Analytics(configuration: Configuration(writeKey: "ud.testYesTo1and2")
             .trackApplicationLifecycleEvents(false)
             .defaultSettings(settings)
         )
@@ -392,10 +392,10 @@ final class UnmappedDestinationsTests: XCTestCase {
     }
 
     func testYesToAll() {
-        removeUserDefaults(forWriteKey: "test")
+        removeUserDefaults(forWriteKey: "ud.testYesToAll")
         
         let settings = Settings.load(resource: "UnmappedDestinations.json", bundle: Bundle.module)
-        let analytics = Analytics(configuration: Configuration(writeKey: "test")
+        let analytics = Analytics(configuration: Configuration(writeKey: "ud.testYesToAll")
             .trackApplicationLifecycleEvents(false)
             .defaultSettings(settings)
         )

From 552d9558329d34266d67bcbc038be9a75d78fb6c Mon Sep 17 00:00:00 2001
From: Brandon Sneed <brandon@redf.net>
Date: Fri, 13 Sep 2024 10:58:09 -0700
Subject: [PATCH 5/5] updated device for ios test

---
 .github/workflows/swift.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/swift.yml b/.github/workflows/swift.yml
index 540ab27..b7e76a5 100644
--- a/.github/workflows/swift.yml
+++ b/.github/workflows/swift.yml
@@ -36,7 +36,7 @@ jobs:
       with:
         xcode-version: latest-stable
     - uses: actions/checkout@v2
-    - run: xcodebuild -scheme SegmentConsent test -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 13'
+    - run: xcodebuild -scheme SegmentConsent test -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 15'
 
   build_and_test_tvos:
     needs: cancel_previous