bumptech / bumptech/glide

Glide Compose: java.lang.IllegalArgumentException caused by sideEffect run asynchronously

Open
#5,392 0 comments 2 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
35k
Forks
6.2k
Avg merge
1d 11h
Merged PRs (30d)
8

Description

The GlideNode call to reproduce the bug:
->1st onNewReuest
-> invalidateDraw
-> onAttach
-> launchRequest(schedule 1st sideEffect)

-> 2nd onNewRequest(requestBuilder not changed but loadingPlaceholder or errorPlaceholder changed -> restartLoad=true)
-> launchRequest(schedule 2nd sideEffect)

-> 1st sideEffect run and (currentJob=newValue)
-> 2nd sideEffect run (requestBuilder not changed) but Preconditions.checkArgument(currentJob == null) throw java.lang.IllegalArgumentException

e.g:
```kotlin
val placeholderPair = remember(loadingPainter, failurePainter) {
placeholder(loadingPainter) to placeholder(failurePainter)
}
val switch = Random.nextBoolean()

GlideImage(
model = url,
contentDescription = url,
contentScale = ContentScale.FillWidth,
loading = if (!switch) placeholderPair.first else placeholderPair.second,
failure = if (!switch) placeholderPair.second else placeholderPair.first,
modifier = modifier
.fillMaxWidth()
.aspectRatio(1f)
)
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.