status-desktop/ui/app/AppLayouts/Chat/views/ChatContentView.qml
Jonathan Rainville 9e70e69faf
fix(mentions): fix wrong user list given to mentions model (#16656)
Fixes #16602

This was broken when we refactored the members to use a single model for public channels. Those public channels then didn't have any members in their model they used for suggestions.
This is fixed by putting the logic in the UsersStore and reusing that store whenever we need a list of the members.
2024-10-30 15:02:46 -04:00

119 lines
3.6 KiB
QML

import QtQuick 2.15
import QtQml 2.15
import QtQuick.Controls 2.15
import QtQuick.Layouts 1.15
import StatusQ.Core.Theme 0.1
import StatusQ.Core.Utils 0.1 as StatusQUtils
import StatusQ.Components 0.1
import StatusQ.Controls 0.1
import utils 1.0
import shared 1.0
import shared.stores 1.0 as SharedStores
import shared.popups 1.0
import shared.status 1.0
import shared.controls 1.0
import shared.views.chat 1.0
import AppLayouts.Profile.stores 1.0
import "../helpers"
import "../controls"
import "../popups"
import "../panels"
import "../../Wallet"
import "../stores"
ColumnLayout {
id: root
// Important: each chat/channel has its own ChatContentModule
property var chatContentModule
property var chatSectionModule
property SharedStores.RootStore sharedRootStore
property SharedStores.UtilsStore utilsStore
property RootStore rootStore
property ContactsStore contactsStore
property string chatId
property int chatType: Constants.chatType.unknown
readonly property alias chatMessagesLoader: chatMessagesLoader
property var emojiPopup
property var stickersPopup
property UsersStore usersStore: UsersStore {
chatCommunitySectionModule: root.rootStore.chatCommunitySectionModule
}
signal openStickerPackPopup(string stickerPackId)
property bool isBlocked: false
property bool isUserAllowedToSendMessage: root.rootStore.isUserAllowedToSendMessage
property bool stickersLoaded: false
readonly property MessageStore messageStore: MessageStore {
messageModule: chatContentModule ? chatContentModule.messagesModule : null
chatSectionModule: root.rootStore.chatCommunitySectionModule
}
property bool sendViaPersonalChatEnabled
signal showReplyArea(messageId: string)
signal forceInputFocus()
objectName: "chatContentViewColumn"
spacing: 0
onChatContentModuleChanged: if (!!chatContentModule) {
root.usersStore.chatDetails = root.chatContentModule.chatDetails
root.usersStore.usersModule = root.chatContentModule.usersModule
}
Loader {
Layout.fillWidth: true
active: root.isBlocked
visible: active
sourceComponent: StatusBanner {
type: StatusBanner.Type.Danger
statusText: qsTr("Blocked")
}
}
Loader {
id: chatMessagesLoader
Layout.fillWidth: true
Layout.fillHeight: true
sourceComponent: ChatMessagesView {
chatContentModule: root.chatContentModule
sharedRootStore: root.sharedRootStore
utilsStore: root.utilsStore
rootStore: root.rootStore
contactsStore: root.contactsStore
messageStore: root.messageStore
emojiPopup: root.emojiPopup
stickersPopup: root.stickersPopup
usersStore: root.usersStore
stickersLoaded: root.stickersLoaded
chatId: root.chatId
isOneToOne: root.chatType === Constants.chatType.oneToOne
isChatBlocked: root.isBlocked || !root.isUserAllowedToSendMessage
channelEmoji: !chatContentModule ? "" : (chatContentModule.chatDetails.emoji || "")
sendViaPersonalChatEnabled: root.sendViaPersonalChatEnabled
onShowReplyArea: (messageId, senderId) => {
root.showReplyArea(messageId)
}
onOpenStickerPackPopup: {
root.openStickerPackPopup(stickerPackId);
}
onEditModeChanged: {
if (!editModeOn)
root.forceInputFocus()
}
}
}
}