@@ -1606,7 +1606,17 @@ void APIHandler::ExecuteCountGet(ExecuteCountGetResult& _return, const std::stri
16061606
16071607void APIHandler::TokenBalancesGet (api::TokenBalancesResult& _return, const general::Address& address) {
16081608 const csdb::Address addr = BlockChain::getAddressFromKey (address);
1609- tm.loadTokenInfo (std::vector (1 , addr), [&_return, &addr](const TokensMap& tokens, const HoldersMap& holders) {
1609+ std::vector<csdb::Address> vtokenAddr;
1610+ tm.loadTokenInfo ({}, [&vtokenAddr, &addr](const TokensMap& tokens, const HoldersMap& holders) {
1611+ if (auto holderIt = holders.find (addr); holderIt != holders.end ()) {
1612+ for (const auto & tokAddr : holderIt->second ) {
1613+ if (tokens.find (tokAddr) != tokens.end ())
1614+ vtokenAddr.push_back (tokAddr);
1615+ }
1616+ }
1617+ }, false );
1618+
1619+ tm.loadTokenInfo (vtokenAddr, [&_return, &addr](const TokensMap& tokens, const HoldersMap& holders) {
16101620 auto holderIt = holders.find (addr);
16111621 if (holderIt != holders.end ()) {
16121622 for (const auto & tokAddr : holderIt->second ) {
@@ -1884,14 +1894,23 @@ void APIHandler::TokensListGet(api::TokensListResult& _return, int64_t offset, i
18841894
18851895 switch (order) {
18861896 case TL_Code:
1897+ #ifdef SLOW_WORK
18871898 comparator = getComparator<VT>(&Token::symbol, desc);
18881899 break ;
1900+ #endif
1901+ [[fallthrough]];
18891902 case TL_Name:
1903+ #ifdef SLOW_WORK
18901904 comparator = getComparator<VT>(&Token::name, desc);
18911905 break ;
1906+ #endif
1907+ [[fallthrough]];
18921908 case TL_Address:
1909+ #ifdef SLOW_WORK
18931910 comparator = [desc](const VT& lhs, const VT& rhs) { return desc ^ (lhs.first < rhs.first ); };
18941911 break ;
1912+ #endif
1913+ [[fallthrough]];
18951914 case TL_TotalSupply:
18961915 comparator = [desc](const VT& lhs, const VT& rhs) { return desc ^ (stod (lhs.second .totalSupply ) < stod (rhs.second .totalSupply )); };
18971916 break ;
0 commit comments