Skip to content

Commit

Permalink
Merge branch 'dev_sol' into 'dev'
Browse files Browse the repository at this point in the history
Fix: sol tokens

See merge request Trustee/trusteewallet!354
  • Loading branch information
Turtus committed May 8, 2024
2 parents 25384eb + e3e70d0 commit cb099c7
Show file tree
Hide file tree
Showing 7 changed files with 30 additions and 64 deletions.
11 changes: 0 additions & 11 deletions app/daemons/back/UpdateAppNewsDaemon.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,12 +50,7 @@ class UpdateAppNewsDaemon {

const walletHash = await settingsActions.getSelectedWallet('UpdateNewsDaemon')
let res
let asked = false
if (!dataUpdate) {
if (config.debug.appErrors) {
console.log(new Date().toISOString() + ' UpdateNewsDaemon loading new')
}
asked = true
try {
res = await ApiProxy.getAll({...params, source: 'UpdateAppNewsDaemon.updateAppNews' })
} catch (e) {
Expand All @@ -80,12 +75,6 @@ class UpdateAppNewsDaemon {
return false
}

if (!asked) {
if (config.debug.appErrors) {
console.log(new Date().toISOString() + ' UpdateNewsDaemon loaded proxy')
}
}

CACHE_NEWS_HASH = typeof res.newsHash !== 'undefined' ? res.newsHash : ''

const keys = {
Expand Down
13 changes: 0 additions & 13 deletions app/daemons/back/UpdateCardsDaemon.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,17 +34,12 @@ class UpdateCardsDaemon {

Log.daemon('UpdateCardsDaemon called')

let asked = false
if (!dataUpdate) {
const authHash = await settingsActions.getSelectedWallet('UpdateCardsDaemon')
if (!authHash) {
Log.daemon('UpdateCardsDaemon skipped as no auth')
return false
}
if (config.debug.appErrors) {
console.log(new Date().toISOString() + ' UpdateCardsDaemon loading new')
}
asked = true
try {
dataUpdate = await ApiProxy.getAll({ ...params, source: 'UpdateCardsDaemon.updateCards' })
} catch (e) {
Expand All @@ -60,11 +55,6 @@ class UpdateCardsDaemon {
}

if (typeof dataUpdate.forCardsAll !== 'undefined' && dataUpdate.forCardsAll) {
if (!asked) {
if (config.debug.appErrors) {
console.log(new Date().toISOString() + ' UpdateCardsDaemon loaded proxy forCardsAll')
}
}
try {
const saved = await cardDS.getCards()
const cardsSaved = {}
Expand Down Expand Up @@ -146,9 +136,6 @@ class UpdateCardsDaemon {
return false
}
} else if (typeof dataUpdate.forCardsOk !== 'undefined' && dataUpdate.forCardsOk) {
if (!asked) {
console.log(new Date().toISOString() + ' UpdateCardsDaemon loaded proxy forCardsOk', JSON.stringify(params))
}
try {
for (const number in dataUpdate.forCardsOk) {
const dataOne = dataUpdate.forCardsOk[number]
Expand Down
6 changes: 0 additions & 6 deletions app/daemons/back/UpdateCashBackDataDaemon.js
Original file line number Diff line number Diff line change
Expand Up @@ -77,12 +77,6 @@ class UpdateCashBackDataDaemon {
return
}

if (!asked) {
if (config.debug.appErrors) {
console.log(new Date().toISOString() + ' UpdateCashBackDataDaemon loaded proxy')
}
}

try {
Log.daemon('UpdateCashBackDataDaemon result ', data)
data.time = new Date().getTime()
Expand Down
11 changes: 0 additions & 11 deletions app/daemons/back/UpdateTradeOrdersDaemon.js
Original file line number Diff line number Diff line change
Expand Up @@ -140,12 +140,7 @@ class UpdateTradeOrdersDaemon {
try {

let res = false
let asked = false
if (!dataUpdate) {
if (config.debug.appErrors) {
console.log(new Date().toISOString() + ' UpdateTradeOrdersDaemon loading new')
}
asked = true
res = await ApiProxy.getAll({ source: 'UpdateTradeOrdersDaemon.updateTradeOrders' })
if (config.debug.appErrors) {
console.log(new Date().toISOString() + ' UpdateTradeOrdersDaemon loaded new finished')
Expand All @@ -170,12 +165,6 @@ class UpdateTradeOrdersDaemon {
return false
}

if (!asked) {
if (config.debug.appErrors) {
console.log(new Date().toISOString() + ' UpdateTradeOrdersDaemon loaded proxy')
}
}

let item

const index = {}
Expand Down
10 changes: 0 additions & 10 deletions app/daemons/back/UpdateWalletsDaemon.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,17 +34,12 @@ class UpdateWalletsDaemon {

Log.daemon('UpdateWalletsDaemon called')

let asked = false
if (!dataUpdate) {
const authHash = await settingsActions.getSelectedWallet('_updateWalletsDaemon')
if (!authHash) {
Log.daemon('UpdateWalletsDaemon skipped as no auth')
return false
}
if (config.debug.appErrors) {
console.log(new Date().toISOString() + ' UpdateWalletsDaemon loading new')
}
asked = true
try {
dataUpdate = await ApiProxy.getAll({ ...params, source: 'UpdateWalletsDaemon.updateWallets' })
} catch (e) {
Expand All @@ -60,11 +55,6 @@ class UpdateWalletsDaemon {
}

if (typeof dataUpdate.forWalletsAll !== 'undefined' && dataUpdate.forWalletsAll) {
if (!asked) {
if (config.debug.appErrors) {
console.log(new Date().toISOString() + ' UpdateWalletsDaemon loaded proxy forWalletsAll')
}
}
try {

const saved = await walletDS.getWallets()
Expand Down
24 changes: 15 additions & 9 deletions crypto/blockchains/sol/SolScannerProcessor.js
Original file line number Diff line number Diff line change
Expand Up @@ -66,11 +66,14 @@ export default class SolScannerProcessor {
* @param {string} scanData.account.address
* @return {Promise<[UnifiedTransaction]>}
* https://docs.solana.com/developing/clients/jsonrpc-api#getsignaturesforaddress
* curl https://api.mainnet-beta.solana.com -X POST -H "Content-Type: application/json" -d '{'jsonrpc": "2.0","id": 1,"method": "getConfirmedSignaturesForAddress2","params": ["9mnBdsuL1x24HbU4oeNDBAYVAGg2vVndkRAc18kPNqCJ",{"limit': 1}]}'
*/
async getTransactionsBlockchain(scanData, source) {
return this._getTransactionsBlockchainInner(scanData, source, this.tokenAddress)
}

async _getTransactionsBlockchainInner(scanData, source, tokenAddress) {
const address = scanData.account.address.trim()
const lastHashVar = address + this.tokenAddress
const lastHashVar = address + tokenAddress
this._cleanCache()
try {
if (typeof CACHE_FROM_DB[lastHashVar] === 'undefined') {
Expand All @@ -80,11 +83,11 @@ export default class SolScannerProcessor {
const data = {
'jsonrpc': '2.0',
'id': 1,
'method': 'getConfirmedSignaturesForAddress2',
'method': 'getSignaturesForAddress',
'params': [
address,
{
'limit': 100
'limit': 2
}
]
}
Expand Down Expand Up @@ -156,6 +159,9 @@ export default class SolScannerProcessor {
}

async _unifyTransaction(address, transaction) {
return this._unifyTransactionInner(address, transaction, this.tokenAddress)
}
async _unifyTransactionInner(address, transaction, tokenAddress) {

const data = {
'jsonrpc': '2.0',
Expand Down Expand Up @@ -198,15 +204,15 @@ export default class SolScannerProcessor {
const indexedCreated = {}
const indexedAssociated = {}

if (this.tokenAddress) {
if (tokenAddress) {
for (const tmp of additional.meta.preTokenBalances) {
if (tmp.mint !== this.tokenAddress) continue
if (tmp.mint !== tokenAddress) continue
const realIndex = tmp.accountIndex
indexedPre[realIndex] = tmp.uiTokenAmount.amount
}

for (const tmp of additional.meta.postTokenBalances) {
if (tmp.mint !== this.tokenAddress) continue
if (tmp.mint !== tokenAddress) continue
const realIndex = tmp.accountIndex
indexedPost[realIndex] = tmp.uiTokenAmount.amount
}
Expand All @@ -221,7 +227,7 @@ export default class SolScannerProcessor {
if (tmpAddress.pubkey === '11111111111111111111111111111111') continue
const sourceAssociatedTokenAddress = await SolUtils.findAssociatedTokenAddress(
tmpAddress.pubkey,
this.tokenAddress
tokenAddress
)
indexedAssociated[sourceAssociatedTokenAddress] = tmpAddress
}
Expand All @@ -238,7 +244,7 @@ export default class SolScannerProcessor {
if (typeof indexedAssociated[tmpAddress.pubkey] !== 'undefined') {
tmpAddress = indexedAssociated[tmpAddress.pubkey]
}
if (this.tokenAddress) {
if (tokenAddress) {
const to = typeof indexedPost[i] !== 'undefined' ? indexedPost[i] : 0
const from = typeof indexedPre[i] !== 'undefined' ? indexedPre[i] : 0
tmpAmount = BlocksoftUtils.diff(to, from).toString()
Expand Down
19 changes: 15 additions & 4 deletions crypto/blockchains/sol/SolScannerProcessorSpl.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import BlocksoftAxios from '@crypto/common/BlocksoftAxios'
import BlocksoftExternalSettings from '@crypto/common/BlocksoftExternalSettings'

import SolScannerProcessor from '@crypto/blockchains/sol/SolScannerProcessor'
import config from "@app/config/config";

const CACHE_BALANCES = {}
const CACHE_VALID_TIME = 30000 // 30 seconds
Expand All @@ -15,15 +16,16 @@ export default class SolScannerProcessorSpl extends SolScannerProcessor {
/**
* @param {string} address
* @return {Promise<{balance, provider}>}
* https://solana.com/docs/rpc/http/gettokenaccountsbyowner
*/
async getBalanceBlockchain(address) {
address = address.trim()
BlocksoftCryptoLog.log(this._settings.currencyCode + ' SolScannerProcessorSpl getBalanceBlockchain address ' + address)

const now = new Date().getTime()
let balance = 0
try {
if (typeof CACHE_BALANCES[address] === 'undefined' || typeof CACHE_BALANCES[address].time === 'undefined' || (now - CACHE_BALANCES[address].time < CACHE_VALID_TIME)) {
BlocksoftCryptoLog.log(this._settings.currencyCode + ' SolScannerProcessorSpl getBalanceBlockchain actual scan address ' + address)
CACHE_BALANCES[address] = {}
const apiPath = BlocksoftExternalSettings.getStatic('SOL_SERVER')

Expand All @@ -36,7 +38,7 @@ export default class SolScannerProcessorSpl extends SolScannerProcessor {
{
programId: 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'
},
{ encoding: 'jsonParsed', commitment: 'processed' }
{ encoding: 'jsonParsed' }
]
}

Expand All @@ -48,8 +50,8 @@ export default class SolScannerProcessorSpl extends SolScannerProcessor {
if (typeof account.account === 'undefined') continue
if (typeof account.account.data.program === 'undefined' || account.account.data.program !== 'spl-token') continue
const parsed = account.account.data.parsed.info
if (typeof parsed.state === 'undefined' && parsed.state !== 'initialized') continue
CACHE_BALANCES[address][parsed.mint] = parsed.tokenAmount // "amount": "1606300", "decimals": 6, "uiAmount": 1.6063, "uiAmountString": "1.6063"
if (typeof parsed.mint === 'undefined') continue
CACHE_BALANCES[address][parsed.mint] = parsed?.tokenAmount // "amount": "1606300", "decimals": 6, "uiAmount": 1.6063, "uiAmountString": "1.6063"
}
CACHE_BALANCES[address].time = now
}
Expand All @@ -59,9 +61,18 @@ export default class SolScannerProcessorSpl extends SolScannerProcessor {
balance = CACHE_BALANCES[address][this.tokenAddress].amount * 1
}
} catch (e) {
if (config.debug.cryptoErrors) {
console.log(this._settings.currencyCode + ' SolScannerProcessorSpl getBalanceBlockchain address ' + address + ' error ' + e.message)
}
BlocksoftCryptoLog.log(this._settings.currencyCode + ' SolScannerProcessorSpl getBalanceBlockchain address ' + address + ' error ' + e.message)
return false
}
return { balance, unconfirmed: 0, provider: 'solana-api' }
}
async getTransactionsBlockchain(scanData, source) {
return this._getTransactionsBlockchainInner(scanData, source, this.tokenAddress)
}
async _unifyTransaction(address, transaction) {
return this._unifyTransactionInner(address, transaction, this.tokenAddress)
}
}

0 comments on commit cb099c7

Please sign in to comment.