import QtQuick 2.15 import QtQuick.Controls 2.15 import QtQuick.Layouts 1.15 import Qt.labs.settings 1.0 import StatusQ.Core.Theme 0.1 import mainui.activitycenter.views 1.0 import mainui.activitycenter.stores 1.0 import AppLayouts.Chat.stores 1.0 as ChatStores import utils 1.0 import Storybook 1.0 SplitView { id: root property bool utilsReady: false orientation: Qt.Vertical Logs { id: logs } Item { id: wrapper SplitView.fillHeight: true SplitView.fillWidth: true Loader { active: root.utilsReady anchors.centerIn: parent width: parent.width - 50 height: 80 sourceComponent : ActivityNotificationCommunityMembershipRequest { store: storeMock notification: notificationMock } } } LogsAndControlsPanel { SplitView.minimumHeight: 100 SplitView.preferredHeight: 160 logsView.logText: logs.logText ColumnLayout { anchors.top: parent.top anchors.left: parent.left anchors.right: parent.right Label { text: "Request state" } ComboBox { id: stateSelector textRole: "text" valueRole: "value" model: ListModel { id: model ListElement { text: "Pending"; value: 1 } // ActivityCenterStore.ActivityCenterMembershipStatus.Pending } ListElement { text: "Accepted"; value: 2 } //ActivityCenterStore.ActivityCenterMembershipStatus.Accepted } ListElement { text: "Declined"; value: 3 } //ActivityCenterStore.ActivityCenterMembershipStatus.Declined } ListElement { text: "AcceptedPending"; value: 4 } //ActivityCenterStore.ActivityCenterMembershipStatus.AcceptedPending } ListElement { text: "DeclinedPending"; value: 5 } //ActivityCenterStore.ActivityCenterMembershipStatus.DeclinedPending } } } } } QtObject { id: utilsMock function getContactDetailsAsJson(arg1, arg2) { return JSON.stringify({ displayName: "Mock user", displayIcon: Theme.png("tokens/AST"), publicKey: 123456789, name: "", ensVerified: false, alias: "", lastUpdated: 0, lastUpdatedLocally: 0, localNickname: "", thumbnailImage: "", largeImage: "", isContact: false, isAdded: false, isBlocked: false, requestReceived: false, isSyncing: false, removed: false, trustStatus: Constants.trustStatus.unknown, verificationStatus: Constants.verificationStatus.unverified, }) } function isCompressedPubKey(key) { return true } function getColorId(publicKey) { return 1 } function isEnsVerified(publicKey) { return true } Component.onCompleted: { Utils.mainModuleInst = this Utils.globalUtilsInst = this root.utilsReady = true } Component.onDestruction: { root.utilsReady = false Utils.mainModuleInst = {} Utils.globalUtilsInst = {} } } ChatStores.RootStore { id: storeMock function getCommunityDetailsAsJson(community) { return { name : "Mock Community", image : Theme.png("tokens/UNI"), color : "orchid" } } function acceptRequestToJoinCommunity(notificationId, communityId) { stateSelector.currentIndex = stateSelector.indexOfValue(ActivityCenterStore.ActivityCenterMembershipStatus.AcceptedPending) } function declineRequestToJoinCommunity(notificationId, communityId) { stateSelector.currentIndex = stateSelector.indexOfValue(ActivityCenterStore.ActivityCenterMembershipStatus.DeclinedPending) } property var contactsStore: QtObject { property var myContactsModel: QtObject { signal itemChanged(string pubKey) } } } QtObject { id: notificationMock property string id: "1" property string chatId: "1" property string communityId: "1" property int membershipStatus: stateSelector.currentValue property int verificationStatus: 1 property string sectionId: "1" property string name: "name" property string author: "author" property int notificationType: 1 property var message: QtObject { property bool amISender: false } property int timestamp: Date.now() property int previousTimestamp: 0 property bool read: false property bool dismissed: false property bool accepted: false property var repliedMessage: ({}) property int chatType: 1 } Settings { property alias activityNotificationRequestState: stateSelector.currentIndex } } // category: Activity Center // https://www.figma.com/file/17fc13UBFvInrLgNUKJJg5/Kuba⎜Desktop?type=design&node-id=35909-606817&mode=design&t=Ia7Z0AzyYIjkuPtr-0