status-desktop/ui/app/AppLayouts/Communities/popups/InviteFriendsToCommunityPop...

110 lines
3.1 KiB
QML

import QtQuick 2.14
import QtQuick.Layouts 1.4
import StatusQ.Controls 0.1
import StatusQ.Components 0.1
import StatusQ.Popups 0.1
import utils 1.0
import shared.panels 1.0
import AppLayouts.Communities.panels 1.0
import AppLayouts.stores 1.0 as AppLayoutStores
import AppLayouts.Profile.stores 1.0 as ProfileStores
StatusStackModal {
id: root
property AppLayoutStores.RootStore rootStore
property ProfileStores.ContactsStore contactsStore
property var community
property var communitySectionModule
property var pubKeys: ([])
property string inviteMessage: ""
property string validationError: ""
property string successMessage: ""
QtObject {
id: d
// values from Figma design
readonly property int footerButtonsHeight: 44
readonly property int popupContentHeight: 551
function shareCommunity(pubKeys, inviteMessage) {
const error = root.communitySectionModule.shareCommunityToUsers(JSON.stringify(pubKeys), inviteMessage);
d.processInviteResult(error);
}
function processInviteResult(error) {
if (error) {
console.error('Error inviting', error);
root.validationError = error;
} else {
root.validationError = "";
root.successMessage = qsTr("Invite successfully sent");
}
}
}
onOpened: {
root.pubKeys = [];
root.successMessage = "";
root.validationError = "";
}
stackTitle: qsTr("Invite Contacts to %1").arg(community.name)
width: 640
height: d.popupContentHeight
leftPadding: 0
rightPadding: 0
nextButton: StatusButton {
objectName: "InviteFriendsToCommunityPopup_NextButton"
implicitHeight: d.footerButtonsHeight
text: qsTr("Next")
enabled: root.pubKeys.length
onClicked: {
root.currentIndex++;
}
}
finishButton: StatusButton {
objectName: "InviteFriendsToCommunityPopup_SendButton"
implicitHeight: d.footerButtonsHeight
enabled: root.pubKeys.length > 0
text: qsTr("Send %n invite(s)", "", root.pubKeys.length)
onClicked: {
d.shareCommunity(root.pubKeys, root.inviteMessage);
root.close();
}
}
subHeaderItem: StyledText {
text: root.validationError || root.successMessage
visible: root.validationError !== "" || root.successMessage !== ""
font.pixelSize: 13
color: !!root.validationError ? Style.current.danger : Style.current.success
horizontalAlignment: Text.AlignHCenter
height: visible ? contentHeight : 0
}
stackItems: [
ProfilePopupInviteFriendsPanel {
rootStore: root.rootStore
contactsStore: root.contactsStore
community: root.community
onPubKeysChanged: root.pubKeys = pubKeys
},
ProfilePopupInviteMessagePanel {
contactsStore: root.contactsStore
pubKeys: root.pubKeys
onInviteMessageChanged: root.inviteMessage = inviteMessage
}
]
}