diff --git a/Marks/Views/PodcastPlayerView.swift b/Marks/Views/PodcastPlayerView.swift index 0a96c7c..52a02ec 100644 --- a/Marks/Views/PodcastPlayerView.swift +++ b/Marks/Views/PodcastPlayerView.swift @@ -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) } }