diff --git a/app/src/main/java/com/nextcloud/talk/adapters/messages/PreviewMessageViewHolder.kt b/app/src/main/java/com/nextcloud/talk/adapters/messages/PreviewMessageViewHolder.kt
index 7ff68e951..89d3da756 100644
--- a/app/src/main/java/com/nextcloud/talk/adapters/messages/PreviewMessageViewHolder.kt
+++ b/app/src/main/java/com/nextcloud/talk/adapters/messages/PreviewMessageViewHolder.kt
@@ -42,6 +42,7 @@ import com.nextcloud.talk.utils.DisplayUtils
import com.nextcloud.talk.utils.DrawableUtils.getDrawableResourceIdForMimeType
import com.nextcloud.talk.utils.FileViewerUtils
import com.nextcloud.talk.utils.FileViewerUtils.ProgressUi
+import com.nextcloud.talk.utils.MimetypeUtils.isGif
import com.nextcloud.talk.utils.message.MessageUtils
import com.stfalcon.chatkit.messages.MessageHolders.IncomingImageMessageViewHolder
import io.reactivex.Single
@@ -232,6 +233,10 @@ abstract class PreviewMessageViewHolder(itemView: View?, payload: Any?) :
if (message.selectedIndividualHashMap!!.containsKey(KEY_MIMETYPE)) {
val mimetype = message.selectedIndividualHashMap!![KEY_MIMETYPE]
+ if (isGif(mimetype!!)) {
+ return message
+ }
+
val drawableResourceId = getDrawableResourceIdForMimeType(mimetype)
var drawable = ContextCompat.getDrawable(context!!, drawableResourceId)
if (drawable != null &&
diff --git a/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt b/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt
index daec27426..bb7d3566d 100644
--- a/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt
+++ b/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt
@@ -50,6 +50,7 @@ import androidx.activity.OnBackPressedCallback
import androidx.activity.result.ActivityResult
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.view.ContextThemeWrapper
+import androidx.core.content.ContextCompat
import androidx.core.content.FileProvider
import androidx.core.content.PermissionChecker
import androidx.core.content.PermissionChecker.PERMISSION_GRANTED
@@ -187,6 +188,7 @@ import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
+import pl.droidsonroids.gif.GifDrawable
import retrofit2.HttpException
import retrofit2.Response
import java.io.File
@@ -1073,8 +1075,32 @@ class ChatActivity :
adapter = TalkMessagesListAdapter(
senderId,
initMessageHolders(),
- ImageLoader { imageView, url, placeholder ->
- imageView.loadAvatarOrImagePreview(url!!, conversationUser!!, placeholder as Drawable?)
+ ImageLoader { imageView, url, data ->
+ try {
+ if ((data is ChatMessage)) { // It's a GIF
+ val filename = data.selectedIndividualHashMap!!["name"]
+ val path = context.cacheDir.absolutePath + "/" + filename
+ val file = File(context.cacheDir, filename!!)
+ if (file.exists()) {
+ val gifFromUri = GifDrawable(path)
+ imageView.setImageDrawable(gifFromUri)
+ } else {
+ // TODO download file to cache can't be called here -_-, need to figure out another way
+ // to get this preloaded, likely in PreviewMessageViewHolder
+ val placeholder = ContextCompat.getDrawable(context, R.drawable.ic_mimetype_file)
+ imageView.setImageDrawable(placeholder)
+ downloadFileToCache(data, false) {
+ val gifFromUri = GifDrawable(path)
+ imageView.setImageDrawable(gifFromUri)
+ }
+ }
+ } else { // Not a GIF
+ imageView.loadAvatarOrImagePreview(url!!, conversationUser!!, data as Drawable?)
+ }
+ } catch (e: java.lang.IllegalStateException) {
+ Log.e(TAG, "Error in ImageLoading in initAdapter $e")
+ }
+
},
this
)
@@ -3384,10 +3410,6 @@ class ChatActivity :
val messageTemp = message as ChatMessage
messageTemp.lastEditTimestamp = message.lastEditTimestamp
- val index = adapter?.getMessagePositionById(messageTemp.id) ?: 0
- val adapterMsg = adapter?.items?.get(index)?.item as ChatMessage
-
- messageTemp.parentMessage = adapterMsg.parentMessage
messageTemp.isOneToOneConversation =
currentConversation?.type == ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL
messageTemp.activeUser = conversationUser
diff --git a/app/src/main/res/layout/item_custom_incoming_preview_message.xml b/app/src/main/res/layout/item_custom_incoming_preview_message.xml
index d55d065b1..ae87f04e7 100644
--- a/app/src/main/res/layout/item_custom_incoming_preview_message.xml
+++ b/app/src/main/res/layout/item_custom_incoming_preview_message.xml
@@ -63,11 +63,11 @@
app:layout_wrapBefore="true"
tools:visibility="gone">
-
diff --git a/app/src/main/res/layout/item_custom_outcoming_preview_message.xml b/app/src/main/res/layout/item_custom_outcoming_preview_message.xml
index 886241975..b2cb6bf4c 100644
--- a/app/src/main/res/layout/item_custom_outcoming_preview_message.xml
+++ b/app/src/main/res/layout/item_custom_outcoming_preview_message.xml
@@ -39,11 +39,11 @@
app:layout_flexGrow="1"
app:layout_wrapBefore="true">
-