,
+ ): boolean {
+ return Boolean(downloaded[episode.podcastName]?.some(
+ (candidate) => candidate.title === episode.title,
+ ));
+ }
+
+ function isEpisodeQueued(episode: Episode, currentQueue: Playlist): boolean {
+ return hasEpisode(currentQueue.episodes, episode);
+ }
+
+ function isEpisodeFavorite(
+ episode: Episode,
+ currentFavorites: Playlist,
+ ): boolean {
+ return hasEpisode(currentFavorites.episodes, episode);
+ }
+
+ function findPlayedEpisode(episode: Episode): PlayedEpisode | undefined {
+ return getPlayedEpisode($playedEpisodes, episode);
+ }
+
+ function noteExists(episode: Episode): boolean {
+ noteRefreshToken;
+
+ const pluginInstance = $plugin;
+ if (!pluginInstance?.settings?.note?.path) return false;
+ if (!("app" in globalThis)) return false;
+
+ try {
+ return Boolean(getPodcastNote(episode));
+ } catch {
+ return false;
+ }
+ }
@@ -104,10 +184,16 @@
{/each}
@@ -146,11 +232,11 @@
flex-direction: row;
justify-content: flex-end;
align-items: center;
- gap: 0.5rem;
+ gap: 0.375rem;
width: 100%;
- padding: 0.5rem 0.75rem;
+ padding: 0.5rem 0.875rem;
border-bottom: 1px solid var(--background-modifier-border);
- background: var(--background-secondary);
+ background: var(--background-primary);
}
.episode-list-search {
@@ -158,6 +244,14 @@
min-width: 0;
}
+ :global(.episode-list-menu .icon-button) {
+ width: 2rem;
+ height: 2rem;
+ min-height: 2rem;
+ border-radius: 0.375rem;
+ box-shadow: none !important;
+ }
+
.episode-list-loading {
display: flex;
align-items: center;
diff --git a/src/ui/PodcastView/EpisodeListHeader.svelte b/src/ui/PodcastView/EpisodeListHeader.svelte
index 5475e68..cfe3f69 100644
--- a/src/ui/PodcastView/EpisodeListHeader.svelte
+++ b/src/ui/PodcastView/EpisodeListHeader.svelte
@@ -3,7 +3,7 @@
export let artworkUrl: string = "";
-