diff --git a/CHANGELOG.md b/CHANGELOG.md index 3b65bf0db6..cbc2092c8a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ### Features ### Fixes +- [#2538](https://github.com/poanetwork/blockscout/pull/2538) - fetch the last not empty coin balance records ### Chore @@ -19,7 +20,9 @@ - [#2403](https://github.com/poanetwork/blockscout/pull/2403) - Return gasPrice field at the result of gettxinfo method ### Fixes -- [#2538](https://github.com/poanetwork/blockscout/pull/2538) - fetch the last not empty coin balance records +- [#2562](https://github.com/poanetwork/blockscout/pull/2562) - Fix dark theme flickering +- [#2560](https://github.com/poanetwork/blockscout/pull/2560) - fix slash before not empty path in docs +- [#2559](https://github.com/poanetwork/blockscout/pull/2559) - fix rsk total supply for empty exchange rate - [#2553](https://github.com/poanetwork/blockscout/pull/2553) - Dark theme import to the end of sass - [#2550](https://github.com/poanetwork/blockscout/pull/2550) - correctly encode decimal values for frontend - [#2549](https://github.com/poanetwork/blockscout/pull/2549) - Fix wrong colour of tooltip diff --git a/apps/block_scout_web/lib/block_scout_web/templates/api_docs/eth_rpc.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/api_docs/eth_rpc.html.eex index 0b44781e1e..7b8a9a98de 100644 --- a/apps/block_scout_web/lib/block_scout_web/templates/api_docs/eth_rpc.html.eex +++ b/apps/block_scout_web/lib/block_scout_web/templates/api_docs/eth_rpc.html.eex @@ -2,7 +2,7 @@

<%= gettext("ETH RPC API Documentation") %>

-

[ <%= gettext "Base URL:" %> <%= blockscout_url() %>api/eth_rpc ]

+

[ <%= gettext "Base URL:" %> <%= eth_rpc_api_url()%> ]

<%= gettext "This API is provided to support some rpc methods in the exact format specified for ethereum nodes, which can be found " %> diff --git a/apps/block_scout_web/lib/block_scout_web/templates/api_docs/index.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/api_docs/index.html.eex index 8f24a9cace..59dae38cdb 100644 --- a/apps/block_scout_web/lib/block_scout_web/templates/api_docs/index.html.eex +++ b/apps/block_scout_web/lib/block_scout_web/templates/api_docs/index.html.eex @@ -2,7 +2,7 @@

<%= gettext("API Documentation") %>

-

[ <%= gettext "Base URL:" %> <%= blockscout_url() %>api ]

+

[ <%= gettext "Base URL:" %> <%= api_url()%> ]

<%= gettext "This API is provided for developers transitioning their applications from Etherscan to BlockScout. It supports GET and POST requests." %>

diff --git a/apps/block_scout_web/lib/block_scout_web/templates/layout/_topnav.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/layout/_topnav.html.eex index b628e1245d..970206636c 100644 --- a/apps/block_scout_web/lib/block_scout_web/templates/layout/_topnav.html.eex +++ b/apps/block_scout_web/lib/block_scout_web/templates/layout/_topnav.html.eex @@ -159,6 +159,5 @@ if (localStorage.getItem("current-color-mode") === "dark") { var modeChanger = document.getElementById("dark-mode-changer"); modeChanger.className += " " + "dark-mode-changer--dark"; - document.body.className += " " + "dark-theme-applied"; } \ No newline at end of file diff --git a/apps/block_scout_web/lib/block_scout_web/templates/layout/app.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/layout/app.html.eex index d8ecb167f1..d14657cc6d 100644 --- a/apps/block_scout_web/lib/block_scout_web/templates/layout/app.html.eex +++ b/apps/block_scout_web/lib/block_scout_web/templates/layout/app.html.eex @@ -23,9 +23,13 @@
<%= if not Explorer.Chain.finished_indexing?() do %> diff --git a/apps/block_scout_web/lib/block_scout_web/views/api_docs_view.ex b/apps/block_scout_web/lib/block_scout_web/views/api_docs_view.ex index f71ebc240b..ac7d4d55ee 100644 --- a/apps/block_scout_web/lib/block_scout_web/views/api_docs_view.ex +++ b/apps/block_scout_web/lib/block_scout_web/views/api_docs_view.ex @@ -46,4 +46,18 @@ defmodule BlockScoutWeb.APIDocsView do Endpoint.url() end end + + def api_url do + handle_slash("api") + end + + def eth_rpc_api_url do + handle_slash("api/eth_rpc") + end + + defp handle_slash(path) do + base_url = blockscout_url() + + Path.join(base_url, path) + end end diff --git a/apps/block_scout_web/priv/gettext/default.pot b/apps/block_scout_web/priv/gettext/default.pot index 1a99ada8ad..886a88e4c0 100644 --- a/apps/block_scout_web/priv/gettext/default.pot +++ b/apps/block_scout_web/priv/gettext/default.pot @@ -62,7 +62,7 @@ msgid "(query)" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/layout/app.html.eex:38 +#: lib/block_scout_web/templates/layout/app.html.eex:42 msgid "- We're indexing this chain right now. Some of the counts may be inaccurate." msgstr "" @@ -157,7 +157,7 @@ msgid "Block Height: %{height}" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/layout/app.html.eex:53 +#: lib/block_scout_web/templates/layout/app.html.eex:57 msgid "Block Mined, awaiting import..." msgstr "" @@ -184,7 +184,7 @@ msgid "Blocks" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/layout/app.html.eex:52 +#: lib/block_scout_web/templates/layout/app.html.eex:56 msgid "Blocks Indexed" msgstr "" @@ -376,7 +376,7 @@ msgstr "" #, elixir-format #: lib/block_scout_web/templates/address/_balance_card.html.eex:15 #: lib/block_scout_web/templates/internal_transaction/_tile.html.eex:20 -#: lib/block_scout_web/templates/layout/app.html.eex:58 +#: lib/block_scout_web/templates/layout/app.html.eex:62 #: lib/block_scout_web/templates/transaction/_pending_tile.html.eex:20 #: lib/block_scout_web/templates/transaction/_tile.html.eex:29 #: lib/block_scout_web/templates/transaction/overview.html.eex:179 @@ -457,7 +457,7 @@ msgid "IN" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/layout/app.html.eex:54 +#: lib/block_scout_web/templates/layout/app.html.eex:58 msgid "Indexing Tokens" msgstr "" @@ -489,7 +489,7 @@ msgid "Inventory" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/layout/app.html.eex:55 +#: lib/block_scout_web/templates/layout/app.html.eex:59 msgid "Less than" msgstr "" @@ -510,7 +510,7 @@ msgstr "" #, elixir-format #: lib/block_scout_web/templates/chain/show.html.eex:31 -#: lib/block_scout_web/templates/layout/app.html.eex:56 +#: lib/block_scout_web/templates/layout/app.html.eex:60 #: lib/block_scout_web/views/address_view.ex:121 #: lib/block_scout_web/views/address_view.ex:121 msgid "Market Cap" @@ -629,7 +629,7 @@ msgstr "" #, elixir-format #: lib/block_scout_web/templates/chain/show.html.eex:24 -#: lib/block_scout_web/templates/layout/app.html.eex:57 +#: lib/block_scout_web/templates/layout/app.html.eex:61 msgid "Price" msgstr "" diff --git a/apps/block_scout_web/priv/gettext/en/LC_MESSAGES/default.po b/apps/block_scout_web/priv/gettext/en/LC_MESSAGES/default.po index 735b716ec4..8fd1e1ff2e 100644 --- a/apps/block_scout_web/priv/gettext/en/LC_MESSAGES/default.po +++ b/apps/block_scout_web/priv/gettext/en/LC_MESSAGES/default.po @@ -62,7 +62,7 @@ msgid "(query)" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/layout/app.html.eex:38 +#: lib/block_scout_web/templates/layout/app.html.eex:42 msgid "- We're indexing this chain right now. Some of the counts may be inaccurate." msgstr "" @@ -136,8 +136,8 @@ msgstr "" #, elixir-format #: lib/block_scout_web/templates/block/_link.html.eex:2 -#: lib/block_scout_web/templates/internal_transaction/_tile.html.eex:29 -#: lib/block_scout_web/templates/tokens/transfer/_token_transfer.html.eex:40 +#: lib/block_scout_web/templates/internal_transaction/_tile.html.eex:28 +#: lib/block_scout_web/templates/tokens/transfer/_token_transfer.html.eex:39 msgid "Block #%{number}" msgstr "" @@ -157,7 +157,7 @@ msgid "Block Height: %{height}" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/layout/app.html.eex:53 +#: lib/block_scout_web/templates/layout/app.html.eex:57 msgid "Block Mined, awaiting import..." msgstr "" @@ -184,7 +184,7 @@ msgid "Blocks" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/layout/app.html.eex:52 +#: lib/block_scout_web/templates/layout/app.html.eex:56 msgid "Blocks Indexed" msgstr "" @@ -211,10 +211,10 @@ msgstr "" #, elixir-format #: lib/block_scout_web/templates/address/_validator_metadata_modal.html.eex:37 -#: lib/block_scout_web/templates/address/overview.html.eex:146 -#: lib/block_scout_web/templates/address/overview.html.eex:154 -#: lib/block_scout_web/templates/tokens/overview/_details.html.eex:107 -#: lib/block_scout_web/templates/tokens/overview/_details.html.eex:115 +#: lib/block_scout_web/templates/address/overview.html.eex:145 +#: lib/block_scout_web/templates/address/overview.html.eex:153 +#: lib/block_scout_web/templates/tokens/overview/_details.html.eex:106 +#: lib/block_scout_web/templates/tokens/overview/_details.html.eex:114 msgid "Close" msgstr "" @@ -375,12 +375,12 @@ msgstr "" #, elixir-format #: lib/block_scout_web/templates/address/_balance_card.html.eex:15 -#: lib/block_scout_web/templates/internal_transaction/_tile.html.eex:21 -#: lib/block_scout_web/templates/layout/app.html.eex:58 +#: lib/block_scout_web/templates/internal_transaction/_tile.html.eex:20 +#: lib/block_scout_web/templates/layout/app.html.eex:62 #: lib/block_scout_web/templates/transaction/_pending_tile.html.eex:20 -#: lib/block_scout_web/templates/transaction/_tile.html.eex:30 +#: lib/block_scout_web/templates/transaction/_tile.html.eex:29 #: lib/block_scout_web/templates/transaction/overview.html.eex:179 -#: lib/block_scout_web/templates/transaction/overview.html.eex:211 +#: lib/block_scout_web/templates/transaction/overview.html.eex:209 #: lib/block_scout_web/views/wei_helpers.ex:78 msgid "Ether" msgstr "POA" @@ -451,13 +451,13 @@ msgid "Hash" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/internal_transaction/_tile.html.eex:39 -#: lib/block_scout_web/templates/transaction/_tile.html.eex:74 +#: lib/block_scout_web/templates/internal_transaction/_tile.html.eex:38 +#: lib/block_scout_web/templates/transaction/_tile.html.eex:72 msgid "IN" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/layout/app.html.eex:54 +#: lib/block_scout_web/templates/layout/app.html.eex:58 msgid "Indexing Tokens" msgstr "" @@ -489,12 +489,12 @@ msgid "Inventory" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/layout/app.html.eex:55 +#: lib/block_scout_web/templates/layout/app.html.eex:59 msgid "Less than" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/transaction/overview.html.eex:239 +#: lib/block_scout_web/templates/transaction/overview.html.eex:237 msgid "Limit" msgstr "" @@ -510,7 +510,7 @@ msgstr "" #, elixir-format #: lib/block_scout_web/templates/chain/show.html.eex:31 -#: lib/block_scout_web/templates/layout/app.html.eex:56 +#: lib/block_scout_web/templates/layout/app.html.eex:60 #: lib/block_scout_web/views/address_view.ex:121 #: lib/block_scout_web/views/address_view.ex:121 msgid "Market Cap" @@ -578,8 +578,8 @@ msgid "Nonce" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/internal_transaction/_tile.html.eex:37 -#: lib/block_scout_web/templates/transaction/_tile.html.eex:70 +#: lib/block_scout_web/templates/internal_transaction/_tile.html.eex:36 +#: lib/block_scout_web/templates/transaction/_tile.html.eex:68 msgid "OUT" msgstr "" @@ -629,15 +629,15 @@ msgstr "" #, elixir-format #: lib/block_scout_web/templates/chain/show.html.eex:24 -#: lib/block_scout_web/templates/layout/app.html.eex:57 +#: lib/block_scout_web/templates/layout/app.html.eex:61 msgid "Price" msgstr "" #, elixir-format #: lib/block_scout_web/templates/address/overview.html.eex:33 -#: lib/block_scout_web/templates/address/overview.html.eex:145 +#: lib/block_scout_web/templates/address/overview.html.eex:144 #: lib/block_scout_web/templates/tokens/overview/_details.html.eex:36 -#: lib/block_scout_web/templates/tokens/overview/_details.html.eex:106 +#: lib/block_scout_web/templates/tokens/overview/_details.html.eex:105 msgid "QR Code" msgstr "" @@ -709,7 +709,7 @@ msgstr "" #, elixir-format #: lib/block_scout_web/templates/transaction/_pending_tile.html.eex:21 -#: lib/block_scout_web/templates/transaction/_tile.html.eex:34 +#: lib/block_scout_web/templates/transaction/_tile.html.eex:32 #: lib/block_scout_web/templates/transaction/overview.html.eex:84 msgid "TX Fee" msgstr "" @@ -915,7 +915,7 @@ msgid "Unique Token" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/transaction/overview.html.eex:233 +#: lib/block_scout_web/templates/transaction/overview.html.eex:231 msgid "Used" msgstr "" @@ -936,7 +936,7 @@ msgstr "" #, elixir-format #: lib/block_scout_web/templates/transaction/overview.html.eex:179 -#: lib/block_scout_web/templates/transaction/overview.html.eex:211 +#: lib/block_scout_web/templates/transaction/overview.html.eex:209 msgid "Value" msgstr "" @@ -957,12 +957,12 @@ msgid "View Contract" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/transaction/_tile.html.eex:55 +#: lib/block_scout_web/templates/transaction/_tile.html.eex:53 msgid "View Less Transfers" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/transaction/_tile.html.eex:54 +#: lib/block_scout_web/templates/transaction/_tile.html.eex:52 msgid "View More Transfers" msgstr "" @@ -1002,7 +1002,7 @@ msgid "Yes" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address/overview.html.eex:113 +#: lib/block_scout_web/templates/address/overview.html.eex:112 msgid "at" msgstr "" @@ -1450,7 +1450,7 @@ msgid "Incoming Transactions" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address/overview.html.eex:121 +#: lib/block_scout_web/templates/address/overview.html.eex:120 msgid "Error: Could not determine contract creator." msgstr "" @@ -1513,7 +1513,7 @@ msgid "View All Transactions" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/transaction/overview.html.eex:229 +#: lib/block_scout_web/templates/transaction/overview.html.eex:227 msgid "Gas" msgstr "" diff --git a/apps/block_scout_web/test/block_scout_web/views/api_docs_view_test.exs b/apps/block_scout_web/test/block_scout_web/views/api_docs_view_test.exs index da43a33ad0..434f43d31b 100644 --- a/apps/block_scout_web/test/block_scout_web/views/api_docs_view_test.exs +++ b/apps/block_scout_web/test/block_scout_web/views/api_docs_view_test.exs @@ -28,4 +28,40 @@ defmodule BlockScoutWeb.ApiDocsViewTest do assert APIDocsView.blockscout_url() == "https://blockscout.com/chain/dog" end end + + describe "api_url/1" do + test "adds slash before path" do + Application.put_env(:block_scout_web, BlockScoutWeb.Endpoint, + url: [scheme: "https", host: "blockscout.com", port: 9999, path: "/chain/dog"] + ) + + assert APIDocsView.api_url() == "https://blockscout.com/chain/dog/api" + end + + test "does not add slash to empty path" do + Application.put_env(:block_scout_web, BlockScoutWeb.Endpoint, + url: [scheme: "https", host: "blockscout.com", port: 9999, path: ""] + ) + + assert APIDocsView.api_url() == "https://blockscout.com/api" + end + end + + describe "eth_rpc_api_url/1" do + test "adds slash before path" do + Application.put_env(:block_scout_web, BlockScoutWeb.Endpoint, + url: [scheme: "https", host: "blockscout.com", port: 9999, path: "/chain/dog"] + ) + + assert APIDocsView.eth_rpc_api_url() == "https://blockscout.com/chain/dog/api/eth_rpc" + end + + test "does not add slash to empty path" do + Application.put_env(:block_scout_web, BlockScoutWeb.Endpoint, + url: [scheme: "https", host: "blockscout.com", port: 9999, path: ""] + ) + + assert APIDocsView.eth_rpc_api_url() == "https://blockscout.com/api/eth_rpc" + end + end end diff --git a/apps/explorer/lib/explorer/chain/supply/rsk.ex b/apps/explorer/lib/explorer/chain/supply/rsk.ex index cdb043418b..eb7c4571cd 100644 --- a/apps/explorer/lib/explorer/chain/supply/rsk.ex +++ b/apps/explorer/lib/explorer/chain/supply/rsk.ex @@ -17,12 +17,14 @@ defmodule Explorer.Chain.Supply.RSK do @cache_name :rsk_balance @balance_key :balance - def market_cap(exchange_rate) do + def market_cap(%{usd_value: usd_value}) when not is_nil(usd_value) do btc = circulating() - Decimal.mult(btc, exchange_rate.usd_value) + Decimal.mult(btc, usd_value) end + def market_cap(_), do: Decimal.new(0) + @doc "Equivalent to getting the circulating value " def supply_for_days(days) do now = Timex.now() diff --git a/apps/explorer/test/explorer/chain/supply/rsk_test.exs b/apps/explorer/test/explorer/chain/supply/rsk_test.exs index 71d3a530bb..6efc2bb844 100644 --- a/apps/explorer/test/explorer/chain/supply/rsk_test.exs +++ b/apps/explorer/test/explorer/chain/supply/rsk_test.exs @@ -24,7 +24,17 @@ defmodule Explorer.Chain.Supply.RSKTest do exchange_rate = %{Token.null() | usd_value: Decimal.new(1_000_000)} - assert Decimal.equal?(RSK.market_cap(exchange_rate), Decimal.new(100.0000)) + assert Decimal.equal?(RSK.market_cap(exchange_rate), Decimal.from_float(100.0000)) + end + + test "returns zero when exchange_rate is empty" do + assert RSK.market_cap(nil) == Decimal.new(0) + end + + test "returns zero when usd_value is nil" do + exchange_rate = %{Token.null() | usd_value: nil} + + assert RSK.market_cap(exchange_rate) == Decimal.new(0) end end