Show correct internal transaction type and contract link

pull/307/head
Tim Mecklem 7 years ago
parent 3160ac1967
commit 12e5da97cd
  1. 13
      apps/explorer_web/lib/explorer_web/templates/address_internal_transaction/index.html.eex
  2. 13
      apps/explorer_web/lib/explorer_web/templates/transaction_internal_transaction/index.html.eex
  3. 5
      apps/explorer_web/lib/explorer_web/views/internal_transaction_view.ex
  4. 19
      apps/explorer_web/test/explorer_web/views/internal_transaction_view_test.exs

@ -103,7 +103,18 @@
<%= render ExplorerWeb.AddressView, "_link.html", conn: @conn, address: internal_transaction.from_address %>
</td>
<td>
<%= render ExplorerWeb.AddressView, "_link.html", conn: @conn, address: internal_transaction.to_address %>
<%= if ExplorerWeb.InternalTransactionView.contract?(internal_transaction) do %>
<i class="fas fa-plus-square"></i>
<%= 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 %>
</td>
<td><%= ExplorerWeb.TransactionView.value(internal_transaction, include_label: false) %></td>
</tr>

@ -41,7 +41,18 @@
<%= render ExplorerWeb.AddressView, "_link.html", conn: @conn, address: internal_transaction.from_address %>
</td>
<td>
<%= render ExplorerWeb.AddressView, "_link.html", conn: @conn, address: internal_transaction.to_address %>
<%= if ExplorerWeb.InternalTransactionView.contract?(internal_transaction) do %>
<i class="fas fa-plus-square"></i>
<%= 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 %>
</td>
<td><%= ExplorerWeb.TransactionView.value(internal_transaction, include_label: false) %></td>
<td><%= ExplorerWeb.TransactionView.gas(internal_transaction) %></td>

@ -1,4 +1,9 @@
defmodule ExplorerWeb.InternalTransactionView do
use ExplorerWeb, :view
@dialyzer :no_match
alias Explorer.Chain.InternalTransaction
def contract?(%InternalTransaction{type: :create}), do: true
def contract?(_), do: false
end

@ -0,0 +1,19 @@
defmodule ExplorerWeb.InternalTransactionViewTest do
use ExplorerWeb.ConnCase, async: true
alias ExplorerWeb.InternalTransactionView
describe "contract?/1" do
test "with internal transaction of type create returns true" do
internal_transaction = build(:internal_transaction_create)
assert InternalTransactionView.contract?(internal_transaction)
end
test "with non-create type internal transaction returns false" do
internal_transaction = build(:internal_transaction)
refute InternalTransactionView.contract?(internal_transaction)
end
end
end
Loading…
Cancel
Save