From bcd0216fcab2c5feb87e6287fb04689c5995ced3 Mon Sep 17 00:00:00 2001
From: sowjanyakch <sowjanya.kch@gmail.com>
Date: Wed, 23 Apr 2025 10:08:00 +0200
Subject: [PATCH] passing note to self room token to MessageActionsDialog

Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
---
 .../com/nextcloud/talk/chat/ChatActivity.kt   | 36 ++++++++++++++++-
 .../talk/ui/dialog/MessageActionsDialog.kt    | 39 ++++---------------
 .../nextcloud/talk/utils/CapabilitiesUtil.kt  |  3 +-
 3 files changed, 45 insertions(+), 33 deletions(-)

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 bd3816542..1f02c33f8 100644
--- a/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt
+++ b/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt
@@ -256,6 +256,8 @@ class ChatActivity :
     lateinit var chatViewModel: ChatViewModel
     lateinit var messageInputViewModel: MessageInputViewModel
 
+    private var noteToSelfRoomToken: String = ""
+
     private val startSelectContactForResult = registerForActivityResult(
         ActivityResultContracts
             .StartActivityForResult()
@@ -434,6 +436,24 @@ class ChatActivity :
 
         onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
 
+        val apiVersion = ApiUtils.getConversationApiVersion(
+            conversationUser!!,
+            intArrayOf(
+                ApiUtils.API_V4,
+                ApiUtils
+                    .API_V3,
+                1
+            )
+        )
+        chatViewModel.checkForNoteToSelf(
+            ApiUtils.getCredentials(conversationUser?.username, conversationUser?.token)!!,
+            ApiUtils.getUrlForRooms(
+                apiVersion,
+                conversationUser?.baseUrl
+            ),
+            false
+        )
+
         initObservers()
 
         pickMultipleMedia = registerForActivityResult(
@@ -769,6 +789,19 @@ class ChatActivity :
             }
         }
 
+        chatViewModel.getNoteToSelfAvailability.observe(this) { state ->
+            when (state) {
+                is ChatViewModel.NoteToSelfAvailableState -> {
+                    this.lifecycleScope.launch {
+                        noteToSelfRoomToken = state.roomToken
+                    }
+                }
+                else -> {
+                    noteToSelfRoomToken = ""
+                }
+            }
+        }
+
         chatViewModel.chatMessageViewState.observe(this) { state ->
             when (state) {
                 is ChatViewModel.ChatMessageStartState -> {
@@ -3126,7 +3159,8 @@ class ChatActivity :
                 currentConversation,
                 isShowMessageDeletionButton(message),
                 participantPermissions.hasChatPermission(),
-                spreedCapabilities
+                spreedCapabilities,
+                noteToSelfRoomToken
             ).show()
         }
     }
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 f0c003d39..a409a0e43 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
@@ -25,7 +25,6 @@ import com.nextcloud.talk.R
 import com.nextcloud.talk.application.NextcloudTalkApplication
 import com.nextcloud.talk.chat.ChatActivity
 import com.nextcloud.talk.chat.data.model.ChatMessage
-import com.nextcloud.talk.chat.viewmodels.ChatViewModel
 import com.nextcloud.talk.data.network.NetworkMonitor
 import com.nextcloud.talk.data.user.model.User
 import com.nextcloud.talk.databinding.DialogMessageActionsBinding
@@ -36,10 +35,8 @@ import com.nextcloud.talk.models.json.capabilities.SpreedCapability
 import com.nextcloud.talk.models.json.conversations.ConversationEnums
 import com.nextcloud.talk.repositories.reactions.ReactionsRepository
 import com.nextcloud.talk.ui.theme.ViewThemeUtils
-import com.nextcloud.talk.utils.ApiUtils
 import com.nextcloud.talk.utils.CapabilitiesUtil
 import com.nextcloud.talk.utils.CapabilitiesUtil.hasSpreedFeatureCapability
-import com.nextcloud.talk.utils.ConversationUtils
 import com.nextcloud.talk.utils.DateConstants
 import com.nextcloud.talk.utils.DateUtils
 import com.nextcloud.talk.utils.SpreedFeatures
@@ -63,7 +60,8 @@ class MessageActionsDialog(
     private val currentConversation: ConversationModel?,
     private val showMessageDeletionButton: Boolean,
     private val hasChatPermission: Boolean,
-    private val spreedCapabilities: SpreedCapability
+    private val spreedCapabilities: SpreedCapability,
+    private val noteToSelfRoomToken: String
 ) : BottomSheetDialog(chatActivity) {
 
     @Inject
@@ -123,34 +121,13 @@ class MessageActionsDialog(
         viewThemeUtils.material.colorBottomSheetDragHandle(dialogMessageActionsBinding.bottomSheetDragHandle)
         initEmojiBar(hasChatPermission)
         initMenuItemCopy(!message.isDeleted)
-        val apiVersion = ApiUtils.getConversationApiVersion(user!!, intArrayOf(ApiUtils.API_V4, ApiUtils.API_V3, 1))
-        chatActivity.chatViewModel.checkForNoteToSelf(
-            ApiUtils.getCredentials(user.username, user.token)!!,
-            ApiUtils.getUrlForRooms(
-                apiVersion,
-                user.baseUrl
-            ),
-            false
+
+        initMenuAddToNote(
+            networkMonitor.isOnline.value &&
+                !message.isDeleted &&
+                currentConversation?.type != ConversationEnums.ConversationType.NOTE_TO_SELF,
+            noteToSelfRoomToken
         )
-        chatActivity.chatViewModel.getNoteToSelfAvailability.observe(this) { state ->
-            when (state) {
-                is ChatViewModel.NoteToSelfAvailableState -> {
-                    this.lifecycleScope.launch {
-                        initMenuAddToNote(
-                            !message.isDeleted &&
-                                !ConversationUtils.isNoteToSelfConversation(currentConversation) &&
-                                networkMonitor.isOnline.value,
-                            state.roomToken
-                        )
-                    }
-                }
-                else -> {
-                    initMenuAddToNote(
-                        false
-                    )
-                }
-            }
-        }
 
         initMenuItems(networkMonitor.isOnline.value)
     }
diff --git a/app/src/main/java/com/nextcloud/talk/utils/CapabilitiesUtil.kt b/app/src/main/java/com/nextcloud/talk/utils/CapabilitiesUtil.kt
index 8ed61b5c7..2ec1cd9bb 100644
--- a/app/src/main/java/com/nextcloud/talk/utils/CapabilitiesUtil.kt
+++ b/app/src/main/java/com/nextcloud/talk/utils/CapabilitiesUtil.kt
@@ -57,7 +57,8 @@ enum class SpreedFeatures(val value: String) {
     BAN_V1("ban-v1"),
     EDIT_MESSAGES_NOTE_TO_SELF("edit-messages-note-to-self"),
     ARCHIVE_CONVERSATIONS("archived-conversations-v2"),
-    CONVERSATION_CREATION_ALL("conversation-creation-all")
+    CONVERSATION_CREATION_ALL("conversation-creation-all"),
+    NOTE_TO_SELF("note-to-self")
 }
 
 @Suppress("TooManyFunctions")