Adds a 5 minute expiration time for ImageErrors
This commit is contained in:
@@ -16,6 +16,7 @@ import coil.compose.AsyncImage
|
|||||||
import coil.compose.AsyncImagePainter
|
import coil.compose.AsyncImagePainter
|
||||||
import coil.compose.rememberAsyncImagePainter
|
import coil.compose.rememberAsyncImagePainter
|
||||||
import coil.size.Size
|
import coil.size.Size
|
||||||
|
import java.util.Date
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun RobohashAsyncImage(
|
fun RobohashAsyncImage(
|
||||||
@@ -58,7 +59,7 @@ fun RobohashAsyncImage(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
var imageErrors = setOf<String>()
|
var imageErrors = mapOf<String, Long>()
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun RobohashFallbackAsyncImage(
|
fun RobohashFallbackAsyncImage(
|
||||||
@@ -73,7 +74,9 @@ fun RobohashFallbackAsyncImage(
|
|||||||
colorFilter: ColorFilter? = null,
|
colorFilter: ColorFilter? = null,
|
||||||
filterQuality: FilterQuality = DrawScope.DefaultFilterQuality
|
filterQuality: FilterQuality = DrawScope.DefaultFilterQuality
|
||||||
) {
|
) {
|
||||||
if (imageErrors.contains(model)) {
|
val errorCache = remember(imageErrors) { imageErrors[model] }
|
||||||
|
|
||||||
|
if (errorCache != null && (Date().time / 1000) - errorCache < (60 * 5)) {
|
||||||
RobohashAsyncImage(
|
RobohashAsyncImage(
|
||||||
robot = robot,
|
robot = robot,
|
||||||
robotSize = robotSize,
|
robotSize = robotSize,
|
||||||
@@ -110,7 +113,7 @@ fun RobohashFallbackAsyncImage(
|
|||||||
colorFilter = colorFilter,
|
colorFilter = colorFilter,
|
||||||
filterQuality = filterQuality,
|
filterQuality = filterQuality,
|
||||||
onError = {
|
onError = {
|
||||||
imageErrors = imageErrors + model
|
imageErrors = imageErrors + Pair(model, Date().time / 1000)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user