mirror of
https://github.com/status-im/status-desktop.git
synced 2025-02-03 18:25:33 +00:00
03691ba4b1
The create a group chat related objects have been updated according to new qml changes. Now these tests are working (if they don't work it is bc of mailserver reliability).
175 lines
6.5 KiB
QML
175 lines
6.5 KiB
QML
import QtQuick 2.12
|
|
import QtQuick.Controls 2.12
|
|
import QtQuick.Layouts 1.12
|
|
import QtQml.Models 2.2
|
|
import QtGraphicalEffects 1.0
|
|
|
|
import StatusQ.Controls 0.1
|
|
import StatusQ.Components 0.1
|
|
import StatusQ.Core 0.1
|
|
import StatusQ.Core.Theme 0.1
|
|
|
|
import utils 1.0
|
|
import shared.status 1.0
|
|
import shared.controls.delegates 1.0
|
|
|
|
Page {
|
|
id: root
|
|
|
|
property var rootStore
|
|
property var emojiPopup: null
|
|
|
|
padding: 0
|
|
|
|
Behavior on opacity { NumberAnimation {}}
|
|
Behavior on anchors.bottomMargin { NumberAnimation { duration: 30 }}
|
|
|
|
background: Rectangle {
|
|
anchors.fill: parent
|
|
color: Theme.palette.statusAppLayout.rightPanelBackgroundColor
|
|
}
|
|
|
|
header: Item {
|
|
implicitHeight: headerLayout.implicitHeight + headerLayout.anchors.topMargin + headerLayout.anchors.bottomMargin
|
|
RowLayout {
|
|
id: headerLayout
|
|
anchors.fill: parent
|
|
MembersSelectorView {
|
|
id: membersSelector
|
|
Layout.fillWidth: true
|
|
Layout.fillHeight: true
|
|
Layout.leftMargin: Style.current.halfPadding
|
|
Layout.rightMargin: Style.current.halfPadding
|
|
rootStore: root.rootStore
|
|
|
|
function createChat() {
|
|
if (model.count === 0) {
|
|
console.warn("Can't create chat with no members")
|
|
return
|
|
}
|
|
if (model.count === 1) {
|
|
const member = model.get(0)
|
|
const ensName = member.displayName.includes(".eth") ? member.displayName : ""
|
|
root.rootStore.chatCommunitySectionModule.createOneToOneChat("", member.pubKey, ensName)
|
|
} else {
|
|
var groupName = "";
|
|
var pubKeys = [];
|
|
for (var i = 0; i < model.count; i++) {
|
|
const member = model.get(i)
|
|
groupName += (member.displayName + (i === model.count - 1 ? "" : "&"))
|
|
pubKeys.push(member.pubKey)
|
|
}
|
|
root.rootStore.chatCommunitySectionModule.createGroupChat("", groupName, JSON.stringify(pubKeys))
|
|
}
|
|
}
|
|
|
|
onConfirmed: {
|
|
root.rootStore.createChatInitMessage = chatInput.textInput.text
|
|
root.rootStore.createChatFileUrls = chatInput.fileUrls
|
|
createChat()
|
|
|
|
cleanup()
|
|
chatInput.textInput.clear()
|
|
}
|
|
|
|
onRejected: {
|
|
cleanup()
|
|
Global.closeCreateChatView()
|
|
}
|
|
|
|
onVisibleChanged: {
|
|
if (visible)
|
|
edit.forceActiveFocus()
|
|
}
|
|
}
|
|
|
|
StatusActivityCenterButton {
|
|
Layout.alignment: Qt.AlignVCenter
|
|
unreadNotificationsCount: root.rootStore.unreadNotificationsCount
|
|
onClicked: Global.openActivityCenterPopup()
|
|
}
|
|
}
|
|
}
|
|
|
|
contentItem: Item {
|
|
ColumnLayout {
|
|
anchors {
|
|
fill: parent
|
|
topMargin: Style.current.bigPadding
|
|
bottomMargin: Style.current.padding
|
|
leftMargin: Style.current.halfPadding
|
|
}
|
|
|
|
StatusBaseText {
|
|
Layout.alignment: Qt.AlignTop
|
|
Layout.leftMargin: Style.current.halfPadding
|
|
visible: contactsList.visible
|
|
font.pixelSize: 15
|
|
text: qsTr("Contacts")
|
|
color: Theme.palette.baseColor1
|
|
}
|
|
|
|
StatusListView {
|
|
id: contactsList
|
|
objectName: "createChatContactsList"
|
|
|
|
Layout.fillWidth: true
|
|
Layout.fillHeight: true
|
|
|
|
visible: membersSelector.suggestionsModel.count &&
|
|
!(membersSelector.edit.text !== "")
|
|
implicitWidth: contentItem.childrenRect.width
|
|
model: membersSelector.suggestionsModel
|
|
delegate: ContactListItemDelegate {
|
|
width: ListView.view.width
|
|
onClicked: membersSelector.entryAccepted(this)
|
|
}
|
|
}
|
|
|
|
StatusChatInput {
|
|
id: chatInput
|
|
Layout.alignment: Qt.AlignBottom
|
|
Layout.fillWidth: true
|
|
visible: membersSelector.model.count > 0
|
|
chatType: membersSelector.model.count === 1? Constants.chatType.oneToOne : Constants.chatType.privateGroupChat
|
|
emojiPopup: root.emojiPopup
|
|
recentStickers: root.rootStore.stickersModuleInst.recent
|
|
stickerPackList: root.rootStore.stickersModuleInst.stickerPacks
|
|
closeGifPopupAfterSelection: true
|
|
onSendTransactionCommandButtonClicked: {
|
|
root.rootStore.createChatStartSendTransactionProcess = true;
|
|
root.createChat();
|
|
}
|
|
onReceiveTransactionCommandButtonClicked: {
|
|
root.rootStore.createChatStartReceiveTransactionProcess = true;
|
|
root.createChat();
|
|
}
|
|
onStickerSelected: {
|
|
root.rootStore.createChatStickerHashId = hashId;
|
|
root.rootStore.createChatStickerPackId = packId;
|
|
root.rootStore.createChatStickerUrl = url;
|
|
root.createChat();
|
|
}
|
|
onSendMessage: {
|
|
root.rootStore.createChatFileUrls = chatInput.fileUrls;
|
|
root.rootStore.createChatInitMessage = chatInput.textInput.text;
|
|
root.createChat();
|
|
}
|
|
}
|
|
}
|
|
|
|
StatusBaseText {
|
|
anchors.centerIn: parent
|
|
width: Math.min(553, parent.width - 2 * Style.current.padding)
|
|
visible: root.rootStore.contactsModel.count === 0
|
|
horizontalAlignment: Text.AlignHCenter
|
|
verticalAlignment: Text.AlignVCenter
|
|
wrapMode: Text.WordWrap
|
|
font.pixelSize: 15
|
|
color: Theme.palette.baseColor1
|
|
text: qsTr("You can only send direct messages to your Contacts.\n
|
|
Send a contact request to the person you would like to chat with, you will be able to chat with them once they have accepted your contact request.")
|
|
}
|
|
}
|
|
}
|