Improve previews

This commit is contained in:
Mario Danic 2020-01-01 20:01:01 +01:00
parent 2d3e255f97
commit b265994031
No known key found for this signature in database
GPG Key ID: CDE0BBD2738C4CC0
3 changed files with 30 additions and 21 deletions

View File

@ -27,7 +27,6 @@ import android.content.Intent
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.graphics.drawable.LayerDrawable import android.graphics.drawable.LayerDrawable
import android.net.Uri import android.net.Uri
import android.os.Handler
import android.view.View import android.view.View
import androidx.emoji.widget.EmojiTextView import androidx.emoji.widget.EmojiTextView
import butterknife.BindView import butterknife.BindView
@ -89,6 +88,7 @@ class MagicPreviewMessageViewHolder(itemView: View?) : IncomingImageMessageViewH
} }
} }
} }
if (message.messageType == SINGLE_NC_ATTACHMENT_MESSAGE) { if (message.messageType == SINGLE_NC_ATTACHMENT_MESSAGE) {
// it's a preview for a Nextcloud share // it's a preview for a Nextcloud share
@ -99,8 +99,9 @@ class MagicPreviewMessageViewHolder(itemView: View?) : IncomingImageMessageViewH
) )
if (message.getSelectedIndividualHashMap().containsKey("mimetype")) { if (message.getSelectedIndividualHashMap().containsKey("mimetype")) {
// we now handle this directly in imageloader if (message.imageUrl == "no-preview") {
//image.load(getDrawableResourceIdForMimeType(message.getSelectedIndividualHashMap().get ("mimetype"))) image.load(getDrawableResourceIdForMimeType(message.getSelectedIndividualHashMap()["mimetype"]))
}
} else { } else {
fetchFileInformation( fetchFileInformation(
"/" + message.getSelectedIndividualHashMap()["path"], "/" + message.getSelectedIndividualHashMap()["path"],
@ -187,14 +188,11 @@ class MagicPreviewMessageViewHolder(itemView: View?) : IncomingImageMessageViewH
if (davResponse.data != null) { if (davResponse.data != null) {
val browserFileList = val browserFileList =
davResponse.data as List<BrowserFile> davResponse.data as List<BrowserFile>
if (!browserFileList.isEmpty()) { if (browserFileList.isNotEmpty()) {
Handler(context.mainLooper)
.post {
image.load(getDrawableResourceIdForMimeType(browserFileList[0].mimeType)) image.load(getDrawableResourceIdForMimeType(browserFileList[0].mimeType))
} }
} }
} }
}
override fun onError(e: Throwable) {} override fun onError(e: Throwable) {}
}) })
@ -202,10 +200,13 @@ class MagicPreviewMessageViewHolder(itemView: View?) : IncomingImageMessageViewH
override fun getPayloadForImageLoader(message: ChatMessage): Any { override fun getPayloadForImageLoader(message: ChatMessage): Any {
val map = HashMap<String, Any>() val map = HashMap<String, Any>()
// used for setting a placeholder
if (message.getSelectedIndividualHashMap().containsKey("mimetype")) { if (message.getSelectedIndividualHashMap().containsKey("mimetype")) {
map["mimetype"] = message.getSelectedIndividualHashMap().get("mimetype")!! map["mimetype"] = message.getSelectedIndividualHashMap()["mimetype"]!!
} }
map["hasPreview"] = message.selectedIndividualHashMap.getOrDefault("has-preview", false)
return ImageLoaderPayload(map) return ImageLoaderPayload(map)
} }

View File

@ -364,6 +364,7 @@ class ChatController(args: Bundle) : BaseController(), MessagesListAdapter
adapter = MessagesListAdapter( adapter = MessagesListAdapter(
conversationUser?.userId, messageHolders, ImageLoader { imageView, url, payload -> conversationUser?.userId, messageHolders, ImageLoader { imageView, url, payload ->
if (url != "no-preview") {
imageView.load(url) { imageView.load(url) {
if (conversationUser != null && url!!.startsWith(conversationUser.baseUrl) && (url.contains( if (conversationUser != null && url!!.startsWith(conversationUser.baseUrl) && (url.contains(
"index.php/core/preview?fileId=") || url.contains("/avatar/"))) { "index.php/core/preview?fileId=") || url.contains("/avatar/"))) {
@ -383,6 +384,7 @@ class ChatController(args: Bundle) : BaseController(), MessagesListAdapter
} }
} }
} }
}
}) })
} else { } else {
messagesListView?.visibility = View.VISIBLE messagesListView?.visibility = View.VISIBLE

View File

@ -148,7 +148,13 @@ public class ChatMessage implements IMessage, MessageContentType, MessageContent
Map<String, String> individualHashMap = messageParameters.get(key); Map<String, String> individualHashMap = messageParameters.get(key);
if (individualHashMap.get("type").equals("file")) { if (individualHashMap.get("type").equals("file")) {
selectedIndividualHashMap = individualHashMap; selectedIndividualHashMap = individualHashMap;
return (ApiUtils.getUrlForFilePreviewWithFileId(getActiveUser().getBaseUrl(), if (selectedIndividualHashMap.containsKey("preview-available")) {
if (selectedIndividualHashMap.get("preview-available").equals("no")) {
return "no-preview";
}
}
return (ApiUtils.getUrlForFilePreviewWithFileId(activeUser.getBaseUrl(),
individualHashMap.get("id"), NextcloudTalkApplication.Companion.getSharedApplication() individualHashMap.get("id"), NextcloudTalkApplication.Companion.getSharedApplication()
.getResources() .getResources()
.getDimensionPixelSize(R.dimen.maximum_file_preview_size))); .getDimensionPixelSize(R.dimen.maximum_file_preview_size)));
@ -157,7 +163,7 @@ public class ChatMessage implements IMessage, MessageContentType, MessageContent
} }
if (!messageTypesToIgnore.contains(getMessageType()) && isLinkPreviewAllowed) { if (!messageTypesToIgnore.contains(getMessageType()) && isLinkPreviewAllowed) {
return getMessage().trim(); return message.trim();
} }
return null; return null;