Skip to content

Commit 25fec22

Browse files
authored
Update dependencies (#49)
## What was done - [x] Update TelemetryDeck client dependency to latest release. - [x] Refactor app telemetry. - [x] Update development scripts. - [x] Update package dependencies.
2 parents d93a7f0 + 204c566 commit 25fec22

18 files changed

+192
-96
lines changed

Projects/App/AppFeature/Sources/App.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,8 @@ struct App: SwiftUI.App {
5555
$0.openURL = .init { [dependencies = $0] url in
5656
defer {
5757
dependencies.appTelemetry.send(.init(
58-
type: "OpenURL",
59-
payload: ["url": url.absoluteString]
58+
name: "OpenURL",
59+
parameters: ["url": url.absoluteString]
6060
))
6161
}
6262
return await dependencies.openURL(url)

Projects/App/AppFeature/Sources/AppTelemetryClient.swift

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ struct AppTelemetryClient: Sendable {
1111
var initialize: @Sendable () -> Void
1212
var send: @Sendable (AppTelemetrySignal) -> Void
1313

14-
func send(_ signalType: String) {
15-
send(AppTelemetrySignal(type: signalType))
14+
func send(_ signalName: String) {
15+
send(AppTelemetrySignal(name: signalName))
1616
}
1717
}
1818

@@ -27,23 +27,24 @@ extension AppTelemetryClient: TestDependencyKey {
2727
static let testValue = AppTelemetryClient()
2828
static let previewValue = AppTelemetryClient(
2929
initialize: { log.value.debug("initialize") },
30-
send: { log.value.debug("send \($0.type)\($0.payload.isEmpty ? "" : " \($0.payload)")") }
30+
send: { log.value.debug("send \($0.name)\($0.parameters.isEmpty ? "" : " \($0.parameters)")") }
3131
)
3232
}
3333

3434
extension AppTelemetryClient: DependencyKey {
3535
static let liveValue = AppTelemetryClient(
3636
initialize: {
37-
guard !TelemetryManager.isInitialized, let appID = Self.appID() else { return }
38-
TelemetryManager.initialize(with: .init(appID: appID))
37+
guard !TelemetryManager.isInitialized,
38+
let appID = Self.appID() else { return }
39+
TelemetryDeck.initialize(config: .init(appID: appID))
3940
},
4041
send: { signal in
4142
guard TelemetryManager.isInitialized else { return }
42-
TelemetryManager.send(
43-
signal.type,
44-
for: signal.clientUser,
43+
TelemetryDeck.signal(
44+
signal.name,
45+
parameters: signal.parameters,
4546
floatValue: signal.floatValue,
46-
with: signal.payload
47+
customUserID: signal.customUserID
4748
)
4849
}
4950
)

Projects/App/AppFeature/Sources/AppTelemetryPayload.swift

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,42 +3,42 @@ import Foundation
33
import Mastodon
44
import ProjectsFeature
55

6-
protocol AppTelemetryPayloadProviding {
7-
var appTelemetryPayload: [String: String] { get }
6+
protocol AppTelemetryParametersProviding {
7+
var appTelemetryParameters: [String: String] { get }
88
}
99

10-
extension Contact.Link: AppTelemetryPayloadProviding {
11-
var appTelemetryPayload: [String: String] { id.appTelemetryPayload }
10+
extension Contact.Link: AppTelemetryParametersProviding {
11+
var appTelemetryParameters: [String: String] { id.appTelemetryParameters }
1212
}
1313

14-
extension Contact.Link.ID: AppTelemetryPayloadProviding {
15-
var appTelemetryPayload: [String: String] { ["contact.link.id": rawValue] }
14+
extension Contact.Link.ID: AppTelemetryParametersProviding {
15+
var appTelemetryParameters: [String: String] { ["contact.link.id": rawValue] }
1616
}
1717

18-
extension Project: AppTelemetryPayloadProviding {
19-
var appTelemetryPayload: [String : String] { id.appTelemetryPayload }
18+
extension Project: AppTelemetryParametersProviding {
19+
var appTelemetryParameters: [String : String] { id.appTelemetryParameters }
2020
}
2121

22-
extension Project.ID: AppTelemetryPayloadProviding {
23-
var appTelemetryPayload: [String: String] {
22+
extension Project.ID: AppTelemetryParametersProviding {
23+
var appTelemetryParameters: [String: String] {
2424
["project.id": "\(DateFormatter.yearMonthDay.string(from: date)) \(name)"]
2525
}
2626
}
2727

28-
extension Mastodon.Status: AppTelemetryPayloadProviding {
29-
var appTelemetryPayload: [String: String] { id.appTelemetryPayload }
28+
extension Mastodon.Status: AppTelemetryParametersProviding {
29+
var appTelemetryParameters: [String: String] { id.appTelemetryParameters }
3030
}
3131

32-
extension Mastodon.Status.ID: AppTelemetryPayloadProviding {
33-
var appTelemetryPayload: [String: String] { ["mastodon.status.id": rawValue] }
32+
extension Mastodon.Status.ID: AppTelemetryParametersProviding {
33+
var appTelemetryParameters: [String: String] { ["mastodon.status.id": rawValue] }
3434
}
3535

36-
extension Mastodon.MediaAttachment: AppTelemetryPayloadProviding {
37-
var appTelemetryPayload: [String: String] { id.appTelemetryPayload }
36+
extension Mastodon.MediaAttachment: AppTelemetryParametersProviding {
37+
var appTelemetryParameters: [String: String] { id.appTelemetryParameters }
3838
}
3939

40-
extension Mastodon.MediaAttachment.ID: AppTelemetryPayloadProviding {
41-
var appTelemetryPayload: [String: String] { ["mastodon.media-attachment.id": rawValue] }
40+
extension Mastodon.MediaAttachment.ID: AppTelemetryParametersProviding {
41+
var appTelemetryParameters: [String: String] { ["mastodon.media-attachment.id": rawValue] }
4242
}
4343

4444
private extension DateFormatter {

Projects/App/AppFeature/Sources/AppTelemetryReducer.swift

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ struct AppTelemetryReducer<State, Action>: Reducer, Sendable {
2222
let action = UncheckedSendable(action)
2323
return .run(priority: .low) { send in
2424
appTelemetry.send(.init(
25-
type: describe(action.wrappedValue),
26-
payload: payload(for: action.wrappedValue)
25+
name: describe(action.wrappedValue),
26+
parameters: self.parameters(for: action.wrappedValue)
2727
))
2828
}
2929
}
@@ -72,37 +72,37 @@ struct AppTelemetryReducer<State, Action>: Reducer, Sendable {
7272
return sanitizedName
7373
}
7474

75-
private func payload(for value: Any) -> [String: String] {
76-
var payload: [String: String] = [:]
75+
private func parameters(for value: Any) -> [String: String] {
76+
var parameters: [String: String] = [:]
7777
if let error = value as? any Error {
78-
payload["error.localizedDescription"] = error.localizedDescription
78+
parameters["error.localizedDescription"] = error.localizedDescription
7979
let nsError = error as NSError
80-
payload["error.domain"] = nsError.domain
81-
payload["error.code"] = "\(nsError.code)"
80+
parameters["error.domain"] = nsError.domain
81+
parameters["error.code"] = "\(nsError.code)"
8282
}
83-
if let providedPayload = (value as? any AppTelemetryPayloadProviding)?.appTelemetryPayload {
84-
payload.addPayload(providedPayload)
83+
if let providedParameters = (value as? any AppTelemetryParametersProviding)?.appTelemetryParameters {
84+
parameters.addParameters(providedParameters)
8585
}
8686
let mirror = Mirror(reflecting: value)
8787
switch mirror.displayStyle {
8888
case .enum:
8989
if let child = mirror.children.first {
90-
let childPayload = self.payload(for: child.value)
91-
payload.addPayload(childPayload)
90+
let childParameters = self.parameters(for: child.value)
91+
parameters.addParameters(childParameters)
9292
}
9393
case .optional:
9494
if let child = mirror.children.first {
95-
payload = self.payload(for: child.value)
95+
parameters = self.parameters(for: child.value)
9696
}
9797
case .tuple:
9898
for (_, value) in mirror.children {
99-
let childPayload = self.payload(for: value)
100-
payload.addPayload(childPayload)
99+
let childParameters = self.parameters(for: value)
100+
parameters.addParameters(childParameters)
101101
}
102102
default:
103103
break
104104
}
105-
return payload
105+
return parameters
106106
}
107107

108108
private func toupleChildLabel(_ label: String?) -> String? {
@@ -117,21 +117,21 @@ private extension Collection {
117117
}
118118

119119
private extension [String: String] {
120-
mutating func addPayload(_ payload: [String: String]) {
121-
for (key, value) in payload {
122-
addPayload(key, value)
120+
mutating func addParameters(_ parameters: [String: String]) {
121+
for (key, value) in parameters {
122+
addParameter(key, value)
123123
}
124124
}
125125

126-
mutating func addPayload(_ key: String, _ value: String) {
126+
mutating func addParameter(_ key: String, _ value: String) {
127127
if self[key] == nil {
128128
self[key] = value
129129
} else if let match = key.matches(of: #/^(?<key>.*)_(?<number>[0-9]+)$/#).first {
130130
let duplicateKey = match.output.key
131131
let nextNumber = (Int(match.output.number) ?? 0) + 1
132-
addPayload("\(duplicateKey)_\(nextNumber)", value)
132+
addParameter("\(duplicateKey)_\(nextNumber)", value)
133133
} else {
134-
addPayload("\(key)_1", value)
134+
addParameter("\(key)_1", value)
135135
}
136136
}
137137
}
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
struct AppTelemetrySignal: Equatable, Sendable {
2-
var type: String
3-
var clientUser: String?
2+
var name: String
3+
var parameters: [String: String] = [:]
44
var floatValue: Double?
5-
var payload: [String: String] = [:]
5+
var customUserID: String?
66
}

0 commit comments

Comments
 (0)