Skip to content

Commit

Permalink
Moved withContext() call up to surround all IO being performed. (#1463)
Browse files Browse the repository at this point in the history
Fixes part of #1461 

JetCaster showed a blank screen when run. The podcast fetching was
running on the main dispatcher. Moved the withContext() up to ensure all
IO was being performed on the IO dispatcher.
  • Loading branch information
javadude authored Sep 12, 2024
2 parents 49f1048 + c3e00cc commit 74a5ef4
Showing 1 changed file with 11 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -86,20 +86,20 @@ class PodcastsFetcher @Inject constructor(
}

private suspend fun fetchPodcast(url: String): PodcastRssResponse {
val request = Request.Builder()
.url(url)
.cacheControl(cacheControl)
.build()
return withContext(ioDispatcher) {
val request = Request.Builder()
.url(url)
.cacheControl(cacheControl)
.build()

val response = okHttpClient.newCall(request).execute()
val response = okHttpClient.newCall(request).execute()

// If the network request wasn't successful, throw an exception
if (!response.isSuccessful) throw HttpException(response)
// If the network request wasn't successful, throw an exception
if (!response.isSuccessful) throw HttpException(response)

// Otherwise we can parse the response using a Rome SyndFeedInput, then map it
// to a Podcast instance. We run this on the IO dispatcher since the parser is reading
// from a stream.
return withContext(ioDispatcher) {
// Otherwise we can parse the response using a Rome SyndFeedInput, then map it
// to a Podcast instance. We run this on the IO dispatcher since the parser is reading
// from a stream.
response.body!!.use { body ->
syndFeedInput.build(body.charStream()).toPodcastResponse(url)
}
Expand Down

0 comments on commit 74a5ef4

Please sign in to comment.