mirror of
https://github.com/nextcloud/talk-android
synced 2025-07-19 10:45:13 +01:00
Improve image loading
This commit is contained in:
parent
d19a3782ae
commit
5e1dc2f454
@ -294,9 +294,10 @@ dependencies {
|
||||
implementation 'com.github.wooplr:Spotlight:1.3'
|
||||
implementation'com.github.mario:chatkit:d32a7372bb'
|
||||
|
||||
implementation "io.coil-kt:coil:${coil_version}"
|
||||
/*implementation "io.coil-kt:coil:${coil_version}"
|
||||
implementation "io.coil-kt:coil-gif:${coil_version}"
|
||||
implementation "io.coil-kt:coil-svg:${coil_version}"
|
||||
implementation "io.coil-kt:coil-svg:${coil_version}"*/
|
||||
implementation 'com.github.coil-kt:coil:9769e11f19'
|
||||
|
||||
implementation 'com.github.natario1:Autocomplete:v1.1.0'
|
||||
|
||||
|
@ -42,7 +42,8 @@ import eu.davidea.flexibleadapter.items.IFilterable
|
||||
import eu.davidea.flexibleadapter.items.IFlexible
|
||||
import eu.davidea.flexibleadapter.utils.FlexibleUtils
|
||||
import eu.davidea.viewholders.FlexibleViewHolder
|
||||
import kotlinx.android.synthetic.main.rv_item_conversation_with_last_message.view.*
|
||||
import kotlinx.android.extensions.LayoutContainer
|
||||
import kotlinx.android.synthetic.main.rv_item_conversation_with_last_message.*
|
||||
import java.util.*
|
||||
import java.util.regex.Pattern
|
||||
|
||||
@ -101,57 +102,57 @@ class ConversationItem(
|
||||
val appContext = NextcloudTalkApplication.sharedApplication!!.applicationContext
|
||||
|
||||
if (model.changing) {
|
||||
holder.itemView.actionProgressBar!!.visibility = View.VISIBLE
|
||||
holder.actionProgressBar!!.visibility = View.VISIBLE
|
||||
} else {
|
||||
holder.itemView.actionProgressBar!!.visibility = View.GONE
|
||||
holder.actionProgressBar!!.visibility = View.GONE
|
||||
}
|
||||
|
||||
if (adapter.hasFilter()) {
|
||||
FlexibleUtils.highlightText(
|
||||
holder.itemView.dialogName!!, model.displayName,
|
||||
holder.dialogName!!, model.displayName,
|
||||
adapter.getFilter(String::class.java).toString(),
|
||||
NextcloudTalkApplication.sharedApplication!!
|
||||
.resources.getColor(R.color.colorPrimary)
|
||||
)
|
||||
} else {
|
||||
holder.itemView.dialogName!!.text = model.displayName
|
||||
holder.dialogName!!.text = model.displayName
|
||||
}
|
||||
|
||||
if (model.unreadMessages > 0) {
|
||||
holder.itemView.dialogUnreadBubble!!.visibility = View.VISIBLE
|
||||
holder.dialogUnreadBubble!!.visibility = View.VISIBLE
|
||||
if (model.unreadMessages < 100) {
|
||||
holder.itemView.dialogUnreadBubble!!.text = model.unreadMessages.toLong()
|
||||
holder.dialogUnreadBubble!!.text = model.unreadMessages.toLong()
|
||||
.toString()
|
||||
} else {
|
||||
holder.itemView.dialogUnreadBubble!!.text = context.getString(R.string.nc_99_plus)
|
||||
holder.dialogUnreadBubble!!.text = context.getString(R.string.nc_99_plus)
|
||||
}
|
||||
|
||||
if (model.unreadMention) {
|
||||
holder.itemView.dialogUnreadBubble!!.background =
|
||||
holder.dialogUnreadBubble!!.background =
|
||||
context.getDrawable(R.drawable.bubble_circle_unread_mention)
|
||||
} else {
|
||||
holder.itemView.dialogUnreadBubble!!.background =
|
||||
holder.dialogUnreadBubble!!.background =
|
||||
context.getDrawable(R.drawable.bubble_circle_unread)
|
||||
}
|
||||
} else {
|
||||
holder.itemView.dialogUnreadBubble!!.visibility = View.GONE
|
||||
holder.dialogUnreadBubble!!.visibility = View.GONE
|
||||
}
|
||||
|
||||
if (model.hasPassword) {
|
||||
holder.itemView.passwordProtectedRoomImageView!!.visibility = View.VISIBLE
|
||||
holder.passwordProtectedRoomImageView!!.visibility = View.VISIBLE
|
||||
} else {
|
||||
holder.itemView.passwordProtectedRoomImageView!!.visibility = View.GONE
|
||||
holder.passwordProtectedRoomImageView!!.visibility = View.GONE
|
||||
}
|
||||
|
||||
if (model.favorite) {
|
||||
holder.itemView.favoriteConversationImageView!!.visibility = View.VISIBLE
|
||||
holder.favoriteConversationImageView!!.visibility = View.VISIBLE
|
||||
} else {
|
||||
holder.itemView.favoriteConversationImageView!!.visibility = View.GONE
|
||||
holder.favoriteConversationImageView!!.visibility = View.GONE
|
||||
}
|
||||
|
||||
if (model.lastMessage != null) {
|
||||
holder.itemView.dialogDate!!.visibility = View.VISIBLE
|
||||
holder.itemView.dialogDate!!.text = DateUtils.getRelativeTimeSpanString(
|
||||
holder.dialogDate!!.visibility = View.VISIBLE
|
||||
holder.dialogDate!!.text = DateUtils.getRelativeTimeSpanString(
|
||||
model.lastActivity * 1000L,
|
||||
System.currentTimeMillis(), 0, DateUtils.FORMAT_ABBREV_RELATIVE
|
||||
)
|
||||
@ -160,7 +161,7 @@ class ConversationItem(
|
||||
model.lastMessage!!.systemMessage
|
||||
) || Conversation.ConversationType.SYSTEM_CONVERSATION == model.type
|
||||
) {
|
||||
holder.itemView.dialogLastMessage!!.text = model.lastMessage!!.text
|
||||
holder.dialogLastMessage!!.text = model.lastMessage!!.text
|
||||
} else {
|
||||
var authorDisplayName = ""
|
||||
model.lastMessage!!.activeUser = user
|
||||
@ -191,20 +192,18 @@ class ConversationItem(
|
||||
text = model.lastMessage!!.lastMessageDisplayText
|
||||
}
|
||||
|
||||
holder.itemView.dialogLastMessage.text = text
|
||||
holder.dialogLastMessage.text = text
|
||||
}
|
||||
} else {
|
||||
holder.itemView.dialogDate.visibility = View.GONE
|
||||
holder.itemView.dialogLastMessage.setText(R.string.nc_no_messages_yet)
|
||||
holder.dialogDate.visibility = View.GONE
|
||||
holder.dialogLastMessage.setText(R.string.nc_no_messages_yet)
|
||||
}
|
||||
|
||||
holder.itemView.dialogAvatar.visibility = View.VISIBLE
|
||||
|
||||
val conversationDrawable: Drawable? = Images().getImageForConversation(context, model)
|
||||
if (conversationDrawable != null) {
|
||||
holder.itemView.dialogAvatar.load(conversationDrawable)
|
||||
holder.dialogAvatar.load(conversationDrawable)
|
||||
} else {
|
||||
holder.itemView.dialogAvatar.load(
|
||||
holder.dialogAvatar.load(
|
||||
ApiUtils.getUrlForAvatarWithName(
|
||||
user.baseUrl,
|
||||
model.name, R.dimen.avatar_size
|
||||
@ -227,5 +226,8 @@ class ConversationItem(
|
||||
class ConversationItemViewHolder(
|
||||
view: View,
|
||||
adapter: FlexibleAdapter<*>
|
||||
) : FlexibleViewHolder(view, adapter)
|
||||
) : FlexibleViewHolder(view, adapter), LayoutContainer {
|
||||
override val containerView: View?
|
||||
get() = itemView
|
||||
}
|
||||
}
|
||||
|
@ -203,7 +203,7 @@ class MagicPreviewMessageViewHolder(itemView: View?) : IncomingImageMessageViewH
|
||||
override fun getPayloadForImageLoader(message: ChatMessage): Any {
|
||||
val map = HashMap<String, Any>()
|
||||
if (message.getSelectedIndividualHashMap().containsKey("mimetype")) {
|
||||
map.put("mimetype", message.getSelectedIndividualHashMap().get("mimetype")!!)
|
||||
map["mimetype"] = message.getSelectedIndividualHashMap().get("mimetype")!!
|
||||
}
|
||||
|
||||
return ImageLoaderPayload(map)
|
||||
|
@ -44,6 +44,7 @@ import butterknife.OnClick
|
||||
import coil.api.load
|
||||
import coil.bitmappool.BitmapPool
|
||||
import coil.drawable.CrossfadeDrawable
|
||||
import coil.size.OriginalSize
|
||||
import coil.transform.BlurTransformation
|
||||
import coil.transform.CircleCropTransformation
|
||||
import com.bluelinelabs.conductor.RouterTransaction
|
||||
@ -413,7 +414,7 @@ class CallNotificationController(private val originalBundle: Bundle) : BaseContr
|
||||
|
||||
if (activity != null) {
|
||||
val newBitmap = BlurTransformation(activity!!, 5f).transform(
|
||||
BitmapPool(10000000), bitmapFromImageView
|
||||
BitmapPool(10000000), bitmapFromImageView, OriginalSize
|
||||
)
|
||||
withContext(Dispatchers.Main) {
|
||||
backgroundImageView!!.setImageBitmap(newBitmap)
|
||||
|
@ -363,6 +363,7 @@ class ChatController(args: Bundle) : BaseController(), MessagesListAdapter
|
||||
|
||||
adapter = MessagesListAdapter(
|
||||
conversationUser?.userId, messageHolders, ImageLoader { imageView, url, payload ->
|
||||
|
||||
imageView.load(url) {
|
||||
if (conversationUser != null && url!!.startsWith(conversationUser.baseUrl) && (url.contains(
|
||||
"index.php/core/preview?fileId=") || url.contains("/avatar/"))) {
|
||||
@ -373,14 +374,11 @@ class ChatController(args: Bundle) : BaseController(), MessagesListAdapter
|
||||
transformations(CircleCropTransformation())
|
||||
} else {
|
||||
if (payload is ImageLoaderPayload) {
|
||||
payload.map?.let {
|
||||
if (payload.map.containsKey("mimetype")) {
|
||||
placeholder(
|
||||
getDrawableResourceIdForMimeType(
|
||||
payload.map.get("mimetype") as String?
|
||||
)
|
||||
)
|
||||
}
|
||||
payload.map?.get("mimetype")?.let {
|
||||
val mimeTypeDrawableResource = getDrawableResourceIdForMimeType(it as String)
|
||||
val drawable = context.getDrawable(mimeTypeDrawableResource)
|
||||
placeholder(drawable)
|
||||
error(drawable)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -54,6 +54,7 @@ import androidx.emoji.text.EmojiCompat
|
||||
import coil.Coil
|
||||
import coil.api.load
|
||||
import coil.bitmappool.BitmapPool
|
||||
import coil.size.OriginalSize
|
||||
import coil.target.Target
|
||||
import coil.transform.CircleCropTransformation
|
||||
import com.google.android.material.chip.ChipDrawable
|
||||
@ -99,7 +100,7 @@ object DisplayUtils {
|
||||
fun getRoundedDrawable(drawable: Drawable?): Drawable {
|
||||
val bitmap = getBitmap(drawable!!)
|
||||
val drawable = runBlocking {
|
||||
return@runBlocking BitmapDrawable(CircleCropTransformation().transform(BitmapPool(10000), bitmap))
|
||||
return@runBlocking BitmapDrawable(CircleCropTransformation().transform(BitmapPool(10000), bitmap, OriginalSize))
|
||||
}
|
||||
|
||||
return drawable
|
||||
|
@ -46,7 +46,7 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:adjustViewBounds="true"
|
||||
android:scaleType="centerInside"
|
||||
android:scaleType="fitCenter"
|
||||
app:layout_flexGrow="1"
|
||||
app:layout_wrapBefore="true"
|
||||
app:layout_alignSelf="flex_start"
|
||||
|
@ -45,7 +45,7 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:adjustViewBounds="true"
|
||||
android:scaleType="centerInside"
|
||||
android:scaleType="fitCenter"
|
||||
app:layout_flexGrow="1"
|
||||
app:layout_wrapBefore="true"
|
||||
app:layout_alignSelf="flex_start"
|
||||
|
@ -4,7 +4,8 @@
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/quotedChatMessageView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="8dp">
|
||||
|
||||
<View
|
||||
android:id="@+id/quoteColoredView"
|
||||
@ -54,7 +55,7 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:adjustViewBounds="true"
|
||||
android:scaleType="centerInside"
|
||||
android:scaleType="fitCenter"
|
||||
app:layout_alignSelf="flex_start"
|
||||
app:layout_flexGrow="1"
|
||||
app:layout_wrapBefore="true"
|
||||
|
Loading…
Reference in New Issue
Block a user