experiment(PodcastPlayerView): add Retry button to failedView, clear pollingTask on failure
This commit is contained in:
@@ -97,6 +97,7 @@ final class PodcastPlayerViewModel {
|
||||
let errMsg = job.error ?? "Generation failed"
|
||||
Analytics.track("podcast.failed", ["url": articleUrl, "error": errMsg])
|
||||
phase = .failed(errMsg)
|
||||
pollingTask = nil
|
||||
return
|
||||
}
|
||||
try await Task.sleep(for: .seconds(3))
|
||||
@@ -105,6 +106,7 @@ final class PodcastPlayerViewModel {
|
||||
} catch {
|
||||
Analytics.track("podcast.failed", ["url": articleUrl, "error": error.localizedDescription])
|
||||
phase = .failed(error.localizedDescription)
|
||||
pollingTask = nil
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -434,6 +436,18 @@ struct PodcastPlayerView: View {
|
||||
.font(.system(size: 14))
|
||||
.foregroundStyle(.secondary)
|
||||
.multilineTextAlignment(.center)
|
||||
Button {
|
||||
vm.start(articleUrl: articleUrl, articleTitle: articleTitle, claude: claude)
|
||||
} label: {
|
||||
Label("Retry", systemImage: "arrow.clockwise")
|
||||
.font(.system(size: 15, weight: .semibold))
|
||||
.foregroundStyle(.white)
|
||||
.padding(.horizontal, 24)
|
||||
.padding(.vertical, 10)
|
||||
.background(Color.blue)
|
||||
.clipShape(Capsule())
|
||||
}
|
||||
.padding(.top, 4)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user