2021-12-08 21:20:43 +00:00
|
|
|
pragma Singleton
|
|
|
|
|
|
|
|
import QtQuick 2.12
|
2023-02-14 09:20:53 +00:00
|
|
|
import utils 1.0
|
2021-12-08 21:20:43 +00:00
|
|
|
|
|
|
|
QtObject {
|
|
|
|
id: root
|
2022-01-11 23:16:17 +00:00
|
|
|
// property var utilsModelInst: !!utilsModel ? utilsModel : null
|
|
|
|
// property var chatsModelInst: !!chatsModel ?chatsModel : null
|
|
|
|
// property var walletModelInst: !!walletModel ? walletModel : null
|
|
|
|
// property var profileModelInst: !!profileModel ? profileModel : null
|
2022-01-26 10:36:37 +00:00
|
|
|
|
2022-03-07 22:59:38 +00:00
|
|
|
property var profileSectionModuleInst: profileSectionModule
|
|
|
|
property var privacyModule: profileSectionModuleInst.privacyModule
|
2023-02-14 09:20:53 +00:00
|
|
|
property var userProfileInst: !!Global.userProfile? Global.userProfile : null
|
|
|
|
property var walletSectionInst: Global.appIsReady && !!walletSection? walletSection : null
|
|
|
|
property var appSettingsInst: Global.appIsReady && !!appSettings? appSettings : null
|
|
|
|
property var accountSensitiveSettings: Global.appIsReady && !!localAccountSensitiveSettings? localAccountSensitiveSettings : null
|
2022-12-08 15:49:14 +00:00
|
|
|
property real volume: !!appSettingsInst ? appSettingsInst.volume * 0.01 : 0.5
|
2021-12-08 21:20:43 +00:00
|
|
|
property bool isWalletEnabled: !!accountSensitiveSettings ? accountSensitiveSettings.isWalletEnabled : false
|
2022-12-08 15:49:14 +00:00
|
|
|
property bool notificationSoundsEnabled: !!appSettingsInst ? appSettingsInst.notificationSoundsEnabled : true
|
2021-12-08 21:20:43 +00:00
|
|
|
property bool neverAskAboutUnfurlingAgain: !!accountSensitiveSettings ? accountSensitiveSettings.neverAskAboutUnfurlingAgain : false
|
|
|
|
property bool isGifWidgetEnabled: !!accountSensitiveSettings ? accountSensitiveSettings.isGifWidgetEnabled : false
|
|
|
|
property bool isTenorWarningAccepted: !!accountSensitiveSettings ? accountSensitiveSettings.isTenorWarningAccepted : false
|
|
|
|
property bool displayChatImages: !!accountSensitiveSettings ? accountSensitiveSettings.displayChatImages : false
|
|
|
|
|
2022-01-11 23:16:17 +00:00
|
|
|
// property string signingPhrase: !!walletModelInst ? walletModelInst.utilsView.signingPhrase : ""
|
|
|
|
// property string gasPrice: !!walletModelInst ? walletModelInst.gasView.gasPrice : "0"
|
|
|
|
// property string gasEthValue: !!walletModelInst ? walletModelInst.gasView.getGasEthValue : "0"
|
2022-07-22 14:42:21 +00:00
|
|
|
|
2022-12-29 16:44:51 +00:00
|
|
|
property CurrenciesStore currencyStore: CurrenciesStore {}
|
2023-02-14 09:20:53 +00:00
|
|
|
property string currentCurrency: Global.appIsReady? walletSection.currentCurrency : ""
|
2022-01-11 23:16:17 +00:00
|
|
|
// property string defaultCurrency: !!walletModelInst ? walletModelInst.balanceView.defaultCurrency : "0"
|
|
|
|
// property string fiatValue: !!walletModelInst ? walletModelInst.balanceView.getFiatValue : "0"
|
|
|
|
// property string cryptoValue: !!walletModelInst ? walletModelInst.balanceView.getCryptoValue : "0"
|
2022-03-25 08:46:47 +00:00
|
|
|
|
2022-12-12 20:46:21 +00:00
|
|
|
property var history: typeof walletSectionTransactions !== "undefined" ? walletSectionTransactions
|
|
|
|
: null
|
2023-02-14 09:20:53 +00:00
|
|
|
property var historyTransactions: Global.appIsReady? walletSectionTransactions.model : null
|
2022-12-12 20:46:21 +00:00
|
|
|
property bool isNonArchivalNode: history ? history.isNonArchivalNode
|
|
|
|
: false
|
2023-02-14 09:20:53 +00:00
|
|
|
property bool tokensLoading: Global.appIsReady? walletSection.tokensLoading : false
|
|
|
|
property var currentAccount: Global.appIsReady? walletSectionCurrent : null
|
2022-09-27 08:30:18 +00:00
|
|
|
property var marketValueStore: TokenMarketValuesStore{}
|
|
|
|
|
2022-08-08 21:12:12 +00:00
|
|
|
function getNetworkColor(chainId) {
|
|
|
|
return networksModule.all.getChainColor(chainId)
|
|
|
|
}
|
|
|
|
|
|
|
|
function getNetworkIcon(chainId) {
|
|
|
|
return networksModule.all.getIconUrl(chainId)
|
|
|
|
}
|
|
|
|
|
2022-09-01 15:34:27 +00:00
|
|
|
function getNetworkShortName(chainId) {
|
|
|
|
return networksModule.all.getNetworkShortName(chainId)
|
|
|
|
}
|
|
|
|
|
2022-08-08 21:12:12 +00:00
|
|
|
function getNetworkIconUrl(symbol) {
|
|
|
|
return networksModule.all.getNetworkIconUrl(symbol)
|
|
|
|
}
|
|
|
|
|
|
|
|
function getNetworkName(symbol) {
|
|
|
|
return networksModule.all.getNetworkName(symbol)
|
|
|
|
}
|
2022-03-25 08:46:47 +00:00
|
|
|
|
2022-09-01 15:34:27 +00:00
|
|
|
function hex2Dec(value) {
|
|
|
|
return globalUtils.hex2Dec(value)
|
|
|
|
}
|
|
|
|
|
2021-12-08 21:20:43 +00:00
|
|
|
readonly property var formationChars: (["*", "`", "~"])
|
|
|
|
function getSelectedTextWithFormationChars(messageInputField) {
|
|
|
|
let i = 1
|
|
|
|
let text = ""
|
|
|
|
while (true) {
|
|
|
|
if (messageInputField.selectionStart - i < 0 && messageInputField.selectionEnd + i > messageInputField.length) {
|
|
|
|
break
|
|
|
|
}
|
|
|
|
|
|
|
|
text = messageInputField.getText(messageInputField.selectionStart - i, messageInputField.selectionEnd + i)
|
|
|
|
|
|
|
|
if (!formationChars.includes(text.charAt(0)) ||
|
|
|
|
!formationChars.includes(text.charAt(text.length - 1))) {
|
|
|
|
break
|
|
|
|
}
|
|
|
|
i++
|
|
|
|
}
|
|
|
|
return text
|
|
|
|
}
|
|
|
|
|
|
|
|
function setNeverAskAboutUnfurlingAgain(value) {
|
|
|
|
localAccountSensitiveSettings.neverAskAboutUnfurlingAgain = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
function enableWallet() {
|
|
|
|
localAccountSensitiveSettings.isWalletEnabled = true;
|
|
|
|
}
|
|
|
|
|
|
|
|
function setIsTenorWarningAccepted(value) {
|
|
|
|
localAccountSensitiveSettings.isTenorWarningAccepted = value;
|
|
|
|
}
|
|
|
|
|
2022-01-24 11:41:55 +00:00
|
|
|
function copyToClipboard(text) {
|
|
|
|
globalUtils.copyToClipboard(text)
|
2021-12-21 20:52:17 +00:00
|
|
|
}
|
2022-01-13 08:58:42 +00:00
|
|
|
|
2022-12-12 20:46:21 +00:00
|
|
|
property var chatSectionChatContentInputAreaInst: typeof chatSectionChatContentInputArea !== "undefined" ? chatSectionChatContentInputArea
|
|
|
|
: null
|
|
|
|
property var gifColumnA: chatSectionChatContentInputAreaInst ? chatSectionChatContentInputArea.gifColumnA
|
|
|
|
: null
|
|
|
|
property var gifColumnB: chatSectionChatContentInputAreaInst ? chatSectionChatContentInputArea.gifColumnB
|
|
|
|
: null
|
|
|
|
property var gifColumnC: chatSectionChatContentInputAreaInst ? chatSectionChatContentInputArea.gifColumnC
|
|
|
|
: null
|
2022-01-13 08:58:42 +00:00
|
|
|
|
|
|
|
function searchGifs(query) {
|
2022-12-12 20:46:21 +00:00
|
|
|
if (chatSectionChatContentInputAreaInst)
|
|
|
|
chatSectionChatContentInputAreaInst.searchGifs(query)
|
2022-01-13 08:58:42 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function getTrendingsGifs() {
|
2022-12-12 20:46:21 +00:00
|
|
|
if (chatSectionChatContentInputAreaInst)
|
|
|
|
chatSectionChatContentInputAreaInst.getTrendingsGifs()
|
2022-01-13 08:58:42 +00:00
|
|
|
}
|
|
|
|
|
2022-08-31 08:32:08 +00:00
|
|
|
function updateWhitelistedUnfurlingSites(hostname, whitelisted) {
|
|
|
|
// no way to send update notification for individual array entries
|
|
|
|
let settings = localAccountSensitiveSettings.whitelistedUnfurlingSites
|
|
|
|
|
|
|
|
if (!settings)
|
|
|
|
settings = {}
|
|
|
|
|
|
|
|
if (settings[hostname] === whitelisted)
|
|
|
|
return
|
|
|
|
|
|
|
|
settings[hostname] = whitelisted
|
|
|
|
localAccountSensitiveSettings.whitelistedUnfurlingSites = settings
|
|
|
|
if(hostname === "media.tenor.com" && whitelisted === false)
|
|
|
|
RootStore.setIsTenorWarningAccepted(false)
|
|
|
|
}
|
|
|
|
|
2022-01-13 08:58:42 +00:00
|
|
|
function getRecentsGifs() {
|
2022-12-12 20:46:21 +00:00
|
|
|
if (chatSectionChatContentInputAreaInst)
|
|
|
|
chatSectionChatContentInputAreaInst.getRecentsGifs()
|
2022-01-13 08:58:42 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function getFavoritesGifs() {
|
2022-12-12 20:46:21 +00:00
|
|
|
return chatSectionChatContentInputAreaInst ? chatSectionChatContentInputAreaInst.getFavoritesGifs()
|
|
|
|
: null
|
2022-01-13 08:58:42 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function isFavorite(id) {
|
2022-12-12 20:46:21 +00:00
|
|
|
return chatSectionChatContentInputAreaInst ? chatSectionChatContentInputAreaInst.isFavorite(id)
|
|
|
|
: null
|
2022-01-13 08:58:42 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function toggleFavoriteGif(id, reload) {
|
2022-12-12 20:46:21 +00:00
|
|
|
if (chatSectionChatContentInputAreaInst)
|
|
|
|
chatSectionChatContentInputAreaInst.toggleFavoriteGif(id, reload)
|
2022-01-13 08:58:42 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function addToRecentsGif(id) {
|
2022-12-12 20:46:21 +00:00
|
|
|
if (chatSectionChatContentInputAreaInst)
|
|
|
|
chatSectionChatContentInputAreaInst.addToRecentsGif(id)
|
2022-01-13 08:58:42 +00:00
|
|
|
}
|
2022-03-07 22:59:38 +00:00
|
|
|
|
2022-07-20 12:34:44 +00:00
|
|
|
function getPasswordStrengthScore(password) {
|
|
|
|
return root.privacyModule.getPasswordStrengthScore(password);
|
2022-03-07 22:59:38 +00:00
|
|
|
}
|
2022-03-25 08:46:47 +00:00
|
|
|
|
|
|
|
function isFetchingHistory(address) {
|
|
|
|
return history.isFetchingHistory(address)
|
|
|
|
}
|
|
|
|
|
|
|
|
function loadTransactionsForAccount(address, pageSize) {
|
|
|
|
history.loadTransactionsForAccount(address, historyTransactions.getLastTxBlockNumber(), pageSize, true)
|
|
|
|
}
|
|
|
|
|
|
|
|
function hex2Eth(value) {
|
|
|
|
return globalUtils.hex2Eth(value)
|
|
|
|
}
|
2022-09-01 15:34:27 +00:00
|
|
|
|
2022-09-05 09:15:47 +00:00
|
|
|
function hex2Gwei(value) {
|
|
|
|
return globalUtils.hex2Gwei(value)
|
|
|
|
}
|
|
|
|
|
2022-09-01 15:34:27 +00:00
|
|
|
function findTokenSymbolByAddress(address) {
|
2023-02-14 09:20:53 +00:00
|
|
|
if (Global.appIsReady)
|
|
|
|
return walletSectionAllTokens.findTokenSymbolByAddress(address)
|
|
|
|
return ""
|
2022-09-01 15:34:27 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function getNameForSavedWalletAddress(address) {
|
|
|
|
return walletSectionSavedAddresses.getNameByAddress(address)
|
|
|
|
}
|
2022-09-05 09:15:47 +00:00
|
|
|
|
2022-08-18 14:44:48 +00:00
|
|
|
function createOrUpdateSavedAddress(name, address, favourite) {
|
|
|
|
return walletSectionSavedAddresses.createOrUpdateSavedAddress(name, address, favourite)
|
2022-09-05 09:15:47 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function deleteSavedAddress(address) {
|
|
|
|
return walletSectionSavedAddresses.deleteSavedAddress(address)
|
|
|
|
}
|
|
|
|
|
|
|
|
function getLatestBlockNumber() {
|
|
|
|
return walletSectionTransactions.getLastTxBlockNumber()
|
|
|
|
}
|
|
|
|
|
2023-01-08 22:23:51 +00:00
|
|
|
function getCurrencyAmount(amount, symbol) {
|
|
|
|
return currencyStore.getCurrencyAmount(amount, symbol)
|
|
|
|
}
|
|
|
|
|
|
|
|
function getFiatValue(balance, cryptoSymbol, fiatSymbol) {
|
|
|
|
return currencyStore.getFiatValue(balance, cryptoSymbol, fiatSymbol)
|
|
|
|
}
|
|
|
|
|
|
|
|
function getCryptoValue(balance, cryptoSymbol, fiatSymbol) {
|
|
|
|
return currencyStore.getCryptoValue(balance, cryptoSymbol, fiatSymbol)
|
|
|
|
}
|
|
|
|
|
2022-09-05 09:15:47 +00:00
|
|
|
function getGasEthValue(gweiValue, gasLimit) {
|
2023-01-08 22:23:51 +00:00
|
|
|
return currencyStore.getGasEthValue(gweiValue, gasLimit)
|
|
|
|
}
|
|
|
|
|
2023-02-17 12:56:31 +00:00
|
|
|
function formatCurrencyAmount(amount, symbol, options = null, locale = null) {
|
|
|
|
return currencyStore.formatCurrencyAmount(amount, symbol, options, locale)
|
2022-09-05 09:15:47 +00:00
|
|
|
}
|
2022-09-27 08:30:18 +00:00
|
|
|
|
|
|
|
function getHistoricalDataForToken(symbol, currency) {
|
2023-02-14 09:20:53 +00:00
|
|
|
if (Global.appIsReady)
|
|
|
|
walletSectionAllTokens.getHistoricalDataForToken(symbol,currency)
|
2022-09-27 08:30:18 +00:00
|
|
|
}
|
2022-10-28 17:17:16 +00:00
|
|
|
|
2023-02-14 09:20:53 +00:00
|
|
|
property bool marketHistoryIsLoading: Global.appIsReady? walletSectionAllTokens.marketHistoryIsLoading : false
|
2023-01-10 13:04:23 +00:00
|
|
|
|
2022-10-28 17:17:16 +00:00
|
|
|
// TODO: range until we optimize to cache the data and abuse the requests
|
2022-11-15 21:48:59 +00:00
|
|
|
function fetchHistoricalBalanceForTokenAsJson(address, tokenSymbol, currencySymbol, timeIntervalEnum) {
|
2023-02-14 09:20:53 +00:00
|
|
|
if (Global.appIsReady)
|
|
|
|
walletSectionAllTokens.fetchHistoricalBalanceForTokenAsJson(address, tokenSymbol, currencySymbol, timeIntervalEnum)
|
2022-10-28 17:17:16 +00:00
|
|
|
}
|
2023-01-10 13:04:23 +00:00
|
|
|
|
2023-02-14 09:20:53 +00:00
|
|
|
property bool balanceHistoryIsLoading: Global.appIsReady? walletSectionAllTokens.balanceHistoryIsLoading : false
|
2023-01-10 13:04:23 +00:00
|
|
|
|
2021-12-08 21:20:43 +00:00
|
|
|
}
|