Skip to content

Commit

Permalink
Revert API changes
Browse files Browse the repository at this point in the history
  • Loading branch information
mlykotom committed May 9, 2024
1 parent e0266ac commit b1b9e25
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 14 deletions.
2 changes: 1 addition & 1 deletion coil-compose-base/api/coil-compose-base.api
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ public final class coil/compose/AsyncImagePainter : androidx/compose/ui/graphics
public static final field Companion Lcoil/compose/AsyncImagePainter$Companion;
public final fun getImageLoader ()Lcoil/ImageLoader;
public fun getIntrinsicSize-NH-jbRc ()J
public final fun getRequest (Landroidx/compose/runtime/Composer;I)Lcoil/request/ImageRequest;
public final fun getRequest ()Lcoil/request/ImageRequest;
public final fun getState ()Lcoil/compose/AsyncImagePainter$State;
public fun onAbandoned ()V
public fun onForgotten ()V
Expand Down
21 changes: 8 additions & 13 deletions coil-compose-base/src/main/java/coil/compose/AsyncImagePainter.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package coil.compose

import android.annotation.SuppressLint
import coil.size.Size as CoilSize
import android.graphics.drawable.BitmapDrawable
import android.graphics.drawable.Drawable
import androidx.compose.foundation.Image
Expand All @@ -10,12 +10,12 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.NonRestartableComposable
import androidx.compose.runtime.RememberObserver
import androidx.compose.runtime.Stable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableFloatStateOf
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.runtime.snapshotFlow
import androidx.compose.ui.geometry.Size
import androidx.compose.ui.geometry.isUnspecified
import androidx.compose.ui.graphics.ColorFilter
Expand All @@ -41,7 +41,6 @@ import coil.request.ImageResult
import coil.request.SuccessResult
import coil.size.Dimension
import coil.size.Precision
import coil.size.Size as CoilSize
import coil.transition.CrossfadeTransition
import coil.transition.TransitionTarget
import com.google.accompanist.drawablepainter.DrawablePainter
Expand Down Expand Up @@ -210,9 +209,7 @@ private fun rememberAsyncImagePainter(
painter.filterQuality = filterQuality
painter.isPreview = LocalInspectionMode.current
painter.imageLoader = state.imageLoader
@SuppressLint("StateFlowValueCalledInComposition")
painter.requestInternal.value =
request // Update request last so all other properties are up to date.
painter.request = request // Update request last so all other properties are up to date.
painter.onRemembered() // Invoke this manually so `painter.state` is set to `Loading` immediately.
return painter
}
Expand Down Expand Up @@ -251,19 +248,17 @@ class AsyncImagePainter internal constructor(
internal var contentScale = ContentScale.Fit
internal var filterQuality = DefaultFilterQuality
internal var isPreview = false
internal val requestInternal = MutableStateFlow(request)

/** The current [AsyncImagePainter.State]. */
var state: State by mutableStateOf(State.Empty)
private set

/** The current [ImageRequest]. */
val request
@Composable
get() = requestInternal.collectAsState().value
var request by mutableStateOf(request)
internal set

/** The current [ImageLoader]. */
var imageLoader: ImageLoader = imageLoader
var imageLoader: ImageLoader by mutableStateOf(imageLoader)
internal set

override val intrinsicSize: Size
Expand Down Expand Up @@ -301,14 +296,14 @@ class AsyncImagePainter internal constructor(

// If we're in inspection mode skip the image request and set the state to loading.
if (isPreview) {
val request = requestInternal.value.newBuilder().defaults(imageLoader.defaults).build()
val request = request.newBuilder().defaults(imageLoader.defaults).build()
updateState(State.Loading(request.placeholder?.toPainter()))
return@trace
}

// Observe the current request and execute any emissions.
scope.launch {
requestInternal
snapshotFlow { request }
.mapLatest { imageLoader.execute(updateRequest(it)).toState() }
.collect(::updateState)
}
Expand Down

0 comments on commit b1b9e25

Please sign in to comment.