diff --git a/ui/app/AppLayouts/Chat/popups/community/CommunitiesPopup.qml b/ui/app/AppLayouts/Chat/popups/community/CommunitiesPopup.qml deleted file mode 100644 index f65b0ee647..0000000000 --- a/ui/app/AppLayouts/Chat/popups/community/CommunitiesPopup.qml +++ /dev/null @@ -1,157 +0,0 @@ -import QtQuick 2.12 -import QtQuick.Controls 2.3 -import QtQuick.Layouts 1.3 - -import StatusQ.Core 0.1 -import StatusQ.Core.Theme 0.1 -import StatusQ.Controls 0.1 -import StatusQ.Components 0.1 -import StatusQ.Popups 0.1 - -import utils 1.0 -import shared 1.0 - -StatusModal { - id: popup - - property var communitiesList - signal setActiveCommunity(string id) - signal setObservedCommunity(string id) - signal openCommunityDetail() - signal importCommunityClicked() - signal createCommunityClicked() - - onOpened: { - contentItem.searchBox.input.text = ""; - contentItem.searchBox.input.forceActiveFocus(Qt.MouseFocusReason) - } - - header.title: qsTr("Communities") - headerActionButton: StatusFlatRoundButton { - type: StatusFlatRoundButton.Type.Secondary - width: 32 - height: 32 - icon.name: "more" - - onClicked: contextMenu.popup(-contextMenu.width+width, height + 4) - - StatusMenu { - id: contextMenu - width: 230 - StatusAction { - icon.name: "download" - text: qsTr("Access existing community") - onTriggered: { - popup.importCommunityClicked(); - } - } - } - } - - contentItem: Item { - Column { - id: contentItem - anchors.horizontalCenter: parent.horizontalCenter - property alias searchBox: searchBox - - Item { - height: 8 - width: parent.width - } - - StatusInput { - id: searchBox - anchors.horizontalCenter: parent.horizontalCenter - placeholderText: qsTr("Search for communities or topics") - input.asset.name: "search" - } - - StatusModalDivider { topPadding: 8 } - - StatusScrollView { - width: parent.width - ScrollBar.horizontal.policy: ScrollBar.AlwaysOff - topPadding: 8 - bottomPadding: 8 - height: 400 - - StatusListView { - anchors.fill: parent - model: communitiesDelegateModel - spacing: 4 - id: communitiesList - - section.property: "name" - section.criteria: ViewSection.FirstCharacter - section.delegate: Column { - - StatusBaseText { - anchors.left: parent.left - anchors.leftMargin: 16 - text: section.toUpperCase() - font.pixelSize: 15 - font.weight: Font.Medium - color: Theme.palette.directColor1 - } - - StatusModalDivider { - bottomPadding: 8 - } - } - } - - DelegateModelGeneralized { - id: communitiesDelegateModel - lessThan: [ - function(left, right) { - return left.name.toLowerCase() < right.name.toLowerCase() - } - ] - - model: popup.communitiesList - delegate: StatusListItem { - visible: { - if (!searchBox.input.text) { - return true - } - const lowerCaseSearchStr = searchBox.input.text.toLowerCase() - return model.name.toLowerCase().includes(lowerCaseSearchStr) || model.description.toLowerCase().includes(lowerCaseSearchStr) - } - height: visible ? implicitHeight : 0 - anchors.horizontalCenter: parent.horizontalCenter - title: model.name - subTitle: model.description - tertiaryTitle: qsTr("%n member(s)", "", model.members.count) - statusListItemTitle.font.weight: Font.Bold - statusListItemTitle.font.pixelSize: 17 - asset.name: model.image - asset.isImage: !!model.image - asset.isLetterIdenticon: !model.image - asset.bgColor: model.color || Theme.palette.primaryColor1 - - onClicked: { - if (model.joined && model.isMember) { - popup.setActiveCommunity(model.id); - } else { - popup.setObservedCommunity(model.id); - popup.openCommunityDetail(); - } - popup.close() - } - } - } - } - } - } - - rightButtons: [ - StatusButton { - text: qsTr("Create a community") - onClicked: { - popup.createCommunityClicked(); - popup.close() - } - } - ] -} - diff --git a/ui/app/AppLayouts/Chat/popups/community/CommunityDetailPopup.qml b/ui/app/AppLayouts/Chat/popups/community/CommunityDetailPopup.qml deleted file mode 100644 index 450850e15d..0000000000 --- a/ui/app/AppLayouts/Chat/popups/community/CommunityDetailPopup.qml +++ /dev/null @@ -1,217 +0,0 @@ -import QtQuick 2.12 -import QtQuick.Controls 2.3 -import QtQuick.Dialogs 1.3 - -import StatusQ.Core 0.1 -import StatusQ.Core.Theme 0.1 -import StatusQ.Components 0.1 -import StatusQ.Controls 0.1 -import StatusQ.Popups 0.1 - -import utils 1.0 - -StatusModal { - id: root - - property var store - property QtObject community: root.store.communitiesModuleInst.observedCommunity - property string communityId: community.id - property string name: community.name - property string description: community.description - property int access: community.access - property string source: community.image - property int nbMembers: community.members.count - property bool ensOnly: community.ensOnly - property bool canJoin: community.canJoin - property bool canRequestAccess: community.canRequestAccess - property bool isMember: community.isMember - property string communityColor: community.color || Style.current.blue - - header.title: name - header.subTitle: { - let subTitle = "" - switch(access) { - case Constants.communityChatPublicAccess: - subTitle = qsTr("Public community"); - break; - case Constants.communityChatInvitationOnlyAccess: - subTitle = qsTr("Invitation only community"); - break; - case Constants.communityChatOnRequestAccess: - subTitle = qsTr("On request community"); - break; - default: - subTitle = qsTr("Unknown community"); - break; - } - if (ensOnly) { - subTitle += qsTr(" - ENS only") - } - return subTitle - } - - contentItem: Column { - width: root.width - - Item { - height: childrenRect.height + 8 - width: parent.width - 32 - anchors.horizontalCenter: parent.horizontalCenter - - StatusBaseText { - id: description - anchors.top: parent.top - anchors.topMargin: 16 - text: root.description - font.pixelSize: 15 - color: Theme.palette.directColor1 - wrapMode: Text.WordWrap - width: parent.width - textFormat: Text.PlainText - } - - StatusIcon { - id: statusIcon - anchors.top: description.bottom - anchors.topMargin: 16 - anchors.left: parent.left - icon: "tiny/contact" - width: 16 - color: Theme.palette.directColor1 - } - - StatusBaseText { - text: qsTr("%n member(s)", "", nbMembers) - font.pixelSize: 15 - font.weight: Font.Medium - color: Theme.palette.directColor1 - anchors.left: statusIcon.right - anchors.leftMargin: 2 - anchors.verticalCenter: statusIcon.verticalCenter - } - } - - StatusModalDivider { - topPadding: 8 - bottomPadding: 8 - } - - Item { - anchors.horizontalCenter: parent.horizontalCenter - width: parent.width - 32 - height: 34 - StatusBaseText { - text: qsTr("Channels") - anchors.bottom: parent.bottom - anchors.bottomMargin: 4 - font.pixelSize: 15 - color: Theme.palette.baseColor1 - } - } - - StatusScrollView { - width: root.width - height: 300 - ScrollBar.horizontal.policy: ScrollBar.AlwaysOff - - StatusListView { - id: chatList - anchors.fill: parent - model: community.chats - delegate: StatusListItem { - anchors.horizontalCenter: parent.horizontalCenter - title: "#" + model.name - subTitle: model.description - asset.isLetterIdenticon: true - asset.bgColor: root.communityColor - } - } - } - } - - - leftButtons: [ - StatusBackButton { - id: backButton - onClicked: { - root.close() - } - } - ] - - rightButtons: [ - StatusButton { - property bool isPendingRequest: { - if (access !== Constants.communityChatOnRequestAccess) { - return false - } - return false - // Not Refactored Yet -// return root.store.chatsModelInst.communities.isCommunityRequestPending(root.communityId) - } - text: { - // Not Refactored Yet -// if (root.ensOnly && !root.store.profileModelInst.profile.ensVerified) { -// return qsTr("Membership requires an ENS username") -// } - if (root.canJoin) { - return qsTr("Join ‘%1’").arg(root.name); - } - if (isPendingRequest) { - return qsTr("Pending") - } - switch(root.access) { - case Constants.communityChatPublicAccess: return qsTr("Join ‘%1’").arg(root.name); - case Constants.communityChatInvitationOnlyAccess: return qsTr("You need to be invited"); - case Constants.communityChatOnRequestAccess: return qsTr("Request to join ‘%1’").arg(root.name); - default: return qsTr("Unknown community"); - } - } - enabled: { - // Not Refactored Yet -// if (root.ensOnly && !root.store.profileModelInst.profile.ensVerified) { -// return false -// } - if (root.access === Constants.communityChatInvitationOnlyAccess || isPendingRequest) { - return false - } - if (canJoin) { - return true - } - return true - } - onClicked: { - // Not Refactored Yet - let error - if (access === Constants.communityChatOnRequestAccess && - !root.community.amISectionAdmin - && !root.isMember) { - // TODO refactor - return - // error = root.store.chatsModelInst.communities.requestToJoinCommunity(root.communityId, userProfile.name) - // if (!error) { - // enabled = false - // text = qsTr("Pending") - // } - } else { - error = root.store.communitiesModuleInst.requestToJoinCommunity(root.communityId, root.store.userProfileInst.preferredName) - } - - if (error) { - joiningError.text = error - return joiningError.open() - } - - root.close() - } - } - ] - - MessageDialog { - id: joiningError - title: qsTr("Error joining the community") - icon: StandardIcon.Critical - standardButtons: StandardButton.Ok - } -} - diff --git a/ui/app/AppLayouts/Chat/views/ContactsColumnView.qml b/ui/app/AppLayouts/Chat/views/ContactsColumnView.qml index ac1b088c4a..7573bd89d4 100644 --- a/ui/app/AppLayouts/Chat/views/ContactsColumnView.qml +++ b/ui/app/AppLayouts/Chat/views/ContactsColumnView.qml @@ -223,44 +223,6 @@ Item { } } - Component { - id: communitiesPopupComponent - CommunitiesPopup { - anchors.centerIn: parent - communitiesList: root.store.communitiesList - onSetActiveCommunity: { - root.store.setActiveCommunity(id) - } - onSetObservedCommunity: { - root.store.setObservedCommunity(id) - } - onClosed: { - destroy() - } - onOpenCommunityDetail: { - Global.openPopup(communityDetailPopup); - } - onImportCommunityClicked: { - root.importCommunityClicked(); - } - onCreateCommunityClicked: { - root.createCommunityClicked(); - } - } - } - - Component { - id: communityDetailPopup - CommunityDetailPopup { - anchors.centerIn: parent - store: root.store - onClosed: { - Global.openPopup(communitiesPopupComponent) - destroy() - } - } - } - Connections { target: root.store