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