From fa3fcfa0476bf52c7e6c4a717bf5dd71d6838c0d Mon Sep 17 00:00:00 2001 From: Dieguitux Date: Thu, 23 Jan 2025 23:41:50 +0100 Subject: [PATCH] enhancement: display public images on Imgur (#294) * normalize URLs for Imgur.com * update post layout to handle Imgur images --- .../core/commonui/lemmyui/PostCard.kt | 2 ++ .../raccoonforlemmy/core/utils/Extensions.kt | 11 +++++++++-- .../raccoonforlemmy/domain/lemmy/data/PostModel.kt | 12 ++++++++++-- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/core/commonui/lemmyui/src/commonMain/kotlin/com/livefast/eattrash/raccoonforlemmy/core/commonui/lemmyui/PostCard.kt b/core/commonui/lemmyui/src/commonMain/kotlin/com/livefast/eattrash/raccoonforlemmy/core/commonui/lemmyui/PostCard.kt index 9ec233a22..21dfe2204 100644 --- a/core/commonui/lemmyui/src/commonMain/kotlin/com/livefast/eattrash/raccoonforlemmy/core/commonui/lemmyui/PostCard.kt +++ b/core/commonui/lemmyui/src/commonMain/kotlin/com/livefast/eattrash/raccoonforlemmy/core/commonui/lemmyui/PostCard.kt @@ -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.looksLikeAVideo 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.domain.lemmy.data.CommunityModel import com.livefast.eattrash.raccoonforlemmy.domain.lemmy.data.PostModel @@ -593,6 +594,7 @@ private fun ExtendedPost( val postLinkUrl = post.url .orEmpty() + .normalizeImgurUrl() .takeIf { it != post.imageUrl && it != post.videoUrl && diff --git a/core/utils/src/commonMain/kotlin/com/livefast/eattrash/raccoonforlemmy/core/utils/Extensions.kt b/core/utils/src/commonMain/kotlin/com/livefast/eattrash/raccoonforlemmy/core/utils/Extensions.kt index 551584f2d..1addb42b5 100644 --- a/core/utils/src/commonMain/kotlin/com/livefast/eattrash/raccoonforlemmy/core/utils/Extensions.kt +++ b/core/utils/src/commonMain/kotlin/com/livefast/eattrash/raccoonforlemmy/core/utils/Extensions.kt @@ -79,8 +79,15 @@ val String.looksLikeAVideo: Boolean return extensions.any { this.endsWith(it) } } -val String.isRedGifs: Boolean - get() = contains("redgifs.com") +fun String.normalizeImgurUrl(): String = + 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( length: Int = 100, diff --git a/domain/lemmy/data/src/commonMain/kotlin/com/livefast/eattrash/raccoonforlemmy/domain/lemmy/data/PostModel.kt b/domain/lemmy/data/src/commonMain/kotlin/com/livefast/eattrash/raccoonforlemmy/domain/lemmy/data/PostModel.kt index 8023d92c3..30be0a4ab 100644 --- a/domain/lemmy/data/src/commonMain/kotlin/com/livefast/eattrash/raccoonforlemmy/domain/lemmy/data/PostModel.kt +++ b/domain/lemmy/data/src/commonMain/kotlin/com/livefast/eattrash/raccoonforlemmy/domain/lemmy/data/PostModel.kt @@ -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.looksLikeAnImage +import com.livefast.eattrash.raccoonforlemmy.core.utils.normalizeImgurUrl data class PostModel( val id: Long = 0, @@ -33,7 +34,14 @@ data class PostModel( ) val PostModel.imageUrl: String - get() = (url?.takeIf { it.looksLikeAnImage } ?: thumbnailUrl).orEmpty() + get() = + url + ?.normalizeImgurUrl() + ?.takeIf { it.looksLikeAnImage } ?: thumbnailUrl + .orEmpty() val PostModel.videoUrl: String - get() = url?.takeIf { it.looksLikeAVideo }.orEmpty() + get() = + url + ?.takeIf { it.looksLikeAVideo } + .orEmpty()