diff --git a/src/CAServer.Application/Tokens/Cache/TokenCacheProvider.cs b/src/CAServer.Application/Tokens/Cache/TokenCacheProvider.cs index f55b37f74..538ad3709 100644 --- a/src/CAServer.Application/Tokens/Cache/TokenCacheProvider.cs +++ b/src/CAServer.Application/Tokens/Cache/TokenCacheProvider.cs @@ -21,7 +21,8 @@ public class TokenCacheProvider : ITokenCacheProvider, ISingletonDependency private readonly IDistributedCache _tokenInfoCache; private readonly ILogger _logger; - public TokenCacheProvider(IContractProvider contractProvider, IDistributedCache tokenInfoCache, ILogger logger) + public TokenCacheProvider(IContractProvider contractProvider, IDistributedCache tokenInfoCache, + ILogger logger) { _contractProvider = contractProvider; _tokenInfoCache = tokenInfoCache; @@ -56,10 +57,15 @@ public async Task GetTokenInfoAsync(string chainId, string symb Issuer = output.Issuer.ToBase58(), IsBurnable = output.IsBurnable, IssueChainId = output.IssueChainId, - Expires = output.ExternalInfo?.Value.TryGetValue("__seed_exp_time", out _) == true ? - output.ExternalInfo?.Value["__seed_exp_time"] : "", - SeedOwnedSymbol = output.ExternalInfo?.Value.TryGetValue("__seed_owned_symbol", out _) == true ? - output.ExternalInfo?.Value?["__seed_owned_symbol"] : "" + Expires = output.ExternalInfo?.Value.TryGetValue("__seed_exp_time", out _) == true + ? output.ExternalInfo?.Value["__seed_exp_time"] + : "", + SeedOwnedSymbol = output.ExternalInfo?.Value.TryGetValue("__seed_owned_symbol", out _) == true + ? output.ExternalInfo?.Value?["__seed_owned_symbol"] + : "", + ImageUrl = output.ExternalInfo?.Value.TryGetValue("__ft_image_uri", out _) == true + ? output.ExternalInfo?.Value?["__ft_image_uri"] + : "" } : new GetTokenInfoDto(); await _tokenInfoCache.SetAsync(cacheKey, tokenInfoCache, new DistributedCacheEntryOptions @@ -68,6 +74,7 @@ public async Task GetTokenInfoAsync(string chainId, string symb }); return tokenInfoCache; } + return tokenInfoCache; } catch (Exception e) diff --git a/src/CAServer.Application/Tokens/TokenAppService.cs b/src/CAServer.Application/Tokens/TokenAppService.cs index f3271002d..5dc21cd66 100644 --- a/src/CAServer.Application/Tokens/TokenAppService.cs +++ b/src/CAServer.Application/Tokens/TokenAppService.cs @@ -149,8 +149,12 @@ public async Task> GetTokenListAsync(GetTokenListRequestDt var tokenInfoList = GetTokenInfoList(userTokensDto, indexerToken.TokenInfo); // Check and adjust SkipCount and MaxResultCount - var skipCount = input.SkipCount < TokensConstants.SkipCountDefault ? TokensConstants.SkipCountDefault : input.SkipCount; - var maxResultCount = input.MaxResultCount <= TokensConstants.MaxResultCountInvalid ? TokensConstants.MaxResultCountDefault : input.MaxResultCount; + var skipCount = input.SkipCount < TokensConstants.SkipCountDefault + ? TokensConstants.SkipCountDefault + : input.SkipCount; + var maxResultCount = input.MaxResultCount <= TokensConstants.MaxResultCountInvalid + ? TokensConstants.MaxResultCountDefault + : input.MaxResultCount; return tokenInfoList.Skip(skipCount).Take(maxResultCount).ToList(); } @@ -305,12 +309,15 @@ public async Task GetTokenAllowancesAsync(GetAssetsBase i SymbolApproveList = t.Items.Select(s => new SymbolApprove() { Symbol = s.Symbol, - Amount = allowanceMap.TryGetValue(GetKey(s.Symbol, t.Key.Spender, t.Key.ChainId), out long value) ? value : 0, + Amount = allowanceMap.TryGetValue(GetKey(s.Symbol, t.Key.Spender, t.Key.ChainId), out long value) + ? value + : 0, Decimals = tokenInfoDtos.FirstOrDefault(i => i.Symbol == s.Symbol.Replace("-*", "-1")) == null ? 0 : tokenInfoDtos.First(i => i.Symbol == s.Symbol.Replace("-*", "-1")).Decimals, UpdateTime = s.UpdateTime, - ImageUrl = _assetsLibraryProvider.buildSymbolImageUrl(s.Symbol), + ImageUrl = _assetsLibraryProvider.buildSymbolImageUrl(s.Symbol, + tokenInfoDtos.FirstOrDefault(i => i.Symbol == s.Symbol)?.ImageUrl), }).ToList() }).ToList(); @@ -325,7 +332,9 @@ public async Task GetTokenAllowancesAsync(GetAssetsBase i } tokenAllowanceList.Sort((t1, t2) => - (t1.Name.IsNullOrWhiteSpace() ? CommonConstant.UpperZ : t1.Name).CompareTo(t2.Name.IsNullOrWhiteSpace() ? CommonConstant.UpperZ : t2.Name)); + (t1.Name.IsNullOrWhiteSpace() ? CommonConstant.UpperZ : t1.Name).CompareTo(t2.Name.IsNullOrWhiteSpace() + ? CommonConstant.UpperZ + : t2.Name)); return new GetTokenAllowancesDto { @@ -341,7 +350,8 @@ private async Task> GetAllowanceList(List Task.Run(() => GetAllowanceTask(dto))); GetAllowanceDTO[] result = await Task.WhenAll(tasks); stopwatch.Stop(); - _logger.LogDebug("GetAllowanceList dtoList count = {0}, spendTime = {1} ms dtoList = {2}", dtoList.Count, stopwatch.ElapsedMilliseconds,JsonConvert.SerializeObject(result)); + _logger.LogDebug("GetAllowanceList dtoList count = {0}, spendTime = {1} ms dtoList = {2}", dtoList.Count, + stopwatch.ElapsedMilliseconds, JsonConvert.SerializeObject(result)); return result.ToDictionary( dto => GetKey(dto.Symbol, dto.Spender, dto.ChainId), @@ -351,7 +361,8 @@ private async Task> GetAllowanceList(List GetAllowanceTask(GetAllowanceDTO dto) { - GetAllowanceOutput output = await _contractProvider.GetAllowanceAsync(dto.Symbol, dto.Owner, dto.Spender, dto.ChainId); + GetAllowanceOutput output = + await _contractProvider.GetAllowanceAsync(dto.Symbol, dto.Owner, dto.Spender, dto.ChainId); dto.Allowance = output.Allowance; _logger.LogDebug("GetAllowanceTask dto = {0}", JsonConvert.SerializeObject(dto)); return dto; diff --git a/src/CAServer.Application/UserSecurity/UserSecurityAppService.cs b/src/CAServer.Application/UserSecurity/UserSecurityAppService.cs index 8ff2cd1c3..eba905dec 100644 --- a/src/CAServer.Application/UserSecurity/UserSecurityAppService.cs +++ b/src/CAServer.Application/UserSecurity/UserSecurityAppService.cs @@ -486,7 +486,8 @@ private async Task GeneratorTransferLimitAsync(IndexerSearchTo Restricted = true }; - transferLimit.ImageUrl = _assetsLibraryProvider.buildSymbolImageUrl(token.TokenInfo.Symbol); + transferLimit.ImageUrl = + _assetsLibraryProvider.buildSymbolImageUrl(token.TokenInfo.Symbol, token.TokenInfo.ImageUrl); if (_securityOptions.TokenTransferLimitDict[token.ChainId].SingleTransferLimit .TryGetValue(token.TokenInfo.Symbol, out var singleLimit))