From 27b29c9d8a4e245b6530add2825cf7352487e211 Mon Sep 17 00:00:00 2001
From: Christian Bager Bach Houmann <christian@bagerbach.com>
Date: Fri, 8 Jul 2022 15:16:01 +0200
Subject: [PATCH] fix: actually implement refresh of episode list

---
 src/ui/PodcastView/EpisodeList.svelte |  1 +
 src/ui/PodcastView/PodcastView.svelte | 20 +++++++++++++++-----
 2 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/src/ui/PodcastView/EpisodeList.svelte b/src/ui/PodcastView/EpisodeList.svelte
index 90ba6ef..feca1be 100644
--- a/src/ui/PodcastView/EpisodeList.svelte
+++ b/src/ui/PodcastView/EpisodeList.svelte
@@ -32,6 +32,7 @@
 		<Icon
 			 icon="refresh-cw"
 			 size={25}
+			 on:click={() => dispatch("clickRefresh")}
 		/>
 	</div>
 
diff --git a/src/ui/PodcastView/PodcastView.svelte b/src/ui/PodcastView/PodcastView.svelte
index d2f3e56..1767040 100644
--- a/src/ui/PodcastView/PodcastView.svelte
+++ b/src/ui/PodcastView/PodcastView.svelte
@@ -24,7 +24,7 @@
 		return await (new FeedParser(feed).parse(feed.url));
 	}
 
-	function handleClickPodcast(event: CustomEvent<{ feed: PodcastFeed }>) {
+	async function handleClickPodcast(event: CustomEvent<{ feed: PodcastFeed }>) {
 		episodeList = [];
 
 		const { feed } = event.detail;
@@ -35,10 +35,10 @@
 		if (cachedEpisodesInFeed && cachedEpisodesInFeed.length > 0) {
 			episodeList = cachedEpisodesInFeed;
 		} else {
-			fetchEpisodes(feed).then(episodes => {
-				episodeList = episodes;
-				episodeCache.update(cache => ({ ...cache, [feed.title]: episodes }));
-			});
+			const episodes = await fetchEpisodes(feed);
+			
+			episodeList = episodes;
+			episodeCache.update(cache => ({ ...cache, [feed.title]: episodes }));
 		}
 
 		viewState = ViewState.EpisodeList;
@@ -51,6 +51,15 @@
 		viewState = ViewState.Player;
 	}
 
+	async function handleClickRefresh() {
+		if (!selectedFeed) return;
+		const { title } = selectedFeed;
+		const episodes = await fetchEpisodes(selectedFeed)
+
+		episodeList = episodes;
+		episodeCache.update(cache => ({ ...cache, [title]: episodes }));
+	}
+
 	onDestroy(unsubscribe);
 </script>
 
@@ -68,6 +77,7 @@
 			feed={selectedFeed}
 			episodes={episodeList}
 			on:clickEpisode={handleClickEpisode}
+			on:clickRefresh={handleClickRefresh}
 		/>
 	{:else if viewState === ViewState.PodcastGrid}
 		<FeedGrid 
-- 
GitLab