mirror of
https://github.com/nextcloud/talk-android
synced 2025-07-07 21:09:46 +01:00
WIP Getting Gif to Work
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
This commit is contained in:
parent
5caf93357f
commit
42a25443ce
@ -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 &&
|
||||
|
@ -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
|
||||
|
@ -63,11 +63,11 @@
|
||||
app:layout_wrapBefore="true"
|
||||
tools:visibility="gone">
|
||||
|
||||
<ImageView
|
||||
<pl.droidsonroids.gif.GifImageView
|
||||
android:id="@id/image"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:scaleType="fitStart"
|
||||
android:minHeight="200dp"
|
||||
tools:src="@drawable/ic_call_black_24dp"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
|
@ -39,11 +39,11 @@
|
||||
app:layout_flexGrow="1"
|
||||
app:layout_wrapBefore="true">
|
||||
|
||||
<ImageView
|
||||
<pl.droidsonroids.gif.GifImageView
|
||||
android:id="@id/image"
|
||||
android:layout_width="match_parent"
|
||||
android:minHeight="200dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:scaleType="fitStart"
|
||||
tools:src="@drawable/ic_call_black_24dp"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user