mirror of
https://github.com/nextcloud/talk-android
synced 2025-07-08 05:20:31 +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.DrawableUtils.getDrawableResourceIdForMimeType
|
||||||
import com.nextcloud.talk.utils.FileViewerUtils
|
import com.nextcloud.talk.utils.FileViewerUtils
|
||||||
import com.nextcloud.talk.utils.FileViewerUtils.ProgressUi
|
import com.nextcloud.talk.utils.FileViewerUtils.ProgressUi
|
||||||
|
import com.nextcloud.talk.utils.MimetypeUtils.isGif
|
||||||
import com.nextcloud.talk.utils.message.MessageUtils
|
import com.nextcloud.talk.utils.message.MessageUtils
|
||||||
import com.stfalcon.chatkit.messages.MessageHolders.IncomingImageMessageViewHolder
|
import com.stfalcon.chatkit.messages.MessageHolders.IncomingImageMessageViewHolder
|
||||||
import io.reactivex.Single
|
import io.reactivex.Single
|
||||||
@ -232,6 +233,10 @@ abstract class PreviewMessageViewHolder(itemView: View?, payload: Any?) :
|
|||||||
|
|
||||||
if (message.selectedIndividualHashMap!!.containsKey(KEY_MIMETYPE)) {
|
if (message.selectedIndividualHashMap!!.containsKey(KEY_MIMETYPE)) {
|
||||||
val mimetype = message.selectedIndividualHashMap!![KEY_MIMETYPE]
|
val mimetype = message.selectedIndividualHashMap!![KEY_MIMETYPE]
|
||||||
|
if (isGif(mimetype!!)) {
|
||||||
|
return message
|
||||||
|
}
|
||||||
|
|
||||||
val drawableResourceId = getDrawableResourceIdForMimeType(mimetype)
|
val drawableResourceId = getDrawableResourceIdForMimeType(mimetype)
|
||||||
var drawable = ContextCompat.getDrawable(context!!, drawableResourceId)
|
var drawable = ContextCompat.getDrawable(context!!, drawableResourceId)
|
||||||
if (drawable != null &&
|
if (drawable != null &&
|
||||||
|
@ -50,6 +50,7 @@ import androidx.activity.OnBackPressedCallback
|
|||||||
import androidx.activity.result.ActivityResult
|
import androidx.activity.result.ActivityResult
|
||||||
import androidx.activity.result.contract.ActivityResultContracts
|
import androidx.activity.result.contract.ActivityResultContracts
|
||||||
import androidx.appcompat.view.ContextThemeWrapper
|
import androidx.appcompat.view.ContextThemeWrapper
|
||||||
|
import androidx.core.content.ContextCompat
|
||||||
import androidx.core.content.FileProvider
|
import androidx.core.content.FileProvider
|
||||||
import androidx.core.content.PermissionChecker
|
import androidx.core.content.PermissionChecker
|
||||||
import androidx.core.content.PermissionChecker.PERMISSION_GRANTED
|
import androidx.core.content.PermissionChecker.PERMISSION_GRANTED
|
||||||
@ -187,6 +188,7 @@ import kotlinx.coroutines.launch
|
|||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import org.greenrobot.eventbus.Subscribe
|
import org.greenrobot.eventbus.Subscribe
|
||||||
import org.greenrobot.eventbus.ThreadMode
|
import org.greenrobot.eventbus.ThreadMode
|
||||||
|
import pl.droidsonroids.gif.GifDrawable
|
||||||
import retrofit2.HttpException
|
import retrofit2.HttpException
|
||||||
import retrofit2.Response
|
import retrofit2.Response
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@ -1073,8 +1075,32 @@ class ChatActivity :
|
|||||||
adapter = TalkMessagesListAdapter(
|
adapter = TalkMessagesListAdapter(
|
||||||
senderId,
|
senderId,
|
||||||
initMessageHolders(),
|
initMessageHolders(),
|
||||||
ImageLoader { imageView, url, placeholder ->
|
ImageLoader { imageView, url, data ->
|
||||||
imageView.loadAvatarOrImagePreview(url!!, conversationUser!!, placeholder as Drawable?)
|
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
|
this
|
||||||
)
|
)
|
||||||
@ -3384,10 +3410,6 @@ class ChatActivity :
|
|||||||
val messageTemp = message as ChatMessage
|
val messageTemp = message as ChatMessage
|
||||||
messageTemp.lastEditTimestamp = message.lastEditTimestamp
|
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 =
|
messageTemp.isOneToOneConversation =
|
||||||
currentConversation?.type == ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL
|
currentConversation?.type == ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL
|
||||||
messageTemp.activeUser = conversationUser
|
messageTemp.activeUser = conversationUser
|
||||||
|
@ -63,11 +63,11 @@
|
|||||||
app:layout_wrapBefore="true"
|
app:layout_wrapBefore="true"
|
||||||
tools:visibility="gone">
|
tools:visibility="gone">
|
||||||
|
|
||||||
<ImageView
|
<pl.droidsonroids.gif.GifImageView
|
||||||
android:id="@id/image"
|
android:id="@id/image"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:scaleType="fitStart"
|
android:minHeight="200dp"
|
||||||
tools:src="@drawable/ic_call_black_24dp"
|
tools:src="@drawable/ic_call_black_24dp"
|
||||||
tools:ignore="ContentDescription" />
|
tools:ignore="ContentDescription" />
|
||||||
|
|
||||||
|
@ -39,11 +39,11 @@
|
|||||||
app:layout_flexGrow="1"
|
app:layout_flexGrow="1"
|
||||||
app:layout_wrapBefore="true">
|
app:layout_wrapBefore="true">
|
||||||
|
|
||||||
<ImageView
|
<pl.droidsonroids.gif.GifImageView
|
||||||
android:id="@id/image"
|
android:id="@id/image"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
android:minHeight="200dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:scaleType="fitStart"
|
|
||||||
tools:src="@drawable/ic_call_black_24dp"
|
tools:src="@drawable/ic_call_black_24dp"
|
||||||
tools:ignore="ContentDescription" />
|
tools:ignore="ContentDescription" />
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user