import QtQuick 2.15 import QtQuick.Controls 2.15 import StatusQ.Core.Theme 0.1 import AppLayouts.Chat.panels.communities 1.0 import AppLayouts.Chat.controls.community 1.0 import utils 1.0 import SortFilterProxyModel 0.2 import Storybook 1.0 import Models 1.0 SplitView { orientation: Qt.Vertical SplitView.fillWidth: true property bool globalUtilsReady: false property bool mainModuleReady: false Logs { id: logs } QtObject { function isCompressedPubKey(publicKey) { return true } function getCompressedPk(publicKey) { return "compressed_" + publicKey } function getColorId(publicKey) { return Math.floor(Math.random() * 10) } Component.onCompleted: { Utils.globalUtilsInst = this globalUtilsReady = true } Component.onDestruction: { globalUtilsReady = false Utils.globalUtilsInst = {} } } QtObject { function getContactDetailsAsJson() { return JSON.stringify({ ensVerified: true }) } Component.onCompleted: { mainModuleReady = true Utils.mainModuleInst = this } Component.onDestruction: { mainModuleReady = false Utils.mainModuleInst = {} } } Rectangle { SplitView.fillWidth: true SplitView.fillHeight: true color: Theme.palette.statusAppLayout.rightPanelBackgroundColor Loader { anchors.fill: parent active: globalUtilsReady && mainModuleReady sourceComponent: CommunityAirdropsSettingsPanel { id: communityAirdropsSettingsPanel anchors.fill: parent anchors.topMargin: 50 assetsModel: AssetsModel {} collectiblesModel: ListModel {} CollectiblesModel { id: collectiblesModel } SortFilterProxyModel { id: collectiblesModelWithSupply sourceModel: collectiblesModel proxyRoles: [ ExpressionRole { name: "supply" expression: ((model.index + 1) * 115).toString() }, ExpressionRole { name: "infiniteSupply" expression: !(model.index % 4) }, ExpressionRole { name: "chainName" expression: model.index ? "Optimism" : "Arbitrum" }, ExpressionRole { readonly property string icon1: "network/Network=Optimism" readonly property string icon2: "network/Network=Arbitrum" name: "chainIcon" expression: model.index ? icon1 : icon2 } ] filters: ValueFilter { roleName: "category" value: TokenCategories.Category.Community } Component.onCompleted: { Qt.callLater(() => communityAirdropsSettingsPanel.collectiblesModel = this) } } AssetsModel { id: assetsModel } SortFilterProxyModel { id: assetsModelWithSupply sourceModel: assetsModel proxyRoles: [ ExpressionRole { name: "supply" expression: ((model.index + 1) * 258).toString() }, ExpressionRole { name: "infiniteSupply" expression: !(model.index % 4) }, ExpressionRole { name: "chainName" expression: model.index ? "Ethereum Mainnet" : "Goerli" }, ExpressionRole { readonly property string icon1: "network/Network=Ethereum" readonly property string icon2: "network/Network=Testnet" name: "chainIcon" expression: model.index ? icon1 : icon2 } ] filters: ValueFilter { roleName: "category" value: TokenCategories.Category.Community } Component.onCompleted: { Qt.callLater(() => communityAirdropsSettingsPanel.assetsModel = this) } } membersModel: UsersModel {} onAirdropClicked: logs.logEvent("CommunityAirdropsSettingsPanel::onAirdropClicked") } } } LogsAndControlsPanel { id: logsAndControlsPanel SplitView.minimumHeight: 100 SplitView.preferredHeight: 150 logsView.logText: logs.logText } }