Create a digest opened event on iOS

This commit is contained in:
Jackson Harper
2024-05-20 21:08:21 +08:00
parent 7ae8d03994
commit 474cb0b9dd
2 changed files with 15 additions and 2 deletions

View File

@ -76,12 +76,17 @@ public class FullScreenDigestViewModel: ObservableObject {
self.isRunning = digest.jobState == "RUNNING" || digest.jobState == "PENDING" self.isRunning = digest.jobState == "RUNNING" || digest.jobState == "PENDING"
self.hasError = digest.jobState == "FAILED" self.hasError = digest.jobState == "FAILED"
if let playingDigest = audioController.itemAudioProperties as? DigestAudioItem, playingDigest.digest.id == digest.id { if let playingDigest = audioController.itemAudioProperties as? DigestAudioItem,
playingDigest.digest.id == digest.id {
// Don't think we need to do anything here // Don't think we need to do anything here
} else { } else {
let chapterData = self.chapterInfo?.map { $0.1 } let chapterData = self.chapterInfo?.map { $0.1 }
audioController.play(itemAudioProperties: DigestAudioItem(digest: digest, chapters: chapterData ?? [])) audioController.play(itemAudioProperties: DigestAudioItem(digest: digest, chapters: chapterData ?? []))
} }
EventTracker.track(
.digestOpened(digestID: digest.id)
)
} else { } else {
hasError = true hasError = true
} }
@ -200,7 +205,7 @@ struct FullScreenDigestView: View {
await viewModel.load(dataService: dataService, audioController: audioController) await viewModel.load(dataService: dataService, audioController: audioController)
} }
} }
var jobRunningText: some View { var jobRunningText: some View {
VStack { VStack {
Spacer() Spacer()

View File

@ -6,6 +6,7 @@ public enum TrackableEvent {
case backgroundFetch(jobStatus: BackgroundFetchJobStatus, itemCount: Int, secondsElapsed: Int) case backgroundFetch(jobStatus: BackgroundFetchJobStatus, itemCount: Int, secondsElapsed: Int)
case audioSessionStart(linkID: String, voice: String, voiceProvider: String) case audioSessionStart(linkID: String, voice: String, voiceProvider: String)
case audioSessionEnd(linkID: String, timeElapsed: Double) case audioSessionEnd(linkID: String, timeElapsed: Double)
case digestOpened(digestID: String)
} }
public enum BackgroundFetchJobStatus: String { public enum BackgroundFetchJobStatus: String {
@ -28,6 +29,8 @@ public extension TrackableEvent {
return "audio_session_start" return "audio_session_start"
case .audioSessionEnd: case .audioSessionEnd:
return "audio_session_end" return "audio_session_end"
case .digestOpened:
return "digest_opened"
} }
} }
@ -59,6 +62,11 @@ public extension TrackableEvent {
"link": linkID, "link": linkID,
"timeElapsed": String(timeElapsed) "timeElapsed": String(timeElapsed)
] ]
case let .digestOpened(digestID: digestID):
return [
"channel": "push",
"digestID": digestID
]
} }
} }
} }