glide
glide copied to clipboard
Glide Compose: java.lang.IllegalArgumentException caused by sideEffect run asynchronously
trafficstars
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:
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)
)