summaryrefslogtreecommitdiff
path: root/Biz/PodcastItLater/Episode.py
diff options
context:
space:
mode:
Diffstat (limited to 'Biz/PodcastItLater/Episode.py')
-rw-r--r--Biz/PodcastItLater/Episode.py33
1 files changed, 33 insertions, 0 deletions
diff --git a/Biz/PodcastItLater/Episode.py b/Biz/PodcastItLater/Episode.py
index a06b8d9..a516f65 100644
--- a/Biz/PodcastItLater/Episode.py
+++ b/Biz/PodcastItLater/Episode.py
@@ -196,6 +196,7 @@ class EpisodeDetailPageAttrs(Attrs):
creator_email: str | None
user: dict[str, typing.Any] | None
base_url: str
+ user_has_episode: bool
class EpisodeDetailPage(Component[AnyChildren, EpisodeDetailPageAttrs]):
@@ -208,6 +209,7 @@ class EpisodeDetailPage(Component[AnyChildren, EpisodeDetailPageAttrs]):
creator_email = self.attrs.get("creator_email")
user = self.attrs.get("user")
base_url = self.attrs["base_url"]
+ user_has_episode = self.attrs.get("user_has_episode", False)
share_url = f"{base_url}/episode/{episode_sqid}"
duration_str = UI.format_duration(episode.get("duration"))
@@ -305,6 +307,37 @@ class EpisodeDetailPage(Component[AnyChildren, EpisodeDetailPageAttrs]):
),
# Share button
ShareButton(share_url=share_url),
+ # Add to feed button (logged-in users without episode)
+ html.div(
+ html.div(
+ html.div(
+ html.h5(
+ html.i(classes=["bi", "bi-plus-circle", "me-2"]),
+ "Add to Your Feed",
+ classes=["card-title", "mb-3"],
+ ),
+ html.p(
+ "Save this episode to your personal feed "
+ "to listen later.",
+ classes=["text-muted", "mb-3"],
+ ),
+ html.button(
+ html.i(classes=["bi", "bi-plus-lg", "me-1"]),
+ "Add to My Feed",
+ hx_post=f"/episode/{episode['id']}/add-to-feed",
+ hx_target="#add-to-feed-result",
+ hx_swap="innerHTML",
+ classes=["btn", "btn-primary"],
+ ),
+ html.div(id="add-to-feed-result", classes=["mt-2"]),
+ classes=["card-body"],
+ ),
+ classes=["card"],
+ ),
+ classes=["mb-4"],
+ )
+ if user and not user_has_episode
+ else html.div(),
# Back to home link
html.div(
html.a(