Skip to content

Commit

Permalink
Add opt-in CoroutineDispatcher api for controlling Picasso's internal…
Browse files Browse the repository at this point in the history
… thread
  • Loading branch information
gamepro65 committed Jul 3, 2023
1 parent cbbaef5 commit 5126e7d
Show file tree
Hide file tree
Showing 15 changed files with 1,487 additions and 527 deletions.
3 changes: 3 additions & 0 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
[versions]
agp = '8.0.2'
coroutines = '1.7.1'
composeCompiler = '1.4.7'
composeUi = '1.4.3'
javaTarget = '1.8'
Expand All @@ -22,6 +23,8 @@ androidx-lifecycle = { module = 'androidx.lifecycle:lifecycle-common', version =
androidx-startup = { module = 'androidx.startup:startup-runtime', version = '1.1.1' }
androidx-testRunner = { module = 'androidx.test:runner', version = '1.5.2' }

coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version = '1.7.1' }

composeUi = { module = 'androidx.compose.ui:ui', version.ref = 'composeUi' }
composeRuntime = { module = 'androidx.compose.runtime:runtime', version.ref = 'composeUi' }
composeUi-foundation = { module = 'androidx.compose.foundation:foundation', version.ref = 'composeUi' }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@ import com.squareup.picasso3.Picasso
import com.squareup.picasso3.Picasso.LoadedFrom.MEMORY
import com.squareup.picasso3.Request
import com.squareup.picasso3.RequestHandler
import com.squareup.picasso3.layoutlib.LayoutlibExecutorService
import org.junit.Rule
import org.junit.Test
import kotlinx.coroutines.Dispatchers

class PicassoPaparazziTest {
@get:Rule val paparazzi = Paparazzi()
Expand All @@ -34,7 +34,10 @@ class PicassoPaparazziTest {
fun loadsUrlIntoImageView() {
val picasso = Picasso.Builder(paparazzi.context)
.callFactory { throw AssertionError() } // Removes network
.executor(LayoutlibExecutorService())
.dispatchers(
mainDispatcher = Dispatchers.Unconfined,
backgroundDispatcher = Dispatchers.Unconfined
)
.addRequestHandler(FakeRequestHandler())
.build()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ import com.squareup.picasso3.Picasso.LoadedFrom.MEMORY
import com.squareup.picasso3.Request
import com.squareup.picasso3.RequestHandler
import com.squareup.picasso3.compose.rememberPainter
import com.squareup.picasso3.layoutlib.LayoutlibExecutorService
import kotlinx.coroutines.Dispatchers

class SampleComposeActivity : PicassoSampleActivity() {

Expand Down Expand Up @@ -241,7 +241,10 @@ private fun ContentPreview() {
picasso = remember {
Picasso.Builder(context)
.callFactory { throw AssertionError() } // Removes network
.executor(LayoutlibExecutorService()) // Synchronously execute RequestHandler
.dispatchers(
mainDispatcher = Dispatchers.Unconfined,
backgroundDispatcher = Dispatchers.Unconfined
)
.addRequestHandler(
object : RequestHandler() {
override fun canHandleRequest(data: Request) = data.uri?.toString()?.run(images::containsKey) == true
Expand Down
2 changes: 2 additions & 0 deletions picasso/api/picasso.api
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,8 @@ public final class com/squareup/picasso3/Picasso$Builder {
public final fun callFactory (Lokhttp3/Call$Factory;)Lcom/squareup/picasso3/Picasso$Builder;
public final fun client (Lokhttp3/OkHttpClient;)Lcom/squareup/picasso3/Picasso$Builder;
public final fun defaultBitmapConfig (Landroid/graphics/Bitmap$Config;)Lcom/squareup/picasso3/Picasso$Builder;
public final fun dispatchers (Lkotlinx/coroutines/CoroutineDispatcher;Lkotlinx/coroutines/CoroutineDispatcher;)Lcom/squareup/picasso3/Picasso$Builder;
public static synthetic fun dispatchers$default (Lcom/squareup/picasso3/Picasso$Builder;Lkotlinx/coroutines/CoroutineDispatcher;Lkotlinx/coroutines/CoroutineDispatcher;ILjava/lang/Object;)Lcom/squareup/picasso3/Picasso$Builder;
public final fun executor (Ljava/util/concurrent/ExecutorService;)Lcom/squareup/picasso3/Picasso$Builder;
public final fun indicatorsEnabled (Z)Lcom/squareup/picasso3/Picasso$Builder;
public final fun listener (Lcom/squareup/picasso3/Picasso$Listener;)Lcom/squareup/picasso3/Picasso$Builder;
Expand Down
1 change: 1 addition & 0 deletions picasso/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ dependencies {
implementation libs.androidx.core
implementation libs.androidx.exifInterface

testImplementation libs.coroutines.test
testImplementation libs.junit
testImplementation libs.truth
testImplementation libs.robolectric
Expand Down
Loading

0 comments on commit 5126e7d

Please sign in to comment.