mirror of
https://github.com/status-im/status-desktop.git
synced 2025-01-24 05:21:58 +00:00
9e70e69faf
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.
119 lines
3.6 KiB
QML
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()
|
|
}
|
|
}
|
|
}
|
|
}
|