diff --git a/apps/explorer_web/lib/explorer_web/templates/address_internal_transaction/index.html.eex b/apps/explorer_web/lib/explorer_web/templates/address_internal_transaction/index.html.eex index 602fd4326f..713b18a161 100644 --- a/apps/explorer_web/lib/explorer_web/templates/address_internal_transaction/index.html.eex +++ b/apps/explorer_web/lib/explorer_web/templates/address_internal_transaction/index.html.eex @@ -103,7 +103,18 @@ <%= render ExplorerWeb.AddressView, "_link.html", conn: @conn, address: internal_transaction.from_address %> - <%= render ExplorerWeb.AddressView, "_link.html", conn: @conn, address: internal_transaction.to_address %> + <%= if ExplorerWeb.InternalTransactionView.create?(internal_transaction) do %> + + <%= link( + gettext("Contract Creation"), + class: "transaction__link", + "data-address-hash": internal_transaction.created_contract_address_hash, + to: address_path(ExplorerWeb.Endpoint, :show, @locale, internal_transaction.created_contract_address_hash), + title: internal_transaction.created_contract_address_hash + ) %> + <% else %> + <%= render ExplorerWeb.AddressView, "_link.html", conn: @conn, address: internal_transaction.to_address %> + <% end %> <%= ExplorerWeb.TransactionView.value(internal_transaction, include_label: false) %> diff --git a/apps/explorer_web/lib/explorer_web/templates/transaction_internal_transaction/index.html.eex b/apps/explorer_web/lib/explorer_web/templates/transaction_internal_transaction/index.html.eex index 34c4a9b2ec..5d017d1d00 100644 --- a/apps/explorer_web/lib/explorer_web/templates/transaction_internal_transaction/index.html.eex +++ b/apps/explorer_web/lib/explorer_web/templates/transaction_internal_transaction/index.html.eex @@ -41,7 +41,18 @@ <%= render ExplorerWeb.AddressView, "_link.html", conn: @conn, address: internal_transaction.from_address %> - <%= render ExplorerWeb.AddressView, "_link.html", conn: @conn, address: internal_transaction.to_address %> + <%= if ExplorerWeb.InternalTransactionView.create?(internal_transaction) do %> + + <%= link( + gettext("Contract Creation"), + class: "transaction__link", + "data-address-hash": internal_transaction.created_contract_address_hash, + to: address_path(ExplorerWeb.Endpoint, :show, @locale, internal_transaction.created_contract_address_hash), + title: internal_transaction.created_contract_address_hash + ) %> + <% else %> + <%= render ExplorerWeb.AddressView, "_link.html", conn: @conn, address: internal_transaction.to_address %> + <% end %> <%= ExplorerWeb.TransactionView.value(internal_transaction, include_label: false) %> <%= ExplorerWeb.TransactionView.gas(internal_transaction) %> diff --git a/apps/explorer_web/lib/explorer_web/views/internal_transaction_view.ex b/apps/explorer_web/lib/explorer_web/views/internal_transaction_view.ex index 5b82153dc0..c7972efa47 100644 --- a/apps/explorer_web/lib/explorer_web/views/internal_transaction_view.ex +++ b/apps/explorer_web/lib/explorer_web/views/internal_transaction_view.ex @@ -1,4 +1,9 @@ defmodule ExplorerWeb.InternalTransactionView do use ExplorerWeb, :view @dialyzer :no_match + + alias Explorer.Chain.InternalTransaction + + def create?(%InternalTransaction{type: :create}), do: true + def create?(_), do: false end diff --git a/apps/explorer_web/priv/gettext/default.pot b/apps/explorer_web/priv/gettext/default.pot index 941e7de75d..acd1a97fcc 100644 --- a/apps/explorer_web/priv/gettext/default.pot +++ b/apps/explorer_web/priv/gettext/default.pot @@ -355,8 +355,8 @@ msgstr "" msgid "Search by address, transaction hash, or block number" msgstr "" -#: lib/explorer_web/templates/address_internal_transaction/index.html.eex:114 -#: lib/explorer_web/templates/transaction_internal_transaction/index.html.eex:53 +#: lib/explorer_web/templates/address_internal_transaction/index.html.eex:125 +#: lib/explorer_web/templates/transaction_internal_transaction/index.html.eex:64 msgid "There are no Internal Transactions" msgstr "" @@ -504,13 +504,13 @@ msgstr "" msgid "There are no Transactions" msgstr "" -#: lib/explorer_web/templates/address_internal_transaction/index.html.eex:120 +#: lib/explorer_web/templates/address_internal_transaction/index.html.eex:131 #: lib/explorer_web/templates/address_transaction/index.html.eex:139 #: lib/explorer_web/templates/block/index.html.eex:60 #: lib/explorer_web/templates/block_transaction/index.html.eex:200 #: lib/explorer_web/templates/pending_transaction/index.html.eex:69 #: lib/explorer_web/templates/transaction/index.html.eex:90 -#: lib/explorer_web/templates/transaction_internal_transaction/index.html.eex:60 +#: lib/explorer_web/templates/transaction_internal_transaction/index.html.eex:71 msgid "Older" msgstr "" @@ -544,3 +544,9 @@ msgstr "" #: lib/explorer_web/templates/transaction_log/index.html.eex:73 msgid "Newer" msgstr "" + +#, elixir-format +#: lib/explorer_web/templates/address_internal_transaction/index.html.eex:109 +#: lib/explorer_web/templates/transaction_internal_transaction/index.html.eex:47 +msgid "Contract Creation" +msgstr "" diff --git a/apps/explorer_web/priv/gettext/en/LC_MESSAGES/default.po b/apps/explorer_web/priv/gettext/en/LC_MESSAGES/default.po index 508d684272..25bc9849a5 100644 --- a/apps/explorer_web/priv/gettext/en/LC_MESSAGES/default.po +++ b/apps/explorer_web/priv/gettext/en/LC_MESSAGES/default.po @@ -367,8 +367,8 @@ msgstr "" msgid "Search by address, transaction hash, or block number" msgstr "" -#: lib/explorer_web/templates/address_internal_transaction/index.html.eex:114 -#: lib/explorer_web/templates/transaction_internal_transaction/index.html.eex:53 +#: lib/explorer_web/templates/address_internal_transaction/index.html.eex:125 +#: lib/explorer_web/templates/transaction_internal_transaction/index.html.eex:64 msgid "There are no Internal Transactions" msgstr "" @@ -516,13 +516,13 @@ msgstr "" msgid "There are no Transactions" msgstr "" -#: lib/explorer_web/templates/address_internal_transaction/index.html.eex:120 +#: lib/explorer_web/templates/address_internal_transaction/index.html.eex:131 #: lib/explorer_web/templates/address_transaction/index.html.eex:139 #: lib/explorer_web/templates/block/index.html.eex:60 #: lib/explorer_web/templates/block_transaction/index.html.eex:200 #: lib/explorer_web/templates/pending_transaction/index.html.eex:69 #: lib/explorer_web/templates/transaction/index.html.eex:90 -#: lib/explorer_web/templates/transaction_internal_transaction/index.html.eex:60 +#: lib/explorer_web/templates/transaction_internal_transaction/index.html.eex:71 msgid "Older" msgstr "" @@ -556,3 +556,9 @@ msgstr "" #: lib/explorer_web/templates/transaction_log/index.html.eex:73 msgid "Newer" msgstr "" + +#, elixir-format +#: lib/explorer_web/templates/address_internal_transaction/index.html.eex:109 +#: lib/explorer_web/templates/transaction_internal_transaction/index.html.eex:47 +msgid "Contract Creation" +msgstr "" diff --git a/apps/explorer_web/test/explorer_web/views/internal_transaction_view_test.exs b/apps/explorer_web/test/explorer_web/views/internal_transaction_view_test.exs new file mode 100644 index 0000000000..4effc5564d --- /dev/null +++ b/apps/explorer_web/test/explorer_web/views/internal_transaction_view_test.exs @@ -0,0 +1,19 @@ +defmodule ExplorerWeb.InternalTransactionViewTest do + use ExplorerWeb.ConnCase, async: true + + alias ExplorerWeb.InternalTransactionView + + describe "create?/1" do + test "with internal transaction of type create returns true" do + internal_transaction = build(:internal_transaction_create) + + assert InternalTransactionView.create?(internal_transaction) + end + + test "with non-create type internal transaction returns false" do + internal_transaction = build(:internal_transaction) + + refute InternalTransactionView.create?(internal_transaction) + end + end +end