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")