Skip to content

Commit b8486e4

Browse files
authored
Merge pull request #221 from TelemetryDeck/feature/suppress-warnings
Add new option to allow other SDKs to suppress reserved key warnings
2 parents 04d2de6 + 072aea6 commit b8486e4

File tree

2 files changed

+27
-20
lines changed

2 files changed

+27
-20
lines changed

Sources/TelemetryDeck/TelemetryClient.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,11 @@ public final class TelemetryManagerConfiguration: @unchecked Sendable {
137137
/// However it won't interfere with SwiftUI Previews, when explicitly settings this value to `false`.
138138
public var analyticsDisabled: Bool = false
139139

140+
/// Determines whether to log warnings when user-provided custom parameters use reserved parameter names that are internal to TelemetryDeck SDKs.
141+
///
142+
/// - NOTE: Do not change this property if you're using our SDK in your app. This is for usage from other TelemetryDeck SDKs only.
143+
public var reservedParameterWarningsEnabled: Bool = true
144+
140145
/// Log the current status to the signal cache to the console.
141146
@available(*, deprecated, message: "Please use the logHandler property instead")
142147
public var showDebugLogs: Bool = false

Sources/TelemetryDeck/TelemetryDeck.swift

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -48,38 +48,40 @@ public enum TelemetryDeck {
4848
let combinedSignalName = (configuration.defaultSignalPrefix ?? "") + signalName
4949
let prefixedParameters = parameters.mapKeys { (configuration.defaultParameterPrefix ?? "") + $0 }
5050

51-
// warn users about reserved keys to avoid unexpected behavior
52-
if combinedSignalName.lowercased().hasPrefix("telemetrydeck.") {
53-
configuration.logHandler?.log(
54-
.error,
55-
message: "Sending signal with reserved prefix 'TelemetryDeck.' will cause unexpected behavior. Please use another prefix instead."
56-
)
57-
} else if Self.reservedKeysLowercased.contains(combinedSignalName.lowercased()) {
58-
configuration.logHandler?.log(
59-
.error,
60-
message: "Sending signal with reserved name '\(combinedSignalName)' will cause unexpected behavior. Please use another name instead."
61-
)
62-
}
63-
64-
// only check parameters (not default ones)
65-
for parameterKey in prefixedParameters.keys {
66-
if parameterKey.lowercased().hasPrefix("telemetrydeck.") {
51+
if configuration.reservedParameterWarningsEnabled {
52+
// warn users about reserved keys to avoid unexpected behavior
53+
if combinedSignalName.lowercased().hasPrefix("telemetrydeck.") {
6754
configuration.logHandler?.log(
6855
.error,
69-
message: "Sending parameter with reserved key prefix 'TelemetryDeck.' will cause unexpected behavior. Please use another prefix instead."
56+
message: "Sending signal with reserved prefix 'TelemetryDeck.' will cause unexpected behavior. Please use another prefix instead."
7057
)
71-
} else if Self.reservedKeysLowercased.contains(parameterKey.lowercased()) {
58+
} else if Self.reservedKeysLowercased.contains(combinedSignalName.lowercased()) {
7259
configuration.logHandler?.log(
7360
.error,
74-
message: "Sending parameter with reserved key '\(parameterKey)' will cause unexpected behavior. Please use another key instead."
61+
message: "Sending signal with reserved name '\(combinedSignalName)' will cause unexpected behavior. Please use another name instead."
7562
)
7663
}
64+
65+
// only check parameters (not default ones)
66+
for parameterKey in prefixedParameters.keys {
67+
if parameterKey.lowercased().hasPrefix("telemetrydeck.") {
68+
configuration.logHandler?.log(
69+
.error,
70+
message: "Sending parameter with reserved key prefix 'TelemetryDeck.' will cause unexpected behavior. Please use another prefix instead."
71+
)
72+
} else if Self.reservedKeysLowercased.contains(parameterKey.lowercased()) {
73+
configuration.logHandler?.log(
74+
.error,
75+
message: "Sending parameter with reserved key '\(parameterKey)' will cause unexpected behavior. Please use another key instead."
76+
)
77+
}
78+
}
7779
}
7880

7981
self.internalSignal(combinedSignalName, parameters: prefixedParameters, floatValue: floatValue, customUserID: customUserID)
8082
}
8183

82-
/// A signal being sent without enriching the signal name with a prefix. Also, any reserved signal name check are skipped. Only for internal use.
84+
/// A signal being sent without enriching the signal name with a prefix. Also, any reserved signal name checks are skipped. Only for internal use.
8385
static func internalSignal(
8486
_ signalName: String,
8587
parameters: [String: String] = [:],

0 commit comments

Comments
 (0)