pragma Singleton import QtQuick 2.13 import StatusQ.Controls.Validators 0.1 QtObject { readonly property QtObject appState: QtObject { readonly property int startup: 0 readonly property int appLoading: 1 readonly property int main: 2 } readonly property QtObject startupFlow: QtObject { readonly property string general: "General" readonly property string firstRunNewUserNewKeys: "FirstRunNewUserNewKeys" readonly property string firstRunNewUserNewKeycardKeys: "FirstRunNewUserNewKeycardKeys" readonly property string firstRunNewUserImportSeedPhrase: "FirstRunNewUserImportSeedPhrase" readonly property string firstRunNewUserImportSeedPhraseIntoKeycard: "FirstRunNewUserImportSeedPhraseIntoKeycard" readonly property string firstRunOldUserSyncCode: "FirstRunOldUserSyncCode" readonly property string firstRunOldUserKeycardImport: "FirstRunOldUserKeycardImport" readonly property string firstRunOldUserImportSeedPhrase: "FirstRunOldUserImportSeedPhrase" readonly property string appLogin: "AppLogin" } readonly property QtObject startupState: QtObject { readonly property string noState: "NoState" readonly property string allowNotifications: "AllowNotifications" readonly property string welcome: "Welcome" readonly property string welcomeNewStatusUser: "WelcomeNewStatusUser" readonly property string welcomeOldStatusUser: "WelcomeOldStatusUser" readonly property string userProfileCreate: "UserProfileCreate" readonly property string userProfileChatKey: "UserProfileChatKey" readonly property string userProfileCreatePassword: "UserProfileCreatePassword" readonly property string userProfileConfirmPassword: "UserProfileConfirmPassword" readonly property string userProfileImportSeedPhrase: "UserProfileImportSeedPhrase" readonly property string userProfileEnterSeedPhrase: "UserProfileEnterSeedPhrase" readonly property string biometrics: "Biometrics" readonly property string keycardPluginReader: "KeycardPluginReader" readonly property string keycardInsertKeycard: "KeycardInsertKeycard" readonly property string keycardReadingKeycard: "KeycardReadingKeycard" readonly property string keycardCreatePin: "KeycardCreatePin" readonly property string keycardRepeatPin: "KeycardRepeatPin" readonly property string keycardPinSet: "KeycardPinSet" readonly property string keycardEnterPin: "KeycardEnterPin" readonly property string keycardWrongPin: "KeycardWrongPin" readonly property string keycardEnterPuk: "KeycardEnterPuk" readonly property string keycardWrongPuk: "KeycardWrongPuk" readonly property string keycardDisplaySeedPhrase: "KeycardDisplaySeedPhrase" readonly property string keycardEnterSeedPhraseWords: "KeycardEnterSeedPhraseWords" readonly property string keycardNotEmpty: "KeycardNotEmpty" readonly property string keycardEmpty: "KeycardEmpty" readonly property string keycardLocked: "KeycardLocked" readonly property string keycardRecover: "KeycardRecover" readonly property string keycardMaxPairingSlotsReached: "KeycardMaxPairingSlotsReached" readonly property string keycardMaxPinRetriesReached: "KeycardMaxPinRetriesReached" readonly property string keycardMaxPukRetriesReached: "KeycardMaxPukRetriesReached" readonly property string login: "Login" readonly property string loginKeycardInsertKeycard: "LoginKeycardInsertKeycard" readonly property string loginKeycardReadingKeycard: "LoginKeycardReadingKeycard" readonly property string loginKeycardEnterPin: "LoginKeycardEnterPin" readonly property string loginKeycardWrongKeycard: "LoginKeycardWrongKeycard" readonly property string loginKeycardWrongPin: "LoginKeycardWrongPin" readonly property string loginKeycardMaxPinRetriesReached: "LoginKeycardMaxPinRetriesReached" readonly property string loginKeycardMaxPukRetriesReached: "LoginKeycardMaxPukRetriesReached" readonly property string loginKeycardEmpty: "LoginKeycardEmpty" } readonly property QtObject keycardSharedFlow: QtObject { readonly property string general: "General" readonly property string factoryReset: "FactoryReset" } readonly property QtObject keycardSharedState: QtObject { readonly property string noState: "NoState" readonly property string pluginReader: "PluginReader" readonly property string readingKeycard: "ReadingKeycard" readonly property string insertKeycard: "InsertKeycard" readonly property string enterPin: "EnterPin" readonly property string factoryResetConfirmation: "FactoryResetConfirmation" readonly property string factoryResetSuccess: "FactoryResetSuccess" readonly property string keycardEmpty: "KeycardEmpty" readonly property string notKeycard: "NotKeycard" readonly property string recognizedKeycard: "RecognizedKeycard" } readonly property QtObject keychain: QtObject { readonly property QtObject errorType: QtObject { readonly property string authentication: "authentication" readonly property string keychain: "keychain" } readonly property QtObject storedValue: QtObject { readonly property string store: "store" readonly property string notNow: "notNow" readonly property string never: "never" } } readonly property QtObject appSection: QtObject { readonly property int chat: 0 readonly property int community: 1 readonly property int wallet: 2 readonly property int browser: 3 readonly property int profile: 4 readonly property int node: 5 readonly property int communitiesPortal: 6 } readonly property QtObject appViewStackIndex: QtObject { readonly property int chat: 0 readonly property int community: 7 // any stack layout children with the index 7 or higher is community readonly property int communitiesPortal: 1 readonly property int wallet: 2 readonly property int browser: 3 readonly property int profile: 4 readonly property int node: 5 } readonly property QtObject settingsSubsection: QtObject { property int profile: 0 property int contacts: 1 property int ensUsernames: 2 property int messaging: 3 property int wallet: 4 property int appearance: 5 property int language: 6 property int notifications: 7 property int devicesSettings: 8 property int browserSettings: 9 property int advanced: 10 property int about: 11 property int communitiesSettings: 12 property int keycard: 13 property int signout: 14 property int backUpSeed: 15 } readonly property QtObject currentUserStatus: QtObject{ readonly property int unknown: 0 readonly property int automatic: 1 readonly property int doNotDisturb: 2 readonly property int alwaysOnline: 3 readonly property int inactive: 4 } readonly property QtObject onboarding: QtObject { readonly property int userImageWidth: 40 readonly property int userImageHeight: 40 readonly property int titleFontSize: 17 } readonly property QtObject onlineStatus: QtObject{ readonly property int inactive: 0 readonly property int online: 1 } readonly property QtObject chatType: QtObject{ readonly property int unknown: 0 readonly property int oneToOne: 1 readonly property int publicChat: 2 readonly property int privateGroupChat: 3 readonly property int profile: 4 readonly property int communityChat: 6 } readonly property QtObject messageContentType: QtObject { readonly property int fetchMoreMessagesButton: -2 readonly property int chatIdentifier: -1 readonly property int unknownContentType: 0 readonly property int messageType: 1 readonly property int stickerType: 2 readonly property int statusType: 3 readonly property int emojiType: 4 readonly property int transactionType: 5 readonly property int systemMessagePrivateGroupType: 6 readonly property int imageType: 7 readonly property int audioType: 8 readonly property int communityInviteType: 9 readonly property int gapType: 10 readonly property int editType: 11 } readonly property QtObject profilePicturesVisibility: QtObject { readonly property int contactsOnly: 1 readonly property int everyone: 2 readonly property int noOne: 3 } readonly property QtObject profilePicturesShowTo: QtObject { readonly property int contactsOnly: 1 readonly property int everyone: 2 readonly property int noOne: 3 } readonly property QtObject trustStatus: QtObject { readonly property int unknown: 0 readonly property int trusted: 1 readonly property int untrustworthy: 2 } readonly property QtObject verificationStatus: QtObject { readonly property int unverified: 0 readonly property int verifying: 1 readonly property int verified: 2 readonly property int declined: 3 readonly property int canceled: 4 readonly property int trusted: 5 } readonly property QtObject contactsPanelUsage: QtObject { readonly property int unknownPosition: -1 readonly property int mutualContacts: 0 readonly property int verifiedMutualContacts: 1 readonly property int sentContactRequest: 2 readonly property int receivedContactRequest: 3 readonly property int rejectedSentContactRequest: 4 readonly property int rejectedReceivedContactRequest: 5 readonly property int blockedContacts: 6 } readonly property QtObject profilePopupStates: QtObject { readonly property string openNickname: "openNickname" readonly property string contactRequest: "contactRequest" readonly property string blockUser: "blockUser" readonly property string unblockUser: "unblockUser" readonly property string verifyIdentity: "verifyIdentity" readonly property string showVerificationPendingSection: "showVerificationPendingSection" readonly property string respondToPendingRequest: "respondToPendingRequest" } readonly property QtObject validators: QtObject { readonly property list displayName: [ StatusMinLengthValidator { minLength: 5 errorMessage: qsTr("Username must be at least 5 characters") }, StatusRegularExpressionValidator { regularExpression: /^[a-zA-Z0-9\-_]+$/ errorMessage: qsTr("Only letters, numbers, underscores and hyphens allowed") }, // TODO: Create `StatusMaxLengthValidator` in StatusQ StatusValidator { name: "maxLengthValidator" validate: function (t) { return t.length <= 24 } errorMessage: qsTr("24 character username limit") }, StatusValidator { name: "endsWith-ethValidator" validate: function (t) { return !t.endsWith("-eth") } errorMessage: qsTr("Usernames ending with '-eth' are not allowed") }, StatusValidator { name: "endsWith_ethValidator" validate: function (t) { return !t.endsWith("_eth") } errorMessage: qsTr("Usernames ending with '_eth' are not allowed") }, StatusValidator { name: "endsWith.ethValidator" validate: function (t) { return !t.endsWith(".eth") } errorMessage: qsTr("Usernames ending with '.eth' are not allowed") }, StatusValidator { name: "isAliasValidator" validate: function (t) { return !globalUtils.isAlias(t) } errorMessage: qsTr("Sorry, the name you have chosen is not allowed, try picking another username") } ] } readonly property QtObject settingsSection: QtObject { readonly property int itemSpacing: 10 readonly property int radius: 8 readonly property int mainHeaderFontSize: 28 readonly property int subHeaderFontSize: 15 readonly property int importantInfoFontSize: 18 readonly property int infoFontSize: 15 readonly property int infoLineHeight: 22 readonly property int infoSpacing: 5 readonly property int itemHeight: 64 readonly property int leftMargin: 64 readonly property int rightMargin: 64 readonly property int topMargin: 64 readonly property int bottomMargin: 64 readonly property QtObject notificationsBubble: QtObject { readonly property int previewAnonymous: 0 readonly property int previewNameOnly: 1 readonly property int previewNameAndMessage: 2 } readonly property QtObject notifications: QtObject { readonly property string sendAlertsValue: "SendAlerts" readonly property string deliverQuietlyValue: "DeliverQuietly" readonly property string turnOffValue: "TurnOff" } readonly property QtObject exemptions: QtObject { readonly property int community: 0 readonly property int oneToOneChat: 1 readonly property int groupChat: 2 } } readonly property QtObject ephemeralNotificationType: QtObject { readonly property int normal: 0 readonly property int success: 1 } readonly property QtObject transactionEstimatedTime: QtObject { readonly property int unknown: 0 readonly property int lessThanOneMin: 1 readonly property int lessThanThreeMins: 2 readonly property int lessThanFiveMins: 3 readonly property int moreThanFiveMins: 4 } readonly property QtObject translationsState: QtObject { readonly property int alpha: 0 readonly property int beta: 1 readonly property int stable: 2 } readonly property QtObject keycard: QtObject { readonly property QtObject general: QtObject { readonly property int footerWrapperHeight: 125 readonly property int keycardPinLength: 6 readonly property int fontSize1: 22 readonly property int fontSize2: 15 readonly property int fontSize3: 12 readonly property int seedPhraseCellWidth: 193 readonly property int seedPhraseCellHeight: 60 readonly property int seedPhraseCellNumberWidth: 24 readonly property int seedPhraseCellFontSize: 12 readonly property int buttonFontSize: 15 readonly property int pukCellWidth: 50 readonly property int pukCellHeight: 60 readonly property int sharedFlowImageWidth: 240 readonly property int sharedFlowImageHeight: 240 } readonly property QtObject shared: QtObject { readonly property int imageWidth: 240 readonly property int imageHeight: 240 } } readonly property QtObject socialLinkType: QtObject { readonly property int custom: 0 readonly property int twitter: 1 readonly property int personalSite: 2 readonly property int github: 3 readonly property int youtube: 4 readonly property int discord: 5 readonly property int telegram: 6 } readonly property int communityImported: 0 readonly property int communityImportingInProgress: 1 readonly property int communityImportingError: 2 readonly property int communityChatPublicAccess: 1 readonly property int communityChatInvitationOnlyAccess: 2 readonly property int communityChatOnRequestAccess: 3 readonly property int activityCenterNotificationTypeOneToOne: 1 readonly property int activityCenterNotificationTypeGroupRequest: 2 readonly property int activityCenterNotificationTypeMention: 3 readonly property int activityCenterNotificationTypeReply: 4 readonly property int maxNbDaysToFetch: 30 readonly property int fetchRangeLast24Hours: 86400 readonly property int fetchRangeLast2Days: 172800 readonly property int fetchRangeLast3Days: 259200 readonly property int fetchRangeLast7Days: 604800 readonly property int walletFetchRecentHistoryInterval: 1200000 // 20 mins readonly property int limitLongChatText: 500 readonly property int limitLongChatTextCompactMode: 1000 readonly property int notificationPopupTTL: 5000 readonly property string lightThemeName: "light" readonly property string darkThemeName: "dark" readonly property int fontSizeXS: 0 readonly property int fontSizeS: 1 readonly property int fontSizeM: 2 readonly property int fontSizeL: 3 readonly property int fontSizeXL: 4 readonly property int fontSizeXXL: 5 readonly property int notifyAllMessages: 0 readonly property int notifyJustMentions: 1 readonly property int notifyNone: 2 readonly property string watchWalletType: "watch" readonly property string keyWalletType: "key" readonly property string seedWalletType: "seed" readonly property string generatedWalletType: "generated" readonly property string windows: "windows" readonly property string linux: "linux" readonly property string mac: "mac" // Transaction states readonly property int addressRequested: 1 readonly property int declined: 2 readonly property int addressReceived: 3 readonly property int transactionRequested: 4 readonly property int transactionDeclined: 5 readonly property int pending: 6 readonly property int confirmed: 7 readonly property int maxTokens: 200 readonly property string zeroAddress: "0x0000000000000000000000000000000000000000" readonly property string networkMainnet: "Mainnet" readonly property string networkRopsten: "Ropsten" readonly property string api_request: "api-request" readonly property string web3SendAsyncReadOnly: "web3-send-async-read-only" readonly property string web3DisconnectAccount: "web3-disconnect-account" readonly property string permission_web3: "web3" readonly property string permission_contactCode: "contact-code" readonly property string personal_sign: "personal_sign" readonly property string eth_sign: "eth_sign" readonly property string eth_signTypedData: "eth_signTypedData" readonly property string eth_signTypedData_v3: "eth_signTypedData_v3" readonly property string eth_prod: "eth.prod" readonly property string eth_staging: "eth.staging" readonly property string eth_test: "eth.test" readonly property string waku_prod: "wakuv2.prod" readonly property string waku_test: "wakuv2.test" readonly property string status_test: "status.test" readonly property string status_prod: "status.prod" readonly property int browserSearchEngineNone: 0 readonly property int browserSearchEngineGoogle: 1 readonly property int browserSearchEngineYahoo: 2 readonly property int browserSearchEngineDuckDuckGo: 3 readonly property int browserEthereumExplorerNone: 0 readonly property int browserEthereumExplorerEtherscan: 1 readonly property int browserEthereumExplorerEthplorer: 2 readonly property int browserEthereumExplorerBlockchair: 3 readonly property int repeatHeaderInterval: 2 readonly property string deepLinkPrefix: 'statusim://' readonly property string joinStatusLink: 'join.status.im' readonly property string communityLinkPrefix: 'https://join.status.im/c/' readonly property string userLinkPrefix: 'https://join.status.im/u/' readonly property string statusLinkPrefix: 'https://status.im/' readonly property int maxUploadFiles: 5 readonly property double maxUploadFilesizeMB: 10 readonly property int maxNumberOfPins: 3 readonly property var acceptedImageExtensions: [".png", ".jpg", ".jpeg", ".svg", ".gif"] readonly property var acceptedDragNDropImageExtensions: [".png", ".jpg", ".jpeg", ".heif", "tif", ".tiff"] readonly property string mentionSpanTag: `` readonly property string ens_taken: "taken" readonly property string ens_taken_custom: "taken-custom" readonly property string ens_owned: "owned" readonly property string ens_available: "available" readonly property string ens_already_connected: "already-connected" readonly property string ens_connected: "connected" readonly property string ens_connected_dkey: "connected-different-key" readonly property string storeToKeychainValueStore: "store" readonly property string storeToKeychainValueNotNow: "notNow" readonly property string storeToKeychainValueNever: "never" // WARNING: Remove later. Moved to StatusQ. readonly property string editLabel: ` ` + qsTr("(edited)") + `` readonly property string newBookmark: " " readonly property var ensState: { "taken": qsTr("Username already taken :("), "taken-custom": qsTr("Username doesn’t belong to you :("), "owned": qsTr("Continuing will connect this username with your chat key."), "available": qsTr("✓ Username available!"), "already-connected": qsTr("Username is already connected with your chat key and can be used inside Status."), "connected": qsTr("This user name is owned by you and connected with your chat key. Continue to set `Show my ENS username in chats`."), "connected-different-key": qsTr("Continuing will require a transaction to connect the username with your current chat key."), } readonly property bool isCppApp: typeof cppApp !== "undefined" ? cppApp : false readonly property string existingAccountError: "account already exists" }