From 890e0aa2bdb2afe37a298db9cf119cebb1a95bbd Mon Sep 17 00:00:00 2001 From: Mikhail Rogachev Date: Tue, 9 May 2023 14:31:50 +0400 Subject: [PATCH] fix(Chat): Reuse chat root store connections and fix chat quick actions when blocked (#10577) Close #10570 --- .../Chat/popups/PinnedMessagesPopup.qml | 20 ++----------------- .../AppLayouts/Chat/views/ChatColumnView.qml | 20 +++---------------- .../views/chat/MessageContextMenuView.qml | 2 +- ui/imports/shared/views/chat/MessageView.qml | 3 +++ 4 files changed, 9 insertions(+), 36 deletions(-) diff --git a/ui/app/AppLayouts/Chat/popups/PinnedMessagesPopup.qml b/ui/app/AppLayouts/Chat/popups/PinnedMessagesPopup.qml index d66c6babde..faa7cec5cb 100644 --- a/ui/app/AppLayouts/Chat/popups/PinnedMessagesPopup.qml +++ b/ui/app/AppLayouts/Chat/popups/PinnedMessagesPopup.qml @@ -22,24 +22,8 @@ StatusDialog { property string messageToUnpin property string chatId - property bool isPinActionAvaliable: true - - function updatePinActionAvaliable() { - const contactDetails = chatId ? Utils.getContactDetailsAsJson(chatId, false) : null - isPinActionAvaliable = contactDetails ? contactDetails.isContact : true - } - - Connections { - target: root.store.contactsStore.myContactsModel - - function onItemChanged(pubKey) { - if (chatId === pubKey) { - updatePinActionAvaliable() - } - } - } - - Component.onCompleted: updatePinActionAvaliable() + readonly property var contactDetails: store ? store.oneToOneChatContact : null + readonly property bool isPinActionAvaliable: contactDetails ? contactDetails.isContact : true width: 800 height: 428 diff --git a/ui/app/AppLayouts/Chat/views/ChatColumnView.qml b/ui/app/AppLayouts/Chat/views/ChatColumnView.qml index d856f0ec2a..c4e7b1aece 100644 --- a/ui/app/AppLayouts/Chat/views/ChatColumnView.qml +++ b/ui/app/AppLayouts/Chat/views/ChatColumnView.qml @@ -36,8 +36,9 @@ Item { property int chatsCount: parentModule && parentModule.model ? parentModule.model.count : 0 property int activeChatType: parentModule && parentModule.activeItem.type property bool stickersLoaded: false - property var contactDetails: null - property bool isUserAdded: root.contactDetails && root.contactDetails.isAdded + + readonly property var contactDetails: rootStore ? rootStore.oneToOneChatContact : null + readonly property bool isUserAdded: root.contactDetails && root.contactDetails.isAdded signal openAppSearch() signal openStickerPackPopup(string stickerPackId) @@ -97,21 +98,6 @@ Item { root.createChatPropertiesStore.resetProperties() } - function updateContactDetails() { - contactDetails = activeChatType === Constants.chatType.oneToOne && Utils.getContactDetailsAsJson(root.activeChatId, false) - } - - onActiveChatIdChanged: root.updateContactDetails() - - Connections { - target: root.contactsStore.myContactsModel - - function onItemChanged(pubKey) { - if (pubKey === root.activeChatId) - root.updateContactDetails() - } - } - EmptyChatPanel { anchors.fill: parent visible: root.activeChatId === "" || root.chatsCount == 0 diff --git a/ui/imports/shared/views/chat/MessageContextMenuView.qml b/ui/imports/shared/views/chat/MessageContextMenuView.qml index 23263d8852..cbda80f558 100644 --- a/ui/imports/shared/views/chat/MessageContextMenuView.qml +++ b/ui/imports/shared/views/chat/MessageContextMenuView.qml @@ -41,7 +41,7 @@ StatusMenu { property bool isRightClickOnImage: false property bool pinnedPopup: false property bool pinMessageAllowedForMembers: false - property bool isDebugEnabled: store.isDebugEnabled + property bool isDebugEnabled: store && store.isDebugEnabled property bool isEmoji: false property bool isSticker: false property bool hideEmojiPicker: true diff --git a/ui/imports/shared/views/chat/MessageView.qml b/ui/imports/shared/views/chat/MessageView.qml index 3f12c11ea9..7d520ffc3c 100644 --- a/ui/imports/shared/views/chat/MessageView.qml +++ b/ui/imports/shared/views/chat/MessageView.qml @@ -494,6 +494,7 @@ Loader { topPadding: showHeader ? Style.current.halfPadding : 0 bottomPadding: showHeader && d.nextMessageHasHeader() ? Style.current.halfPadding : 2 disableHover: root.disableHover || + delegate.hideQuickActions || (root.chatLogView && root.chatLogView.moving) || (root.messageContextMenu && root.messageContextMenu.opened) || Global.popupOpened @@ -864,6 +865,8 @@ Loader { return false; if (!root.messageStore) return false; + if (delegate.hideQuickActions) + return false; return (root.amISender || root.amIChatAdmin) && (messageContentType === Constants.messageContentType.messageType || messageContentType === Constants.messageContentType.stickerType ||