enhancement: display public images on Imgur (#294)

* normalize URLs for Imgur.com

* update post layout to handle Imgur images
This commit is contained in:
Dieguitux 2025-01-23 23:41:50 +01:00 committed by GitHub
parent c13388485b
commit fa3fcfa047
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 21 additions and 4 deletions

View File

@ -53,6 +53,7 @@ import com.livefast.eattrash.raccoonforlemmy.core.utils.compose.onClick
import com.livefast.eattrash.raccoonforlemmy.core.utils.di.getShareHelper import com.livefast.eattrash.raccoonforlemmy.core.utils.di.getShareHelper
import com.livefast.eattrash.raccoonforlemmy.core.utils.looksLikeAVideo import com.livefast.eattrash.raccoonforlemmy.core.utils.looksLikeAVideo
import com.livefast.eattrash.raccoonforlemmy.core.utils.looksLikeAnImage import com.livefast.eattrash.raccoonforlemmy.core.utils.looksLikeAnImage
import com.livefast.eattrash.raccoonforlemmy.core.utils.normalizeImgurUrl
import com.livefast.eattrash.raccoonforlemmy.core.utils.texttoolbar.getCustomTextToolbar import com.livefast.eattrash.raccoonforlemmy.core.utils.texttoolbar.getCustomTextToolbar
import com.livefast.eattrash.raccoonforlemmy.domain.lemmy.data.CommunityModel import com.livefast.eattrash.raccoonforlemmy.domain.lemmy.data.CommunityModel
import com.livefast.eattrash.raccoonforlemmy.domain.lemmy.data.PostModel import com.livefast.eattrash.raccoonforlemmy.domain.lemmy.data.PostModel
@ -593,6 +594,7 @@ private fun ExtendedPost(
val postLinkUrl = val postLinkUrl =
post.url post.url
.orEmpty() .orEmpty()
.normalizeImgurUrl()
.takeIf { .takeIf {
it != post.imageUrl && it != post.imageUrl &&
it != post.videoUrl && it != post.videoUrl &&

View File

@ -79,8 +79,15 @@ val String.looksLikeAVideo: Boolean
return extensions.any { this.endsWith(it) } return extensions.any { this.endsWith(it) }
} }
val String.isRedGifs: Boolean fun String.normalizeImgurUrl(): String =
get() = contains("redgifs.com") this.let {
if (it.contains("i.imgur.com") && !it.looksLikeAnImage) {
// add extension so that is can be resolved
"$it.jpeg"
} else {
it
}
}
fun String?.ellipsize( fun String?.ellipsize(
length: Int = 100, length: Int = 100,

View File

@ -2,6 +2,7 @@ package com.livefast.eattrash.raccoonforlemmy.domain.lemmy.data
import com.livefast.eattrash.raccoonforlemmy.core.utils.looksLikeAVideo import com.livefast.eattrash.raccoonforlemmy.core.utils.looksLikeAVideo
import com.livefast.eattrash.raccoonforlemmy.core.utils.looksLikeAnImage import com.livefast.eattrash.raccoonforlemmy.core.utils.looksLikeAnImage
import com.livefast.eattrash.raccoonforlemmy.core.utils.normalizeImgurUrl
data class PostModel( data class PostModel(
val id: Long = 0, val id: Long = 0,
@ -33,7 +34,14 @@ data class PostModel(
) )
val PostModel.imageUrl: String val PostModel.imageUrl: String
get() = (url?.takeIf { it.looksLikeAnImage } ?: thumbnailUrl).orEmpty() get() =
url
?.normalizeImgurUrl()
?.takeIf { it.looksLikeAnImage } ?: thumbnailUrl
.orEmpty()
val PostModel.videoUrl: String val PostModel.videoUrl: String
get() = url?.takeIf { it.looksLikeAVideo }.orEmpty() get() =
url
?.takeIf { it.looksLikeAVideo }
.orEmpty()