diff --git a/src/ui/PodcastView/EpisodeList.svelte b/src/ui/PodcastView/EpisodeList.svelte index 90ba6efa3aa20de950415e286dbd2bacf49d27f6..feca1bee14d9634f8d24945e400f6fbf960b475d 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 d2f3e56e7f39e20742c4ee144cc98df339c5b3d8..1767040db5e98ac191bc182f4568cd00aeef65a5 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