Improvements to replies

Signed-off-by: Mario Danic <mario@lovelyhq.com>
This commit is contained in:
Mario Danic 2020-01-13 12:36:52 +01:00
parent b36c70b783
commit d166276b80
No known key found for this signature in database
GPG Key ID: CDE0BBD2738C4CC0
5 changed files with 50 additions and 23 deletions

View File

@ -40,7 +40,7 @@ android {
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
versionCode 115 versionCode 115
versionName "8" versionName "8.0.0beta1"
flavorDimensions "default" flavorDimensions "default"
renderscriptTargetApi 19 renderscriptTargetApi 19

View File

@ -38,12 +38,15 @@ import androidx.emoji.widget.EmojiTextView
import autodagger.AutoInjector import autodagger.AutoInjector
import butterknife.BindView import butterknife.BindView
import butterknife.ButterKnife import butterknife.ButterKnife
import coil.api.load
import coil.transform.CircleCropTransformation
import com.amulyakhare.textdrawable.TextDrawable import com.amulyakhare.textdrawable.TextDrawable
import com.facebook.drawee.view.SimpleDraweeView import com.facebook.drawee.view.SimpleDraweeView
import com.nextcloud.talk.R import com.nextcloud.talk.R
import com.nextcloud.talk.application.NextcloudTalkApplication import com.nextcloud.talk.application.NextcloudTalkApplication
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
import com.nextcloud.talk.models.json.chat.ChatMessage import com.nextcloud.talk.models.json.chat.ChatMessage
import com.nextcloud.talk.utils.ApiUtils
import com.nextcloud.talk.utils.DisplayUtils import com.nextcloud.talk.utils.DisplayUtils
import com.nextcloud.talk.utils.TextMatchers import com.nextcloud.talk.utils.TextMatchers
import com.nextcloud.talk.utils.preferences.AppPreferences import com.nextcloud.talk.utils.preferences.AppPreferences
@ -77,7 +80,7 @@ class MagicIncomingTextMessageViewHolder(incomingView: View) : MessageHolders
@JvmField @JvmField
@BindView(R.id.quotedUserAvatar) @BindView(R.id.quotedUserAvatar)
var quotedUserAvatar: SimpleDraweeView? = null var quotedUserAvatar: ImageView? = null
@JvmField @JvmField
@BindView(R.id.quotedMessageAuthor) @BindView(R.id.quotedMessageAuthor)
@ -85,7 +88,7 @@ class MagicIncomingTextMessageViewHolder(incomingView: View) : MessageHolders
@JvmField @JvmField
@BindView(R.id.quotedMessageImage) @BindView(R.id.quotedMessageImage)
var quotedMessagePreview: SimpleDraweeView? = null var quotedMessagePreview: ImageView? = null
@JvmField @JvmField
@BindView(R.id.quotedMessage) @BindView(R.id.quotedMessage)
@ -228,10 +231,15 @@ class MagicIncomingTextMessageViewHolder(incomingView: View) : MessageHolders
message.parentMessage?.let { parentChatMessage -> message.parentMessage?.let { parentChatMessage ->
parentChatMessage.activeUser = message.activeUser parentChatMessage.activeUser = message.activeUser
imageLoader.loadImage(quotedUserAvatar!!, parentChatMessage.user.avatar, null) quotedUserAvatar?.load(parentChatMessage.user.avatar) {
addHeader("Authorization", ApiUtils.getCredentials(message.activeUser.username, message.activeUser.token))
transformations(CircleCropTransformation())
}
parentChatMessage.imageUrl?.let{ parentChatMessage.imageUrl?.let{
quotedMessagePreview?.visibility = View.VISIBLE quotedMessagePreview?.visibility = View.VISIBLE
imageLoader.loadImage(quotedMessagePreview, it, null) quotedMessagePreview?.load(it) {
addHeader("Authorization", ApiUtils.getCredentials(message.activeUser.username, message.activeUser.token))
}
} ?: run { } ?: run {
quotedMessagePreview?.visibility = View.GONE quotedMessagePreview?.visibility = View.GONE
} }

View File

@ -34,12 +34,15 @@ import androidx.emoji.widget.EmojiTextView
import autodagger.AutoInjector import autodagger.AutoInjector
import butterknife.BindView import butterknife.BindView
import butterknife.ButterKnife import butterknife.ButterKnife
import coil.api.load
import coil.transform.CircleCropTransformation
import com.facebook.drawee.view.SimpleDraweeView import com.facebook.drawee.view.SimpleDraweeView
import com.google.android.flexbox.FlexboxLayout import com.google.android.flexbox.FlexboxLayout
import com.nextcloud.talk.R import com.nextcloud.talk.R
import com.nextcloud.talk.application.NextcloudTalkApplication import com.nextcloud.talk.application.NextcloudTalkApplication
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
import com.nextcloud.talk.models.json.chat.ChatMessage import com.nextcloud.talk.models.json.chat.ChatMessage
import com.nextcloud.talk.utils.ApiUtils
import com.nextcloud.talk.utils.DisplayUtils.getMessageSelector import com.nextcloud.talk.utils.DisplayUtils.getMessageSelector
import com.nextcloud.talk.utils.DisplayUtils.searchAndReplaceWithMentionSpan import com.nextcloud.talk.utils.DisplayUtils.searchAndReplaceWithMentionSpan
import com.nextcloud.talk.utils.TextMatchers import com.nextcloud.talk.utils.TextMatchers
@ -63,7 +66,7 @@ class MagicOutcomingTextMessageViewHolder(itemView: View) : OutcomingTextMessage
@JvmField @JvmField
@BindView(R.id.quotedUserAvatar) @BindView(R.id.quotedUserAvatar)
var quotedUserAvatar: SimpleDraweeView? = null var quotedUserAvatar: ImageView? = null
@JvmField @JvmField
@BindView(R.id.quotedMessageAuthor) @BindView(R.id.quotedMessageAuthor)
@ -71,7 +74,7 @@ class MagicOutcomingTextMessageViewHolder(itemView: View) : OutcomingTextMessage
@JvmField @JvmField
@BindView(R.id.quotedMessageImage) @BindView(R.id.quotedMessageImage)
var quotedMessagePreview: SimpleDraweeView? = null var quotedMessagePreview: ImageView? = null
@JvmField @JvmField
@BindView(R.id.quotedMessage) @BindView(R.id.quotedMessage)
@ -151,10 +154,15 @@ class MagicOutcomingTextMessageViewHolder(itemView: View) : OutcomingTextMessage
message.parentMessage?.let { parentChatMessage -> message.parentMessage?.let { parentChatMessage ->
parentChatMessage.activeUser = message.activeUser parentChatMessage.activeUser = message.activeUser
imageLoader.loadImage(quotedUserAvatar, parentChatMessage.user.avatar, null) quotedUserAvatar?.load(parentChatMessage.user.avatar) {
transformations(CircleCropTransformation())
addHeader("Authorization", ApiUtils.getCredentials(message.activeUser.username, message.activeUser.token))
}
parentChatMessage.imageUrl?.let{ parentChatMessage.imageUrl?.let{
quotedMessagePreview?.visibility = View.VISIBLE quotedMessagePreview?.visibility = View.VISIBLE
imageLoader.loadImage(quotedMessagePreview, it, null) quotedMessagePreview?.load(it) {
addHeader("Authorization", ApiUtils.getCredentials(message.activeUser.username, message.activeUser.token))
}
} ?: run { } ?: run {
quotedMessagePreview?.visibility = View.GONE quotedMessagePreview?.visibility = View.GONE
} }

View File

@ -840,8 +840,8 @@ class ChatController(args: Bundle) : BaseController(args), MessagesListAdapter
} }
messageInput?.setText("") messageInput?.setText("")
val replyMessageId: Long? = view?.findViewById<RelativeLayout>(R.id.quotedChatMessageView)?.tag as Long? val replyMessageId: Int? = view?.findViewById<RelativeLayout>(R.id.quotedChatMessageView)?.tag as Int
sendMessage(editable, if (view?.findViewById<RelativeLayout>(R.id.quotedChatMessageView)?.visibility == View.VISIBLE) replyMessageId?.toInt() else null ) sendMessage(editable, if (view?.findViewById<RelativeLayout>(R.id.quotedChatMessageView)?.visibility == View.VISIBLE) replyMessageId else null )
cancelReply() cancelReply()
} }
} }
@ -1258,8 +1258,8 @@ class ChatController(args: Bundle) : BaseController(args), MessagesListAdapter
@OnClick(R.id.cancelReplyButton) @OnClick(R.id.cancelReplyButton)
fun cancelReply() { fun cancelReply() {
quotedChatMessageView?.visibility = View.GONE quotedChatMessageView?.visibility = View.GONE
messageInputView?.findViewById<ImageButton>(R.id.attachmentButton)?.visibility = View.VISIBLE messageInputView!!.findViewById<ImageButton>(R.id.attachmentButton)?.visibility = View.VISIBLE
messageInputView?.findViewById<Space>(R.id.attachmentButtonSpace)?.visibility = View.VISIBLE messageInputView!!.findViewById<Space>(R.id.attachmentButtonSpace)?.visibility = View.VISIBLE
} }
override fun onMessageViewLongClick(view: View?, message: IMessage?) { override fun onMessageViewLongClick(view: View?, message: IMessage?) {

View File

@ -4,7 +4,8 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/quotedChatMessageView" android:id="@+id/quotedChatMessageView"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content"
android:layout_marginBottom="8dp">
<View <View
android:id="@+id/quoteColoredView" android:id="@+id/quoteColoredView"
@ -15,13 +16,10 @@
android:layout_marginEnd="4dp" android:layout_marginEnd="4dp"
android:background="@color/colorPrimary"></View> android:background="@color/colorPrimary"></View>
<com.facebook.drawee.view.SimpleDraweeView <ImageView
android:id="@+id/quotedUserAvatar" android:id="@+id/quotedUserAvatar"
android:layout_width="8dp" android:layout_width="16dp"
android:layout_height="8dp" android:layout_height="16dp"
android:scaleType="centerInside"
android:adjustViewBounds="true"
app:roundAsCircle="true"
android:layout_alignParentTop="true" android:layout_alignParentTop="true"
android:layout_marginEnd="4dp" android:layout_marginEnd="4dp"
android:layout_toEndOf="@id/quoteColoredView" android:layout_toEndOf="@id/quoteColoredView"
@ -44,19 +42,20 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_below="@id/quotedUserAvatar" android:layout_below="@id/quotedUserAvatar"
android:layout_alignStart="@id/quotedUserAvatar" android:layout_alignStart="@id/quotedUserAvatar"
android:layout_toStartOf="@id/cancelReplyButton"
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:orientation="vertical" android:orientation="vertical"
app:alignContent="stretch" app:alignContent="stretch"
app:alignItems="stretch" app:alignItems="stretch"
app:flexWrap="wrap" app:flexWrap="wrap"
app:justifyContent="flex_end"> app:justifyContent="flex_start">
<com.facebook.drawee.view.SimpleDraweeView <ImageView
android:id="@+id/quotedMessageImage" android:id="@+id/quotedMessageImage"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:adjustViewBounds="true" android:adjustViewBounds="true"
android:scaleType="centerInside" android:scaleType="fitCenter"
app:layout_alignSelf="flex_start" app:layout_alignSelf="flex_start"
app:layout_flexGrow="1" app:layout_flexGrow="1"
app:layout_wrapBefore="true" app:layout_wrapBefore="true"
@ -87,4 +86,16 @@
</com.google.android.flexbox.FlexboxLayout> </com.google.android.flexbox.FlexboxLayout>
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_centerVertical="true"
android:layout_alignParentEnd="true"
android:background="@drawable/ic_cancel_black_24dp"
android:backgroundTint="@color/grey_600"
android:id="@+id/cancelReplyButton"/>
</RelativeLayout> </RelativeLayout>