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 674443ee6..f99d16557 100644 --- a/app/src/main/java/com/nextcloud/talk/api/NcApi.java +++ b/app/src/main/java/com/nextcloud/talk/api/NcApi.java @@ -24,6 +24,7 @@ package com.nextcloud.talk.api; import com.nextcloud.talk.models.json.capabilities.CapabilitiesOverall; +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.ChatShareOverall; @@ -96,19 +97,14 @@ public interface NcApi { */ @GET - Observable getContactsWithSearchParam(@Header("Authorization") String authorization, - @Url String url, - @Nullable @Query("shareTypes[]") List listOfShareTypes, - @QueryMap Map options); + Observable getContactsWithSearchParam(@Header("Authorization") String authorization, @Url String url, @Nullable @Query("shareTypes[]") List listOfShareTypes, @QueryMap Map options); /* Server URL is: baseUrl + ocsApiVersion + spreedApiVersion + /room */ @GET - Observable getRooms(@Header("Authorization") String authorization, - @Url String url, - @Nullable @Query("includeStatus") Boolean includeStatus); + Observable getRooms(@Header("Authorization") String authorization, @Url String url, @Nullable @Query("includeStatus") Boolean includeStatus); /* Server URL is: baseUrl + ocsApiVersion + spreedApiVersion + /room/roomToken @@ -125,9 +121,7 @@ public interface NcApi { */ @POST - Observable createRoom(@Header("Authorization") String authorization, - @Url String url, - @QueryMap Map options); + Observable createRoom(@Header("Authorization") String authorization, @Url String url, @QueryMap Map options); /* QueryMap items are as follows: @@ -138,16 +132,12 @@ public interface NcApi { @FormUrlEncoded @PUT - Observable renameRoom(@Header("Authorization") String authorization, - @Url String url, - @Field("roomName") String roomName); + Observable renameRoom(@Header("Authorization") String authorization, @Url String url, @Field("roomName") String roomName); @FormUrlEncoded @PUT - Observable setConversationDescription(@Header("Authorization") String authorization, - @Url String url, - @Field("description") String description); + Observable setConversationDescription(@Header("Authorization") String authorization, @Url String url, @Field("description") String description); /* QueryMap items are as follows: @@ -156,48 +146,32 @@ public interface NcApi { Server URL is: baseUrl + ocsApiVersion + spreedApiVersion + /room/roomToken/participants */ @POST - Observable addParticipant(@Header("Authorization") String authorization, - @Url String url, - @QueryMap Map options); + Observable addParticipant(@Header("Authorization") String authorization, @Url String url, @QueryMap Map options); @POST - Observable resendParticipantInvitations(@Header("Authorization") String authorization, - @Url String url); + Observable resendParticipantInvitations(@Header("Authorization") String authorization, @Url String url); // also used for removing a guest from a conversation @Deprecated @DELETE - Observable removeParticipantFromConversation(@Header("Authorization") String authorization, - @Url String url, - @Query("participant") String participantId); + Observable removeParticipantFromConversation(@Header("Authorization") String authorization, @Url String url, @Query("participant") String participantId); @DELETE - Observable removeAttendeeFromConversation(@Header("Authorization") String authorization, - @Url String url, - @Query("attendeeId") Long attendeeId); + Observable removeAttendeeFromConversation(@Header("Authorization") String authorization, @Url String url, @Query("attendeeId") Long attendeeId); @Deprecated @POST - Observable promoteUserToModerator(@Header("Authorization") String authorization, - @Url String url, - @Query("participant") String participantId); + Observable promoteUserToModerator(@Header("Authorization") String authorization, @Url String url, @Query("participant") String participantId); @Deprecated @DELETE - Observable demoteModeratorToUser(@Header("Authorization") String authorization, - @Url String url, - @Query("participant") String participantId); + Observable demoteModeratorToUser(@Header("Authorization") String authorization, @Url String url, @Query("participant") String participantId); @POST - Observable promoteAttendeeToModerator(@Header("Authorization") String authorization, - @Url String url, - @Query("attendeeId") Long attendeeId); + Observable promoteAttendeeToModerator(@Header("Authorization") String authorization, @Url String url, @Query("attendeeId") Long attendeeId); @DELETE - Observable demoteAttendeeFromModerator(@Header("Authorization") String authorization, - @Url String url, - @Query("attendeeId") Long attendeeId); + Observable demoteAttendeeFromModerator(@Header("Authorization") String authorization, @Url String url, @Query("attendeeId") Long attendeeId); /* Server URL is: baseUrl + ocsApiVersion + spreedApiVersion + /room/roomToken/participants/self @@ -228,15 +202,11 @@ public interface NcApi { Observable getPeersForCall(@Header("Authorization") String authorization, @Url String url); @GET - Observable getPeersForCall(@Header("Authorization") String authorization, - @Url String url, - @QueryMap Map fields); + Observable getPeersForCall(@Header("Authorization") String authorization, @Url String url, @QueryMap Map fields); @FormUrlEncoded @POST - Observable joinRoom(@Nullable @Header("Authorization") String authorization, - @Url String url, - @Nullable @Field("password") String password); + Observable joinRoom(@Nullable @Header("Authorization") String authorization, @Url String url, @Nullable @Field("password") String password); @DELETE Observable leaveRoom(@Nullable @Header("Authorization") String authorization, @Url String url); @@ -247,11 +217,7 @@ public interface NcApi { @FormUrlEncoded @POST - Observable joinCall(@Nullable @Header("Authorization") String authorization, - @Url String url, - @Field("flags") Integer inCall, - @Field("silent") Boolean callWithoutNotification, - @Nullable @Field("recordingConsent") Boolean recordingConsent); + Observable joinCall(@Nullable @Header("Authorization") String authorization, @Url String url, @Field("flags") Integer inCall, @Field("silent") Boolean callWithoutNotification, @Nullable @Field("recordingConsent") Boolean recordingConsent); /* Server URL is: baseUrl + ocsApiVersion + spreedApiVersion + /call/callToken @@ -260,8 +226,7 @@ public interface NcApi { Observable leaveCall(@Nullable @Header("Authorization") String authorization, @Url String url); @GET - Observable getSignalingSettings(@Nullable @Header("Authorization") String authorization, - @Url String url); + Observable getSignalingSettings(@Nullable @Header("Authorization") String authorization, @Url String url); /* QueryMap items are as follows: @@ -271,16 +236,13 @@ public interface NcApi { */ @FormUrlEncoded @POST - Observable sendSignalingMessages(@Nullable @Header("Authorization") String authorization, - @Url String url, - @Field("messages") String messages); + Observable sendSignalingMessages(@Nullable @Header("Authorization") String authorization, @Url String url, @Field("messages") String messages); /* Server URL is: baseUrl + ocsApiVersion + spreedApiVersion + /signaling */ @GET - Observable pullSignalingMessages(@Nullable @Header("Authorization") String authorization, - @Url String url); + Observable pullSignalingMessages(@Nullable @Header("Authorization") String authorization, @Url String url); /* QueryMap items are as follows: @@ -298,11 +260,7 @@ public interface NcApi { @FormUrlEncoded @PUT - Observable setUserData(@Header("Authorization") String authorization, - @Url String url, - @Field("key") String key, - @Field("value") String value); - + Observable setUserData(@Header("Authorization") String authorization, @Url String url, @Field("key") String key, @Field("value") String value); /* Server URL is: baseUrl + /status.php @@ -322,21 +280,14 @@ public interface NcApi { */ @POST - Observable registerDeviceForNotificationsWithNextcloud( - @Header("Authorization") String authorization, - @Url String url, - @QueryMap Map options); + Observable registerDeviceForNotificationsWithNextcloud(@Header("Authorization") String authorization, @Url String url, @QueryMap Map options); @DELETE - Observable unregisterDeviceForNotificationsWithNextcloud( - @Header("Authorization") String authorization, - @Url String url); + Observable unregisterDeviceForNotificationsWithNextcloud(@Header("Authorization") String authorization, @Url String url); @FormUrlEncoded @POST - Observable registerDeviceForNotificationsWithPushProxy(@Url String url, - @FieldMap Map fields); - + Observable registerDeviceForNotificationsWithPushProxy(@Url String url, @FieldMap Map fields); /* QueryMap items are as follows: @@ -345,20 +296,15 @@ public interface NcApi { - "userPublicKey": "{{userPublicKey}}" */ @DELETE - Observable unregisterDeviceForNotificationsWithProxy(@Url String url, - @QueryMap Map fields); + Observable unregisterDeviceForNotificationsWithProxy(@Url String url, @QueryMap Map fields); @FormUrlEncoded @PUT - Observable setPassword(@Header("Authorization") String authorization, - @Url String url, - @Field("password") String password); + Observable setPassword(@Header("Authorization") String authorization, @Url String url, @Field("password") String password); @FormUrlEncoded @PUT - Observable> setPassword2(@Header("Authorization") String authorization, - @Url String url, - @Field("password") String password); + Observable> setPassword2(@Header("Authorization") String authorization, @Url String url, @Field("password") String password); @GET Observable getCapabilities(@Header("Authorization") String authorization, @Url String url); @@ -374,9 +320,7 @@ public interface NcApi { - "lastKnownMessageId", int, use one from X-Chat-Last-Given */ @GET - Observable> pullChatMessages(@Header("Authorization") String authorization, - @Url String url, - @QueryMap Map fields); + Observable> pullChatMessages(@Header("Authorization") String authorization, @Url String url, @QueryMap Map fields); /* Fieldmap items are as follows: @@ -386,107 +330,68 @@ public interface NcApi { @FormUrlEncoded @POST - Observable sendChatMessage(@Header("Authorization") String authorization, - @Url String url, - @Field("message") CharSequence message, - @Field("actorDisplayName") String actorDisplayName, - @Field("replyTo") Integer replyTo, - @Field("silent") Boolean sendWithoutNotification); + Observable sendChatMessage(@Header("Authorization") String authorization, @Url String url, @Field("message") CharSequence message, @Field("actorDisplayName") String actorDisplayName, @Field("replyTo") Integer replyTo, @Field("silent") Boolean sendWithoutNotification); + + @PUT + 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); + Observable> getSharedItems(@Header("Authorization") String authorization, @Url String url, @Query("objectType") String objectType, @Nullable @Query("lastKnownMessageId") Integer lastKnownMessageId, @Nullable @Query("limit") Integer limit); @GET - Observable> getSharedItemsOverview(@Header("Authorization") String authorization, - @Url String url, - @Nullable @Query("limit") Integer limit); + Observable> getSharedItemsOverview(@Header("Authorization") String authorization, @Url String url, @Nullable @Query("limit") Integer limit); @GET - Observable getMentionAutocompleteSuggestions(@Header("Authorization") String authorization, - @Url String url, - @Query("search") String query, - @Nullable @Query("limit") Integer limit, - @QueryMap Map fields); + Observable getMentionAutocompleteSuggestions(@Header("Authorization") String authorization, @Url String url, @Query("search") String query, @Nullable @Query("limit") Integer limit, @QueryMap Map fields); // Url is: /api/{apiVersion}/room/{token}/pin @POST - Observable addConversationToFavorites(@Header("Authorization") String authorization, - @Url String url); + Observable addConversationToFavorites(@Header("Authorization") String authorization, @Url String url); // Url is: /api/{apiVersion}/room/{token}/favorites @DELETE - Observable removeConversationFromFavorites(@Header("Authorization") String authorization, - @Url String url); + Observable removeConversationFromFavorites(@Header("Authorization") String authorization, @Url String url); @GET - Observable getNcNotification(@Header("Authorization") String authorization, - @Url String url); + Observable getNcNotification(@Header("Authorization") String authorization, @Url String url); @FormUrlEncoded @POST - Observable setNotificationLevel(@Header("Authorization") String authorization, - @Url String url, - @Field("level") int level); + Observable setNotificationLevel(@Header("Authorization") String authorization, @Url String url, @Field("level") int level); @FormUrlEncoded @PUT - Observable setReadOnlyState(@Header("Authorization") String authorization, - @Url String url, - @Field("state") int state); + Observable setReadOnlyState(@Header("Authorization") String authorization, @Url String url, @Field("state") int state); @FormUrlEncoded @POST - Observable createRemoteShare(@Nullable @Header("Authorization") String authorization, - @Url String url, - @Field("path") String remotePath, - @Field("shareWith") String roomToken, - @Field("shareType") String shareType, - @Field("talkMetaData") String talkMetaData); + Observable createRemoteShare(@Nullable @Header("Authorization") String authorization, @Url String url, @Field("path") String remotePath, @Field("shareWith") String roomToken, @Field("shareType") String shareType, @Field("talkMetaData") String talkMetaData); @FormUrlEncoded @PUT - Observable setLobbyForConversation(@Header("Authorization") String authorization, - @Url String url, - @Field("state") Integer state, - @Field("timer") Long timer); + Observable setLobbyForConversation(@Header("Authorization") String authorization, @Url String url, @Field("state") Integer state, @Field("timer") Long timer); @POST - Observable setReadStatusPrivacy(@Header("Authorization") String authorization, - @Url String url, - @Body RequestBody body); + Observable setReadStatusPrivacy(@Header("Authorization") String authorization, @Url String url, @Body RequestBody body); @POST - Observable setTypingStatusPrivacy(@Header("Authorization") String authorization, - @Url String url, - @Body RequestBody body); + Observable setTypingStatusPrivacy(@Header("Authorization") String authorization, @Url String url, @Body RequestBody body); @POST - Observable searchContactsByPhoneNumber(@Header("Authorization") String authorization, - @Url String url, - @Body RequestBody search); + Observable searchContactsByPhoneNumber(@Header("Authorization") String authorization, @Url String url, @Body RequestBody search); @PUT - Observable> uploadFile(@Header("Authorization") String authorization, - @Url String url, - @Body RequestBody body); + Observable> uploadFile(@Header("Authorization") String authorization, @Url String url, @Body RequestBody body); @HEAD - Observable> checkIfFileExists(@Header("Authorization") String authorization, - @Url String url); + Observable> checkIfFileExists(@Header("Authorization") String authorization, @Url String url); @GET - Call downloadFile(@Header("Authorization") String authorization, - @Url String url); + Call downloadFile(@Header("Authorization") String authorization, @Url String url); @DELETE - Observable deleteChatMessage(@Header("Authorization") String authorization, - @Url String url); + Observable deleteChatMessage(@Header("Authorization") String authorization, @Url String url); @DELETE Observable deleteAvatar(@Header("Authorization") String authorization, @Url String url); @@ -497,40 +402,28 @@ public interface NcApi { @Multipart @POST - Observable uploadAvatar(@Header("Authorization") String authorization, - @Url String url, - @Part MultipartBody.Part attachment); + Observable uploadAvatar(@Header("Authorization") String authorization, @Url String url, @Part MultipartBody.Part attachment); @Multipart @POST - Observable uploadConversationAvatar(@Header("Authorization") String authorization, - @Url String url, - @Part MultipartBody.Part attachment); + Observable uploadConversationAvatar(@Header("Authorization") String authorization, @Url String url, @Part MultipartBody.Part attachment); @GET - Observable getEditableUserProfileFields(@Header("Authorization") String authorization, - @Url String url); + Observable getEditableUserProfileFields(@Header("Authorization") String authorization, @Url String url); @GET - Call downloadResizedImage(@Header("Authorization") String authorization, - @Url String url); + Call downloadResizedImage(@Header("Authorization") String authorization, @Url String url); @FormUrlEncoded @POST - Observable sendLocation(@Header("Authorization") String authorization, - @Url String url, - @Field("objectType") String objectType, - @Field("objectId") String objectId, - @Field("metaData") String metaData); + Observable sendLocation(@Header("Authorization") String authorization, @Url String url, @Field("objectType") String objectType, @Field("objectId") String objectId, @Field("metaData") String metaData); @DELETE Observable clearChatHistory(@Header("Authorization") String authorization, @Url String url); @FormUrlEncoded @POST - Observable notificationCalls(@Header("Authorization") String authorization, - @Url String url, - @Field("level") Integer level); + Observable notificationCalls(@Header("Authorization") String authorization, @Url String url, @Field("level") Integer level); @GET Observable hoverCard(@Header("Authorization") String authorization, @Url String url); @@ -538,9 +431,7 @@ public interface NcApi { // Url is: /api/{apiVersion}/chat/{token}/read @FormUrlEncoded @POST - Observable setChatReadMarker(@Header("Authorization") String authorization, - @Url String url, - @Field("lastReadMessage") int lastReadMessage); + Observable setChatReadMarker(@Header("Authorization") String authorization, @Url String url, @Field("lastReadMessage") int lastReadMessage); // Url is: /api/{apiVersion}/chat/{token}/read @DELETE @@ -568,100 +459,62 @@ public interface NcApi { @FormUrlEncoded @PUT - Observable setPredefinedStatusMessage(@Header("Authorization") String authorization, - @Url String url, - @Field("messageId") String selectedPredefinedMessageId, - @Field("clearAt") Long clearAt); + Observable setPredefinedStatusMessage(@Header("Authorization") String authorization, @Url String url, @Field("messageId") String selectedPredefinedMessageId, @Field("clearAt") Long clearAt); @FormUrlEncoded @PUT - Observable setCustomStatusMessage(@Header("Authorization") String authorization, - @Url String url, - @Field("statusIcon") String statusIcon, - @Field("message") String message, - @Field("clearAt") Long clearAt); + Observable setCustomStatusMessage(@Header("Authorization") String authorization, @Url String url, @Field("statusIcon") String statusIcon, @Field("message") String message, @Field("clearAt") Long clearAt); @FormUrlEncoded @PUT - Observable setStatusType(@Header("Authorization") String authorization, - @Url String url, - @Field("statusType") String statusType); + Observable setStatusType(@Header("Authorization") String authorization, @Url String url, @Field("statusType") String statusType); @POST - Observable sendReaction(@Header("Authorization") String authorization, - @Url String url, - @Query("reaction") String reaction); + Observable sendReaction(@Header("Authorization") String authorization, @Url String url, @Query("reaction") String reaction); @DELETE - Observable deleteReaction(@Header("Authorization") String authorization, - @Url String url, - @Query("reaction") String reaction); + Observable deleteReaction(@Header("Authorization") String authorization, @Url String url, @Query("reaction") String reaction); @GET - Observable getReactions(@Header("Authorization") String authorization, - @Url String url, - @Query("reaction") String reaction); + Observable getReactions(@Header("Authorization") String authorization, @Url String url, @Query("reaction") String reaction); @GET - Observable performUnifiedSearch(@Header("Authorization") String authorization, - @Url String url, - @Query("term") String term, - @Query("from") String fromUrl, - @Query("limit") Integer limit, - @Query("cursor") Integer cursor); + Observable performUnifiedSearch(@Header("Authorization") String authorization, @Url String url, @Query("term") String term, @Query("from") String fromUrl, @Query("limit") Integer limit, @Query("cursor") Integer cursor); @GET - Observable getPoll(@Header("Authorization") String authorization, - @Url String url); + Observable getPoll(@Header("Authorization") String authorization, @Url String url); @FormUrlEncoded @POST - Observable createPoll(@Header("Authorization") String authorization, - @Url String url, - @Query("question") String question, - @Field("options[]") List options, - @Query("resultMode") Integer resultMode, - @Query("maxVotes") Integer maxVotes); + Observable createPoll(@Header("Authorization") String authorization, @Url String url, @Query("question") String question, @Field("options[]") List options, @Query("resultMode") Integer resultMode, @Query("maxVotes") Integer maxVotes); @FormUrlEncoded @POST - Observable votePoll(@Header("Authorization") String authorization, - @Url String url, - @Field("optionIds[]") List optionIds); + Observable votePoll(@Header("Authorization") String authorization, @Url String url, @Field("optionIds[]") List optionIds); @DELETE - Observable closePoll(@Header("Authorization") String authorization, - @Url String url); + Observable closePoll(@Header("Authorization") String authorization, @Url String url); @FormUrlEncoded @POST - Observable setMessageExpiration(@Header("Authorization") String authorization, - @Url String url, - @Field("seconds") Integer seconds); + Observable setMessageExpiration(@Header("Authorization") String authorization, @Url String url, @Field("seconds") Integer seconds); @GET - Observable getOpenGraph(@Header("Authorization") String authorization, - @Url String url, - @Query("reference") String urlToFindPreviewFor); + Observable getOpenGraph(@Header("Authorization") String authorization, @Url String url, @Query("reference") String urlToFindPreviewFor); @FormUrlEncoded @POST - Observable startRecording(@Header("Authorization") String authorization, - @Url String url, - @Field("status") Integer status); + Observable startRecording(@Header("Authorization") String authorization, @Url String url, @Field("status") Integer status); @DELETE - Observable stopRecording(@Header("Authorization") String authorization, - @Url String url); + Observable stopRecording(@Header("Authorization") String authorization, @Url String url); @POST - Observable requestAssistance(@Header("Authorization") String authorization, - @Url String url); + Observable requestAssistance(@Header("Authorization") String authorization, @Url String url); @DELETE - Observable withdrawRequestAssistance(@Header("Authorization") String authorization, - @Url String url); + Observable withdrawRequestAssistance(@Header("Authorization") String authorization, @Url String url); @POST Observable sendCommonPostRequest(@Header("Authorization") String authorization, @Url String url); @@ -671,33 +524,22 @@ public interface NcApi { @POST - Observable translateMessage(@Header("Authorization") String authorization, - @Url String url, - @Query("text") String text, - @Query("toLanguage") String toLanguage, - @Nullable @Query("fromLanguage") String fromLanguage); + Observable translateMessage(@Header("Authorization") String authorization, @Url String url, @Query("text") String text, @Query("toLanguage") String toLanguage, @Nullable @Query("fromLanguage") String fromLanguage); @GET - Observable getLanguages(@Header("Authorization") String authorization, - @Url String url); + Observable getLanguages(@Header("Authorization") String authorization, @Url String url); @GET - Observable getReminder(@Header("Authorization") String authorization, - @Url String url); + Observable getReminder(@Header("Authorization") String authorization, @Url String url); @DELETE - Observable deleteReminder(@Header("Authorization") String authorization, - @Url String url); + Observable deleteReminder(@Header("Authorization") String authorization, @Url String url); @FormUrlEncoded @POST - Observable setReminder(@Header("Authorization") String authorization, - @Url String url, - @Field("timestamp") int timestamp); + Observable setReminder(@Header("Authorization") String authorization, @Url String url, @Field("timestamp") int timestamp); @FormUrlEncoded @PUT - Observable setRecordingConsent(@Header("Authorization") String authorization, - @Url String url, - @Field("recordingConsent") int recordingConsent); + Observable setRecordingConsent(@Header("Authorization") String authorization, @Url String url, @Field("recordingConsent") int recordingConsent); } 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 3ace986ef..1e6e3d594 100644 --- a/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt @@ -4534,6 +4534,9 @@ class ChatActivity : startActivity(shareIntent) } + fun editMessage(message: ChatMessage) { + } + companion object { private val TAG = ChatActivity::class.simpleName private const val CONTENT_TYPE_CALL_STARTED: Byte = 1 diff --git a/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt b/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt index 7414a36ae..af44b342e 100644 --- a/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt +++ b/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt @@ -108,6 +108,7 @@ class MessageActionsDialog( hasUserActorId(message) && currentConversation?.type != ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL ) + initMenuEditMessage(CapabilitiesUtilNew.hasSpreedFeatureCapability(user, "edit-messages")) initMenuDeleteMessage(showMessageDeletionButton) initMenuForwardMessage( ChatMessage.MessageType.REGULAR_TEXT_MESSAGE == message.getCalculateMessageType() && @@ -293,6 +294,15 @@ class MessageActionsDialog( dialogMessageActionsBinding.menuDeleteMessage.visibility = getVisibility(visible) } + private fun initMenuEditMessage(visible: Boolean) { + dialogMessageActionsBinding.menuEditMessage.setOnClickListener { + chatActivity.editMessage(message) + dismiss() + } + + dialogMessageActionsBinding.menuEditMessage.visibility = getVisibility(visible) + } + private fun initMenuReplyPrivately(visible: Boolean) { if (visible) { dialogMessageActionsBinding.menuReplyPrivately.setOnClickListener { diff --git a/app/src/main/res/layout/dialog_message_actions.xml b/app/src/main/res/layout/dialog_message_actions.xml index 7b201b247..04e0815c3 100644 --- a/app/src/main/res/layout/dialog_message_actions.xml +++ b/app/src/main/res/layout/dialog_message_actions.xml @@ -160,6 +160,40 @@ + + + + + + + + + Caption Retrieval failed Languages could not be retrieved + Edit Message Icon + Edit message