diff --git a/ui/app/AppLayouts/Chat/popups/PinnedMessagesPopup.qml b/ui/app/AppLayouts/Chat/popups/PinnedMessagesPopup.qml index d122a9aa42..b39b1a07ce 100644 --- a/ui/app/AppLayouts/Chat/popups/PinnedMessagesPopup.qml +++ b/ui/app/AppLayouts/Chat/popups/PinnedMessagesPopup.qml @@ -20,6 +20,26 @@ StatusDialog { property var pinnedMessagesModel //this doesn't belong to the messageStore, it is a part of the ChatContentStore, but we didn't introduce it yet. property string messageToPin property string messageToUnpin + property string chatId + + property bool isChatBlocked: false + + function updateIsChatBlocked() { + const contactDetails = Utils.getContactDetailsAsJson(chatId, false) + isChatBlocked = contactDetails && !contactDetails.isContact + } + + Connections { + target: root.store.contactsStore.myContactsModel + + function onItemChanged(pubKey) { + if (chatId === pubKey) { + updateIsChatBlocked() + } + } + } + + Component.onCompleted: updateIsChatBlocked() width: 800 height: 428 @@ -101,9 +121,9 @@ StatusDialog { // This is possible since we have all data loaded before we load qml. // When we fetch messages to fulfill a gap we have to set them at once. prevMessageIndex: index - 1 - prevMessageAsJsonObj: root.messageStore? root.messageStore.getMessageByIndexAsJson(index - 1) : {} + prevMessageAsJsonObj: root.messageStore ? root.messageStore.getMessageByIndexAsJson(index - 1) : {} nextMessageIndex: index + 1 - nextMessageAsJsonObj: root.messageStore? root.messageStore.getMessageByIndexAsJson(index + 1) : {} + nextMessageAsJsonObj: root.messageStore ? root.messageStore.getMessageByIndexAsJson(index + 1) : {} // Additional params isInPinnedPopup: true @@ -136,7 +156,7 @@ StatusDialog { z: mouseArea.z + 1 width: 32 height: 32 - visible: !root.messageToPin && (hovered || mouseArea.containsMouse) + visible: !root.isChatBlocked && !root.messageToPin && (hovered || mouseArea.containsMouse) icon.name: "unpin" tooltip.text: qsTr("Unpin") color: hovered ? Theme.palette.primaryColor2 : Theme.palette.indirectColor1 diff --git a/ui/app/AppLayouts/Chat/views/ChatContentView.qml b/ui/app/AppLayouts/Chat/views/ChatContentView.qml index 9f55aeba9f..36d62c9e75 100644 --- a/ui/app/AppLayouts/Chat/views/ChatContentView.qml +++ b/ui/app/AppLayouts/Chat/views/ChatContentView.qml @@ -101,7 +101,7 @@ ColumnLayout { console.warn("error on open pinned messages limit reached from message context menu - chat content module is not set") return } - Global.openPinnedMessagesPopupRequested(rootStore, messageStore, chatContentModule.pinnedMessagesModel, messageId) + Global.openPinnedMessagesPopupRequested(rootStore, messageStore, chatContentModule.pinnedMessagesModel, messageId, chatContentModule.getMyChatId()) } onToggleReaction: { diff --git a/ui/app/AppLayouts/Chat/views/ChatHeaderContentView.qml b/ui/app/AppLayouts/Chat/views/ChatHeaderContentView.qml index 0eef24a9cb..c25915afd6 100644 --- a/ui/app/AppLayouts/Chat/views/ChatHeaderContentView.qml +++ b/ui/app/AppLayouts/Chat/views/ChatHeaderContentView.qml @@ -302,7 +302,7 @@ Item { console.warn("error on open pinned messages - chat content module is not set") return } - Global.openPinnedMessagesPopupRequested(rootStore, messageStore, chatContentModule.pinnedMessagesModel, "") + Global.openPinnedMessagesPopupRequested(rootStore, messageStore, chatContentModule.pinnedMessagesModel, "", chatContentModule.chatDetails.id) } onUnmute: { if(!chatContentModule) { diff --git a/ui/app/mainui/Popups.qml b/ui/app/mainui/Popups.qml index 81cff2e5e5..f5188f50ca 100644 --- a/ui/app/mainui/Popups.qml +++ b/ui/app/mainui/Popups.qml @@ -168,9 +168,14 @@ QtObject { openPopup(sendContactRequestPopupComponent, popupProperties, cb) } - function openPinnedMessagesPopup(store, messageStore, pinnedMessagesModel, messageToPin) { - openPopup(pinnedMessagesPopup, { store: store, messageStore: messageStore, - pinnedMessagesModel: pinnedMessagesModel, messageToPin: messageToPin}) + function openPinnedMessagesPopup(store, messageStore, pinnedMessagesModel, messageToPin, chatId) { + openPopup(pinnedMessagesPopup, { + store: store, + messageStore: messageStore, + pinnedMessagesModel: pinnedMessagesModel, + messageToPin: messageToPin, + chatId: chatId + }) } function openCommunityPopup(store, community, chatCommunitySectionModule) { diff --git a/ui/imports/shared/views/chat/MessageView.qml b/ui/imports/shared/views/chat/MessageView.qml index eae2beafc1..26d6707617 100644 --- a/ui/imports/shared/views/chat/MessageView.qml +++ b/ui/imports/shared/views/chat/MessageView.qml @@ -814,7 +814,7 @@ Loader { return; } - Global.openPinnedMessagesPopupRequested(root.rootStore, messageStore, chatContentModule.pinnedMessagesModel, root.messageId) + Global.openPinnedMessagesPopupRequested(root.rootStore, messageStore, chatContentModule.pinnedMessagesModel, root.messageId, root.messageStore.getChatId()) } } }, diff --git a/ui/imports/utils/Global.qml b/ui/imports/utils/Global.qml index 3ee15253c2..600af19509 100644 --- a/ui/imports/utils/Global.qml +++ b/ui/imports/utils/Global.qml @@ -13,7 +13,7 @@ QtObject { property var userProfile property bool appIsReady: false - signal openPinnedMessagesPopupRequested(var store, var messageStore, var pinnedMessagesModel, string messageToPin) + signal openPinnedMessagesPopupRequested(var store, var messageStore, var pinnedMessagesModel, string messageToPin, string chatId) signal openCommunityProfilePopupRequested(var store, var community, var chatCommunitySectionModule) signal openLinkInBrowser(string link)