mirror of
https://github.com/status-im/status-desktop.git
synced 2025-01-09 13:56:10 +00:00
9202cce3f5
Switch the activity filter to use the new session-based API that deliver incremental updates to the current filter. Drop the old quick win listening for individual change events and use the unified API instead. The new transactions (on-top) trigger the old "new transactions" buttons that trigger reset of the current filter and the top new transacitons highlighted. Highlight mixed changes (not new on top) as they come in Highlight new changes on filter reset Closes #12120
230 lines
9.0 KiB
QML
230 lines
9.0 KiB
QML
pragma Singleton
|
|
|
|
import QtQuick 2.12
|
|
import utils 1.0
|
|
|
|
QtObject {
|
|
id: root
|
|
|
|
property var profileSectionModuleInst: profileSectionModule
|
|
property var privacyModule: profileSectionModuleInst.privacyModule
|
|
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
|
|
property real volume: !!appSettingsInst ? appSettingsInst.volume * 0.01 : 0.5
|
|
property bool isWalletEnabled: Global.appIsReady? mainModule.sectionsModel.getItemEnabledBySectionType(Constants.appSection.wallet) : true
|
|
|
|
property bool notificationSoundsEnabled: !!appSettingsInst ? appSettingsInst.notificationSoundsEnabled : true
|
|
property bool neverAskAboutUnfurlingAgain: !!accountSensitiveSettings ? accountSensitiveSettings.neverAskAboutUnfurlingAgain : false
|
|
property bool gifUnfurlingEnabled: !!accountSensitiveSettings ? accountSensitiveSettings.gifUnfurlingEnabled : false
|
|
|
|
property CurrenciesStore currencyStore: CurrenciesStore {}
|
|
property string currentCurrency: Global.appIsReady? walletSectionInst.currentCurrency : ""
|
|
|
|
readonly property var transactionActivityStatus: Global.appIsReady ? walletSectionInst.activityController.status : null
|
|
|
|
property var historyTransactions: Global.appIsReady? walletSectionInst.activityController.model : null
|
|
readonly property bool loadingHistoryTransactions: Global.appIsReady && walletSectionInst.activityController.status.loadingData
|
|
readonly property bool newDataAvailable: Global.appIsReady && walletSectionInst.activityController.status.newDataAvailable
|
|
property bool isNonArchivalNode: Global.appIsReady && walletSectionInst.isNonArchivalNode
|
|
|
|
property var marketValueStore: TokenMarketValuesStore{}
|
|
property var allNetworks: networksModule.all
|
|
|
|
function resetActivityData() {
|
|
walletSectionInst.activityController.resetActivityData()
|
|
}
|
|
|
|
// TODO remove all these by linking chainId for networks and activity using LeftJoinModel
|
|
// not possible currently due to the current structure of the activity model
|
|
function getNetworkColor(chainId) {
|
|
return networksModule.all.getChainColor(chainId)
|
|
}
|
|
|
|
function getNetworkIcon(chainId) {
|
|
return networksModule.all.getIconUrl(chainId)
|
|
}
|
|
|
|
function getNetworkShortName(chainId) {
|
|
return networksModule.all.getNetworkShortName(chainId)
|
|
}
|
|
|
|
function getNetworkFullName(chainId) {
|
|
return networksModule.all.getNetworkFullName(chainId)
|
|
}
|
|
|
|
function getNetworkLayer(chainId) {
|
|
return networksModule.all.getNetworkLayer(chainId)
|
|
}
|
|
|
|
function getNetworkIconUrl(symbol) {
|
|
return networksModule.all.getNetworkIconUrl(symbol)
|
|
}
|
|
|
|
function getNetworkName(symbol) {
|
|
return networksModule.all.getNetworkName(symbol)
|
|
}
|
|
|
|
function hex2Dec(value) {
|
|
return globalUtils.hex2Dec(value)
|
|
}
|
|
|
|
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 setGifUnfurlingEnabled(value) {
|
|
localAccountSensitiveSettings.gifUnfurlingEnabled = value
|
|
}
|
|
|
|
function copyToClipboard(text) {
|
|
globalUtils.copyToClipboard(text)
|
|
}
|
|
|
|
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
|
|
property bool gifLoading: chatSectionChatContentInputAreaInst ? chatSectionChatContentInputArea.gifLoading
|
|
: false
|
|
|
|
function searchGifs(query) {
|
|
if (chatSectionChatContentInputAreaInst)
|
|
chatSectionChatContentInputAreaInst.searchGifs(query)
|
|
}
|
|
|
|
function getTrendingsGifs() {
|
|
if (chatSectionChatContentInputAreaInst)
|
|
chatSectionChatContentInputAreaInst.getTrendingsGifs()
|
|
}
|
|
|
|
function getRecentsGifs() {
|
|
if (chatSectionChatContentInputAreaInst)
|
|
chatSectionChatContentInputAreaInst.getRecentsGifs()
|
|
}
|
|
|
|
function getFavoritesGifs() {
|
|
return chatSectionChatContentInputAreaInst ? chatSectionChatContentInputAreaInst.getFavoritesGifs()
|
|
: null
|
|
}
|
|
|
|
function isFavorite(id) {
|
|
return chatSectionChatContentInputAreaInst ? chatSectionChatContentInputAreaInst.isFavorite(id)
|
|
: null
|
|
}
|
|
|
|
function toggleFavoriteGif(id, reload) {
|
|
if (chatSectionChatContentInputAreaInst)
|
|
chatSectionChatContentInputAreaInst.toggleFavoriteGif(id, reload)
|
|
}
|
|
|
|
function addToRecentsGif(id) {
|
|
if (chatSectionChatContentInputAreaInst)
|
|
chatSectionChatContentInputAreaInst.addToRecentsGif(id)
|
|
}
|
|
|
|
function getPasswordStrengthScore(password) {
|
|
return root.privacyModule.getPasswordStrengthScore(password);
|
|
}
|
|
|
|
function fetchMoreTransactions() {
|
|
if (RootStore.historyTransactions.count === 0
|
|
|| !RootStore.historyTransactions.hasMore
|
|
|| loadingHistoryTransactions)
|
|
return
|
|
walletSectionInst.activityController.loadMoreItems()
|
|
}
|
|
|
|
function updateTransactionFilterIfDirty() {
|
|
if (transactionActivityStatus.isFilterDirty)
|
|
walletSectionInst.activityController.updateFilter()
|
|
}
|
|
|
|
function hex2Eth(value) {
|
|
return globalUtils.hex2Eth(value)
|
|
}
|
|
|
|
function hex2Gwei(value) {
|
|
return globalUtils.hex2Gwei(value)
|
|
}
|
|
|
|
function getCurrencyAmount(amount, symbol) {
|
|
return currencyStore.getCurrencyAmount(amount, symbol)
|
|
}
|
|
|
|
function getFiatValue(balance, cryptoSymbol) {
|
|
return currencyStore.getFiatValue(balance, cryptoSymbol)
|
|
}
|
|
|
|
function getCryptoValue(balance, cryptoSymbol) {
|
|
return currencyStore.getCryptoValue(balance, cryptoSymbol)
|
|
}
|
|
|
|
function getGasEthValue(gweiValue, gasLimit) {
|
|
return currencyStore.getGasEthValue(gweiValue, gasLimit)
|
|
}
|
|
|
|
function getFeeEthValue(feeCurrency) {
|
|
if (!feeCurrency || feeCurrency.symbol !== "Gwei")
|
|
return 0
|
|
return currencyStore.getGasEthValue(feeCurrency.amount / Math.pow(10, feeCurrency.displayDecimals), 1)
|
|
}
|
|
|
|
function formatCurrencyAmount(amount, symbol, options = null, locale = null) {
|
|
return currencyStore.formatCurrencyAmount(amount, symbol, options, locale)
|
|
}
|
|
|
|
function getHistoricalDataForToken(symbol, currency) {
|
|
if (Global.appIsReady)
|
|
walletSectionAllTokens.getHistoricalDataForToken(symbol,currency)
|
|
}
|
|
|
|
function fetchDecodedTxData(txHash, input) {
|
|
walletSectionInst.fetchDecodedTxData(txHash, input)
|
|
}
|
|
|
|
function fetchTxDetails(txID) {
|
|
walletSectionInst.activityController.fetchTxDetails(txID)
|
|
walletSectionInst.activityDetailsController.fetchExtraTxDetails()
|
|
}
|
|
|
|
function getTxDetails() {
|
|
return walletSectionInst.activityDetailsController.activityDetails
|
|
}
|
|
|
|
property bool marketHistoryIsLoading: Global.appIsReady? walletSectionAllTokens.marketHistoryIsLoading : false
|
|
|
|
function fetchHistoricalBalanceForTokenAsJson(address, allAddresses, tokenSymbol, currencySymbol, timeIntervalEnum) {
|
|
if (Global.appIsReady)
|
|
walletSectionAllTokens.fetchHistoricalBalanceForTokenAsJson(address, allAddresses, tokenSymbol, currencySymbol, timeIntervalEnum)
|
|
}
|
|
|
|
property bool balanceHistoryIsLoading: Global.appIsReady? walletSectionAllTokens.balanceHistoryIsLoading : false
|
|
|
|
}
|