2021-10-01 15:58:36 +00:00
|
|
|
import QtQuick 2.13
|
|
|
|
|
2022-08-01 17:04:23 +00:00
|
|
|
import utils 1.0
|
|
|
|
|
2024-04-01 14:24:18 +00:00
|
|
|
import StatusQ 0.1
|
2024-10-15 19:26:12 +00:00
|
|
|
import StatusQ.Core.Theme 0.1
|
2024-04-01 14:24:18 +00:00
|
|
|
|
2023-07-21 17:21:11 +00:00
|
|
|
import SortFilterProxyModel 0.2
|
2024-05-22 08:13:39 +00:00
|
|
|
import AppLayouts.Profile.stores 1.0 as ProfileStores
|
2023-07-21 17:21:11 +00:00
|
|
|
import AppLayouts.Wallet.stores 1.0 as WalletStore
|
2023-07-31 15:56:00 +00:00
|
|
|
|
2021-10-01 15:58:36 +00:00
|
|
|
QtObject {
|
|
|
|
id: root
|
2022-07-01 11:24:32 +00:00
|
|
|
|
2021-11-22 11:08:09 +00:00
|
|
|
property var mainModuleInst: mainModule
|
2023-08-23 11:46:04 +00:00
|
|
|
property var walletSectionInst: walletSection
|
2021-12-20 18:21:21 +00:00
|
|
|
property var aboutModuleInst: aboutModule
|
2022-01-05 15:11:26 +00:00
|
|
|
property var communitiesModuleInst: communitiesModule
|
2022-03-03 21:00:52 +00:00
|
|
|
property bool newVersionAvailable: false
|
2023-08-22 18:04:58 +00:00
|
|
|
readonly property bool requirementsCheckPending: communitiesModuleInst.requirementsCheckPending
|
2024-05-16 09:28:06 +00:00
|
|
|
readonly property bool checkingPermissionToJoinInProgress: communitiesModuleInst.checkingPermissionToJoinInProgress
|
|
|
|
readonly property bool joinPermissionsCheckCompletedWithoutErrors: communitiesModuleInst.joinPermissionsCheckCompletedWithoutErrors
|
2024-04-25 09:47:40 +00:00
|
|
|
readonly property bool channelsPermissionsCheckSuccessful: communitiesModuleInst.channelsPermissionsCheckSuccessful
|
2022-03-03 21:00:52 +00:00
|
|
|
property string latestVersion
|
|
|
|
property string downloadURL
|
|
|
|
|
2023-07-21 17:21:11 +00:00
|
|
|
readonly property int loginType: getLoginType()
|
|
|
|
function getLoginType() {
|
2024-10-15 09:31:46 +00:00
|
|
|
if(!d.userProfileInst)
|
2023-07-21 17:21:11 +00:00
|
|
|
return Constants.LoginType.Password
|
|
|
|
|
2024-10-15 09:31:46 +00:00
|
|
|
if(d.userProfileInst.usingBiometricLogin)
|
2023-07-21 17:21:11 +00:00
|
|
|
return Constants.LoginType.Biometrics
|
2024-10-15 09:31:46 +00:00
|
|
|
if(d.userProfileInst.isKeycardUser)
|
2023-07-21 17:21:11 +00:00
|
|
|
return Constants.LoginType.Keycard
|
|
|
|
return Constants.LoginType.Password
|
|
|
|
}
|
|
|
|
|
2023-08-03 11:00:11 +00:00
|
|
|
function prepareTokenModelForCommunity(publicKey) {
|
|
|
|
root.communitiesModuleInst.prepareTokenModelForCommunity(publicKey)
|
|
|
|
}
|
|
|
|
|
|
|
|
property string communityKeyToImport
|
|
|
|
|
2023-08-21 18:54:57 +00:00
|
|
|
readonly property var permissionsModel: !!root.communitiesModuleInst.spectatedCommunityPermissionModel ?
|
2023-08-03 11:00:11 +00:00
|
|
|
root.communitiesModuleInst.spectatedCommunityPermissionModel : null
|
2023-08-24 20:36:38 +00:00
|
|
|
|
|
|
|
readonly property var myRevealedAddressesForCurrentCommunity: {
|
|
|
|
try {
|
|
|
|
let revealedAddresses = root.communitiesModuleInst.myRevealedAddressesStringForCurrentCommunity
|
|
|
|
let revealedAddressArray = JSON.parse(revealedAddresses)
|
|
|
|
return revealedAddressArray.map(addr => addr.toLowerCase())
|
|
|
|
} catch (e) {
|
|
|
|
console.error("Error parsing my revealed addresses", e)
|
|
|
|
}
|
|
|
|
return []
|
|
|
|
}
|
|
|
|
readonly property string myRevealedAirdropAddressForCurrentCommunity:
|
|
|
|
root.communitiesModuleInst.myRevealedAirdropAddressForCurrentCommunity.toLowerCase()
|
|
|
|
|
2023-08-29 15:28:41 +00:00
|
|
|
property var walletAccountsModel: WalletStore.RootStore.nonWatchAccounts
|
2024-02-15 09:25:40 +00:00
|
|
|
|
|
|
|
readonly property var globalAssetsModel: SortFilterProxyModel {
|
2023-07-21 17:21:11 +00:00
|
|
|
sourceModel: communitiesModuleInst.tokenList
|
2024-02-15 09:25:40 +00:00
|
|
|
|
2024-04-01 14:24:18 +00:00
|
|
|
proxyRoles: FastExpressionRole {
|
2023-07-21 17:21:11 +00:00
|
|
|
function tokenIcon(symbol) {
|
|
|
|
return Constants.tokenIcon(symbol)
|
|
|
|
}
|
|
|
|
name: "iconSource"
|
|
|
|
expression: !!model.icon ? model.icon : tokenIcon(model.symbol)
|
2024-04-01 14:24:18 +00:00
|
|
|
expectedRoles: ["icon", "symbol"]
|
2023-07-21 17:21:11 +00:00
|
|
|
}
|
2024-02-15 09:25:40 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
readonly property var globalCollectiblesModel: SortFilterProxyModel {
|
|
|
|
sourceModel: communitiesModuleInst.collectiblesModel
|
|
|
|
|
2024-04-01 14:24:18 +00:00
|
|
|
proxyRoles: FastExpressionRole {
|
|
|
|
function collectibleIcon(icon) {
|
2024-10-15 19:26:12 +00:00
|
|
|
return !!icon ? icon : Theme.png("tokens/DEFAULT-TOKEN")
|
2024-02-15 09:25:40 +00:00
|
|
|
}
|
|
|
|
name: "iconSource"
|
2024-04-01 14:24:18 +00:00
|
|
|
expression: collectibleIcon(model.icon)
|
|
|
|
expectedRoles: ["icon"]
|
2024-02-15 09:25:40 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
property var assetsModel: SortFilterProxyModel {
|
|
|
|
sourceModel: globalAssetsModel
|
2023-08-03 11:00:11 +00:00
|
|
|
filters: [
|
|
|
|
AnyOf {
|
|
|
|
// We accept tokens from this community or general (empty community ID)
|
|
|
|
ValueFilter {
|
|
|
|
roleName: "communityId"
|
|
|
|
value: ""
|
|
|
|
}
|
|
|
|
|
|
|
|
ValueFilter {
|
|
|
|
roleName: "communityId"
|
|
|
|
value: root.communityKeyToImport
|
|
|
|
}
|
|
|
|
}
|
|
|
|
]
|
2023-07-21 17:21:11 +00:00
|
|
|
}
|
|
|
|
property var collectiblesModel: SortFilterProxyModel {
|
2024-02-15 09:25:40 +00:00
|
|
|
sourceModel: globalCollectiblesModel
|
2023-08-03 11:00:11 +00:00
|
|
|
filters: [
|
|
|
|
AnyOf {
|
|
|
|
// We accept tokens from this community or general (empty community ID)
|
|
|
|
ValueFilter {
|
|
|
|
roleName: "communityId"
|
|
|
|
value: ""
|
|
|
|
}
|
|
|
|
|
|
|
|
ValueFilter {
|
|
|
|
roleName: "communityId"
|
|
|
|
value: root.communityKeyToImport
|
|
|
|
}
|
|
|
|
}
|
|
|
|
]
|
2023-07-21 17:21:11 +00:00
|
|
|
}
|
|
|
|
|
2022-03-03 21:00:52 +00:00
|
|
|
function setLatestVersionInfo(newVersionAvailable, latestVersion, downloadURL) {
|
|
|
|
root.newVersionAvailable = newVersionAvailable;
|
|
|
|
root.latestVersion = latestVersion;
|
|
|
|
root.downloadURL = downloadURL;
|
|
|
|
}
|
|
|
|
|
|
|
|
function resetLastVersion(){
|
|
|
|
root.newVersionAvailable = false
|
|
|
|
}
|
|
|
|
|
2022-01-27 11:28:27 +00:00
|
|
|
property AppSearchStore appSearchStore: AppSearchStore {
|
|
|
|
appSearchModule: root.mainModuleInst.appSearchModule
|
|
|
|
}
|
|
|
|
|
2024-10-15 09:31:46 +00:00
|
|
|
property ProfileStores.ProfileSectionStore profileSectionStore: ProfileStores.ProfileSectionStore {
|
2021-12-30 12:39:47 +00:00
|
|
|
}
|
|
|
|
|
2022-02-04 13:07:48 +00:00
|
|
|
property var chatSearchModel: mainModuleInst.chatSearchModel
|
|
|
|
|
|
|
|
function rebuildChatSearchModel() {
|
|
|
|
mainModuleInst.rebuildChatSearchModel()
|
|
|
|
}
|
|
|
|
|
|
|
|
function setActiveSectionChat(sectionId, chatId) {
|
|
|
|
mainModuleInst.switchTo(sectionId, chatId)
|
|
|
|
}
|
|
|
|
|
2024-10-15 09:31:46 +00:00
|
|
|
|
2024-07-03 03:55:05 +00:00
|
|
|
readonly property var accounts: walletSectionAccounts.accounts
|
2021-11-22 11:08:09 +00:00
|
|
|
|
2024-05-22 08:13:39 +00:00
|
|
|
property ProfileStores.ContactsStore contactStore: profileSectionStore.contactsStore
|
|
|
|
property ProfileStores.PrivacyStore privacyStore: profileSectionStore.privacyStore
|
|
|
|
property ProfileStores.MessagingStore messagingStore: profileSectionStore.messagingStore
|
2022-01-10 16:44:54 +00:00
|
|
|
property bool hasAddedContacts: contactStore.myContactsModel.count > 0
|
|
|
|
|
2022-12-08 15:49:14 +00:00
|
|
|
property real volume: !!appSettings ? appSettings.volume * 0.01 : 0.5
|
|
|
|
property bool notificationSoundsEnabled: !!appSettings ? appSettings.notificationSoundsEnabled : true
|
2021-11-15 15:15:21 +00:00
|
|
|
|
2023-04-20 08:41:45 +00:00
|
|
|
property var walletSectionSendInst: walletSectionSend
|
2022-02-09 00:04:49 +00:00
|
|
|
|
2022-03-18 14:47:51 +00:00
|
|
|
property var savedAddressesModel: walletSectionSavedAddresses.model
|
|
|
|
|
2024-03-13 17:38:16 +00:00
|
|
|
property var flatNetworks: networksModule.flatNetworks
|
2022-07-01 11:24:32 +00:00
|
|
|
|
2024-10-15 09:31:46 +00:00
|
|
|
readonly property QtObject _d: QtObject {
|
|
|
|
id: d
|
|
|
|
|
|
|
|
readonly property var userProfileInst: userProfile
|
|
|
|
}
|
|
|
|
|
2023-09-28 17:29:31 +00:00
|
|
|
function getEtherscanLink(chainID) {
|
2024-03-13 17:38:16 +00:00
|
|
|
return networksModule.getBlockExplorerURL(chainID)
|
2022-03-18 14:47:51 +00:00
|
|
|
}
|
|
|
|
|
2022-06-09 14:59:54 +00:00
|
|
|
function createCommunity(communityName, communityDescription, checkedMembership, communityColor, communityTags,
|
2022-08-17 12:44:53 +00:00
|
|
|
communityImage, imageCropperModalaX, imageCropperModalaY, imageCropperModalbX, imageCropperModalbY,
|
2022-10-07 16:33:23 +00:00
|
|
|
historyArchiveSupportEnabled, pinMessagesAllowedForMembers, bannerJsonStr, encrypted) {
|
2022-06-09 14:59:54 +00:00
|
|
|
communitiesModuleInst.createCommunity(communityName, communityDescription, checkedMembership, communityColor,
|
|
|
|
communityTags, communityImage, imageCropperModalaX, imageCropperModalaY,
|
2022-08-17 12:44:53 +00:00
|
|
|
imageCropperModalbX, imageCropperModalbY,
|
2022-10-07 16:33:23 +00:00
|
|
|
historyArchiveSupportEnabled, pinMessagesAllowedForMembers,
|
|
|
|
bannerJsonStr, encrypted);
|
2021-11-02 14:11:35 +00:00
|
|
|
}
|
|
|
|
|
2022-09-16 08:30:08 +00:00
|
|
|
function communityHasMember(communityId, pubKey)
|
|
|
|
{
|
|
|
|
return communitiesModuleInst.isMemberOfCommunity(communityId, pubKey)
|
|
|
|
}
|
|
|
|
|
2023-12-04 19:14:13 +00:00
|
|
|
function isMyCommunityRequestPending(id: string) {
|
|
|
|
return communitiesModuleInst.isMyCommunityRequestPending(id)
|
2023-06-21 20:37:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function cancelPendingRequest(id: string) {
|
|
|
|
communitiesModuleInst.cancelRequestToJoinCommunity(id)
|
|
|
|
}
|
|
|
|
|
2022-01-18 20:54:14 +00:00
|
|
|
function generateAlias(pk) {
|
|
|
|
return globalUtils.generateAlias(pk);
|
|
|
|
}
|
|
|
|
|
2022-02-01 15:31:57 +00:00
|
|
|
property string currentCurrency: walletSection.currentCurrency
|
2022-01-31 16:03:45 +00:00
|
|
|
property string signingPhrase: walletSection.signingPhrase
|
2022-10-17 10:17:25 +00:00
|
|
|
function getFiatValue(balance, cryptoSymbol, fiatSymbol) {
|
|
|
|
return profileSectionStore.ensUsernamesStore.getFiatValue(balance, cryptoSymbol, fiatSymbol)
|
2022-02-01 15:31:57 +00:00
|
|
|
}
|
|
|
|
function getGasEthValue(gweiValue, gasLimit) {
|
|
|
|
return profileSectionStore.ensUsernamesStore.getGasEthValue(gweiValue, gasLimit)
|
|
|
|
}
|
2022-02-01 21:03:47 +00:00
|
|
|
|
2022-07-04 10:47:29 +00:00
|
|
|
function setCurrentUserStatus(newStatus) {
|
2024-10-15 09:31:46 +00:00
|
|
|
if (d.userProfileInst && d.userProfileInst.currentUserStatus !== newStatus) {
|
2022-07-04 10:47:29 +00:00
|
|
|
mainModuleInst.setCurrentUserStatus(newStatus)
|
|
|
|
}
|
|
|
|
}
|
2022-07-25 15:39:09 +00:00
|
|
|
|
|
|
|
function setActiveCommunity(communityId) {
|
2022-08-25 19:20:21 +00:00
|
|
|
mainModuleInst.setActiveSectionById(communityId);
|
2022-07-25 15:39:09 +00:00
|
|
|
}
|
2022-08-01 17:04:23 +00:00
|
|
|
|
2022-08-25 19:20:21 +00:00
|
|
|
function resolveENS(value) {
|
|
|
|
mainModuleInst.resolveENS(value, "")
|
|
|
|
}
|
2023-06-05 15:30:53 +00:00
|
|
|
|
|
|
|
function windowActivated() {
|
|
|
|
mainModuleInst.windowActivated()
|
|
|
|
}
|
|
|
|
|
|
|
|
function windowDeactivated() {
|
|
|
|
mainModuleInst.windowDeactivated()
|
|
|
|
}
|
2023-07-21 17:21:11 +00:00
|
|
|
|
2023-10-27 17:20:52 +00:00
|
|
|
function prepareKeypairsForSigning(communityId, ensName, addressesToShare = [], airdropAddress = "", editMode = false) {
|
|
|
|
communitiesModuleInst.prepareKeypairsForSigning(communityId, ensName, JSON.stringify(addressesToShare), airdropAddress, editMode)
|
2023-08-21 20:03:08 +00:00
|
|
|
}
|
|
|
|
|
2024-03-19 08:41:41 +00:00
|
|
|
function signProfileKeypairAndAllNonKeycardKeypairs() {
|
|
|
|
communitiesModuleInst.signProfileKeypairAndAllNonKeycardKeypairs()
|
2023-10-27 17:20:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function signSharedAddressesForKeypair(keyUid) {
|
|
|
|
communitiesModuleInst.signSharedAddressesForKeypair(keyUid)
|
|
|
|
}
|
|
|
|
|
|
|
|
function joinCommunityOrEditSharedAddresses() {
|
|
|
|
communitiesModuleInst.joinCommunityOrEditSharedAddresses()
|
2023-07-21 17:21:11 +00:00
|
|
|
}
|
2023-08-21 18:54:57 +00:00
|
|
|
|
2024-03-27 09:06:14 +00:00
|
|
|
function cleanJoinEditCommunityData() {
|
|
|
|
communitiesModuleInst.cleanJoinEditCommunityData()
|
|
|
|
}
|
|
|
|
|
2023-08-21 18:54:57 +00:00
|
|
|
function updatePermissionsModel(communityId, sharedAddresses) {
|
|
|
|
communitiesModuleInst.checkPermissions(communityId, JSON.stringify(sharedAddresses))
|
|
|
|
}
|
2024-02-27 20:44:47 +00:00
|
|
|
|
|
|
|
function promoteSelfToControlNode(communityId) {
|
|
|
|
communitiesModuleInst.promoteSelfToControlNode(communityId)
|
|
|
|
}
|
2021-10-01 15:58:36 +00:00
|
|
|
}
|