diff --git a/frontend-v2/src/lib/components/media/PodcastPlayer.svelte b/frontend-v2/src/lib/components/media/PodcastPlayer.svelte index 6e9da80..aafa1cf 100644 --- a/frontend-v2/src/lib/components/media/PodcastPlayer.svelte +++ b/frontend-v2/src/lib/components/media/PodcastPlayer.svelte @@ -398,168 +398,360 @@ let showRateMenu = $state(false); -
- - +
- - - -
- {#if selectedShow} -
-
- {#if selectedShow.artwork_url} - + +
+ + +
+ + {#each shows as show (show.id)} + + {/each} + + +
+ + +
+ {#if showAddForm} +
{ e.preventDefault(); addShow(); }}> + + +
+ {#if error} +

{error}

+ {/if} + {/if} +
+ + + {#if selectedShow} +
+
+ {#if selectedShow.artwork_url} + + {/if} +
+

{selectedShow.title}

+

{selectedShow.author}

+

{selectedShow.episode_count} episodes · {selectedShow.unplayed_count} unplayed

-
+ {:else} + +
+
Library
+
+

All Episodes

+ {episodes.length} episodes +
+
{/if} + {#if loading} -
+
{#each Array(6) as _, i} -
-
-
-
-
+
+
+
+
+
{/each}
{:else if episodes.length === 0} -
- -

{shows.length === 0 ? 'No podcasts yet. Add a show to get started.' : 'No episodes found.'}

+
+ +

{shows.length === 0 ? 'No podcasts yet. Add a show to get started.' : 'No episodes found.'}

{:else} -
+
{#each episodes as ep (ep.id)} {@const art = artworkFor(ep)} {@const pct = progressPct(ep)} -
- - -
playEpisode(ep)} role="button" tabindex="0" onkeydown={(e) => { if (e.key === 'Enter') playEpisode(ep); }}> -
- {ep.title} - {#if !selectedShowId} - {ep.show_title} + {/if} + +
+ {#if isActive && isPlaying} + + {:else} + {/if}
-
+
+ + +
+
+ {ep.title} +
+
+ {#if !selectedShowId} + {ep.show_title} + · + {/if} {formatDate(ep.published_at)} - · + · {formatDuration(ep.duration)} {#if ep.status === 'in-progress' && pct > 0} - · - {Math.round(pct)}% + · + {Math.round(pct)}% {/if}
{#if ep.status === 'in-progress' && pct > 0} -
-
+
+
{/if}
-
- -
@@ -569,68 +761,116 @@
- + {#if currentEpisode} {@const playerArt = artworkFor(currentEpisode)} -
-
+
+
-
+
{#if playerArt} - + {:else} -
- +
+
{/if} -
- {currentEpisode.title} - {currentEpisode.show_title} +
+ {currentEpisode.title} + {currentEpisode.show_title}
-
- - -
-
- {formatTime(currentTime)} -
-
-
+
+ {formatTime(currentTime)} +
+
+
- {formatTime(duration)} + {formatTime(duration)}
-
-
- {#if showRateMenu} -
+
{#each rates as rate} - {/each} @@ -638,10 +878,19 @@ {/if}
-
@@ -649,53 +898,109 @@
{/if} - + {#if showQueue} -
showQueue = false} role="presentation">
-