Adds a 5 minute expiration time for ImageErrors

This commit is contained in:
Vitor Pamplona
2023-05-15 14:09:43 -04:00
parent 1db6b4793f
commit 6a696bfa39
@@ -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)
} }
) )
} }