diff --git a/app/src/main/java/com/nextcloud/talk/api/NcApi.java b/app/src/main/java/com/nextcloud/talk/api/NcApi.java index 98af5ede2..a10b5add3 100644 --- a/app/src/main/java/com/nextcloud/talk/api/NcApi.java +++ b/app/src/main/java/com/nextcloud/talk/api/NcApi.java @@ -334,7 +334,8 @@ public interface NcApi { @FormUrlEncoded @PUT - Observable editChatMessage(@Header("Authorization") String authorization, @Url String url, @Field("message") String message); + Observable editChatMessage(@Header("Authorization") String authorization, @Url String url, @Field( + "message") String message); @GET Observable> getSharedItems(@Header("Authorization") String authorization, @Url String url, @Query("objectType") String objectType, @Nullable @Query("lastKnownMessageId") Integer lastKnownMessageId, @Nullable @Query("limit") Integer limit); diff --git a/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt b/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt index bcb3e8bd9..a0aa39709 100644 --- a/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt @@ -84,7 +84,6 @@ import android.widget.RelativeLayout.BELOW import android.widget.RelativeLayout.LayoutParams import android.widget.SeekBar import android.widget.TextView -import android.widget.Toast import androidx.activity.OnBackPressedCallback import androidx.appcompat.view.ContextThemeWrapper import androidx.core.content.ContextCompat @@ -168,7 +167,6 @@ import com.nextcloud.talk.models.domain.ObjectType import com.nextcloud.talk.models.domain.ReactionAddedModel import com.nextcloud.talk.models.domain.ReactionDeletedModel import com.nextcloud.talk.models.json.chat.ChatMessage -import com.nextcloud.talk.models.json.chat.ChatOCSSingleMessage import com.nextcloud.talk.models.json.chat.ChatOverall import com.nextcloud.talk.models.json.chat.ChatOverallSingleMessage import com.nextcloud.talk.models.json.chat.ReadStatus @@ -762,12 +760,13 @@ class ChatActivity : private fun initMessageInputView() { val filters = arrayOfNulls(1) val lengthFilter = CapabilitiesUtilNew.getMessageMaxLength(conversationUser) + binding.editView.editMessageView.visibility = GONE if (editableBehaviorSubject.value!!) { val editableText = Editable.Factory.getInstance().newEditable(editMessage.message) binding.messageInputView.inputEditText.text = editableText binding.messageInputView.inputEditText.setSelection(editableText.length) - + binding.editView.editMessage.setText(editMessage.message) } filters[0] = InputFilter.LengthFilter(lengthFilter) @@ -835,7 +834,7 @@ class ChatActivity : binding.messageInputView.messageSendButton.visibility = View.GONE binding.messageInputView.recordAudioButton.visibility = View.GONE binding.messageInputView.editMessageButton.visibility = View.VISIBLE - binding.messageInputView.clearEditMessage.visibility = View.VISIBLE + binding.editView.editMessageView.visibility = View.VISIBLE } if (sharedText.isNotEmpty()) { @@ -851,13 +850,13 @@ class ChatActivity : } binding.messageInputView.editMessageButton.setOnClickListener { - if(editMessage.message == editedTextBehaviorSubject.value!!){ + if (editMessage.message == editedTextBehaviorSubject.value!!) { clearEditUI() return@setOnClickListener } editMessageAPI(editMessage, editedMessageText = editedTextBehaviorSubject.value!!) } - binding.messageInputView.clearEditMessage.setOnClickListener { + binding.editView.clearEdit.setOnClickListener { clearEditUI() } @@ -889,48 +888,33 @@ class ChatActivity : ), editedMessageText )?.subscribeOn(Schedulers.io()) ?.observeOn(AndroidSchedulers.mainThread()) - ?.subscribe(object : Observer { + ?.subscribe(object : Observer { override fun onSubscribe(d: Disposable) { // unused atm } - override fun onNext(message: ChatOCSSingleMessage) { - //unused atm - when(message.meta!!.statusCode){ - HTTP_BAD_REQUEST -> { - Toast.makeText(context, - getString(R.string.edit_error_24_hours_old_message),Toast.LENGTH_SHORT) - .show() - } - HTTP_FORBIDDEN -> { - Toast.makeText(context, - getString(R.string.conversation_is_read_only), - Toast.LENGTH_SHORT).show() - } - HTTP_NOT_FOUND -> { - Toast.makeText(context, - "Conversation Cannot be Found", - Toast.LENGTH_SHORT).show() - } - } + override fun onNext(messageEdited: ChatOverallSingleMessage) { + message.message = messageEdited.ocs?.data?.parentMessage?.text + adapter?.update(message) + adapter?.notifyDataSetChanged() + clearEditUI() } override fun onError(e: Throwable) { + } override fun onComplete() { - clearEditUI() + } }) - } private fun clearEditUI() { binding.messageInputView.editMessageButton.visibility = GONE - binding.messageInputView.clearEditMessage.visibility = View.GONE editableBehaviorSubject.onNext(false) binding.messageInputView.inputEditText.setText("") - + binding.editView.editMessageView.visibility = GONE } private fun themeMessageInputView() { @@ -1004,7 +988,7 @@ class ChatActivity : ) adapter?.setLoadMoreListener(this) - adapter?.setDateHeadersFormatter { format(it) } + adapter?.setDateHeadersFormatter {format(it)} adapter?.setOnMessageViewLongClickListener { view, message -> onMessageViewLongClick(view, message) } adapter?.registerViewClickListener( R.id.playPauseBtn @@ -3839,10 +3823,8 @@ class ChatActivity : } else if (isPollVotedMessage(currentMessage)) { // delete poll system messages chatMessageIterator.remove() - }else if(isEditMessage(currentMessage)){ - if (!chatMessageMap.containsKey(currentMessage.value.parentMessage!!.id)){ - chatMessageIterator.remove() - } + } else if (isEditMessage(currentMessage)) { + chatMessageIterator.remove() } } return chatMessageMap.values.toList() @@ -3883,7 +3865,7 @@ class ChatActivity : currentMessage.value.systemMessageType == ChatMessage.SystemMessageType.REACTION_REVOKED } - private fun isEditMessage(currentMessage:MutableMap.MutableEntry):Boolean{ + private fun isEditMessage(currentMessage: MutableMap.MutableEntry): Boolean { return currentMessage.value.parentMessage != null && currentMessage.value.systemMessageType == ChatMessage .SystemMessageType.MESSAGE_EDITED } diff --git a/app/src/main/java/com/nextcloud/talk/ui/MessageInput.kt b/app/src/main/java/com/nextcloud/talk/ui/MessageInput.kt index c66a04934..f42a657d5 100644 --- a/app/src/main/java/com/nextcloud/talk/ui/MessageInput.kt +++ b/app/src/main/java/com/nextcloud/talk/ui/MessageInput.kt @@ -44,7 +44,6 @@ class MessageInput : MessageInput { lateinit var micInputCloud: MicInputCloud lateinit var playPauseBtn: MaterialButton lateinit var editMessageButton:ImageButton - lateinit var clearEditMessage:ImageButton lateinit var seekBar: SeekBar constructor(context: Context?) : super(context) { @@ -72,7 +71,6 @@ class MessageInput : MessageInput { playPauseBtn = findViewById(R.id.playPauseBtn) seekBar = findViewById(R.id.seekbar) editMessageButton = findViewById(R.id.editMessageButton) - clearEditMessage = findViewById(R.id.clearEditButton) } var messageInput: EmojiEditText diff --git a/app/src/main/res/layout/activity_chat.xml b/app/src/main/res/layout/activity_chat.xml index d79085ec8..1ed31932f 100644 --- a/app/src/main/res/layout/activity_chat.xml +++ b/app/src/main/res/layout/activity_chat.xml @@ -140,8 +140,8 @@ android:id="@+id/messagesListView" android:layout_width="match_parent" android:layout_height="match_parent" - android:paddingBottom="20dp" android:clipToPadding="false" + android:paddingBottom="20dp" android:visibility="gone" app:dateHeaderTextSize="13sp" app:incomingBubblePaddingBottom="@dimen/message_bubble_corners_vertical_padding" @@ -170,11 +170,10 @@ app:outcomingTextSize="@dimen/chat_text_size" app:outcomingTimeTextSize="12sp" app:textAutoLink="all" - tools:visibility="visible"/> + tools:visibility="visible" /> @@ -227,9 +227,9 @@ android:id="@+id/typing_indicator_wrapper" android:layout_width="match_parent" android:layout_height="wrap_content" - android:orientation="vertical" android:layout_alignParentBottom="true" - android:layout_marginBottom="-19dp"> + android:layout_marginBottom="-19dp" + android:orientation="vertical"> - + tools:ignore="Overdraw" + tools:text="Marcel is typing"> @@ -259,12 +258,12 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> - - + + - - - - + android:text = "@string/nc_edit_message_text"> @@ -61,4 +58,3 @@ - \ No newline at end of file diff --git a/app/src/main/res/layout/view_message_input.xml b/app/src/main/res/layout/view_message_input.xml index 90573caeb..59dd049ae 100644 --- a/app/src/main/res/layout/view_message_input.xml +++ b/app/src/main/res/layout/view_message_input.xml @@ -71,7 +71,7 @@ android:layout_height="wrap_content" android:layout_below="@+id/quotedChatMessageView" android:layout_centerHorizontal="true" - android:layout_toStartOf="@id/messageSendButton" + android:layout_marginEnd = "48dp" android:layout_toEndOf="@id/smileyButton" android:imeOptions="actionDone" android:inputType="textAutoCorrect|textMultiLine|textCapSentences" @@ -253,20 +253,6 @@ tools:visibility = "visible" android:contentDescription="@string/nc_send_edit_message" /> - - Clear Edit Message Cannot Edit Messages older than 24 hours Conversation is read Only + Edit Message Text