Skip to content
This repository has been archived by the owner on Oct 4, 2024. It is now read-only.

Commit

Permalink
Fix event list in tx view and add event details (#239)
Browse files Browse the repository at this point in the history
* show events in the same way for tx and block views

* fix phx copy ids

* update events index to remove db

* fix ewarnings
  • Loading branch information
igamigo authored Sep 25, 2023
1 parent edb4d44 commit 0e42047
Show file tree
Hide file tree
Showing 5 changed files with 193 additions and 142 deletions.
12 changes: 12 additions & 0 deletions lib/starknet_explorer/events.ex
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,18 @@ defmodule StarknetExplorer.Events do
)
end

def get_by_id(id, network) do
Events
|> where([p], p.id == ^id and p.network == ^network)
|> Repo.one()
end

def get_by_tx_hash(tx_hash, network) do
Events
|> where([p], p.transaction_hash == ^tx_hash and p.network == ^network)
|> Repo.all()
end

def get_total_count(network) do
from(event in __MODULE__, where: event.network == ^network, select: count())
|> Repo.one()
Expand Down
74 changes: 45 additions & 29 deletions lib/starknet_explorer_web/live/event_index_live.ex
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
defmodule StarknetExplorerWeb.EventIndexLive do
use StarknetExplorerWeb, :live_view
alias StarknetExplorerWeb.Utils
alias StarknetExplorer.{Data, BlockUtils, Rpc, Events}

@page_size 30
alias StarknetExplorer.{BlockUtils, Events}

@impl true
def render(assigns) do
Expand All @@ -25,32 +23,30 @@ defmodule StarknetExplorerWeb.EventIndexLive do
<div>From Address</div>
<div>Age</div>
</div>
<%= for {idx, event = %{"block_number" => block_number, "from_address" => from_address, "transaction_hash" => tx_hash}} <- Enum.with_index(@page["events"], fn element, index -> {index, element} end) do %>
<%= for {event, _index} <- Enum.with_index(@page.entries) do %>
<div class="custom-list-item grid-6">
<div>
<div class="list-h">Identifier</div>
<% identifier =
Integer.to_string(block_number) <> "_" <> Integer.to_string(idx + @page_number) %>
<div
class="flex gap-2 items-center copy-container"
id={"copy-transaction-hash-#{identifier}"}
id={"copy-event-id-#{event.id}"}
phx-hook="Copy"
>
<div class="relative">
<div class="break-all text-hover-blue">
<a
href={Utils.network_path(@network, "events/#{identifier}")}
href={Utils.network_path(@network, "events/#{event.id}")}
class="text-hover-blue"
>
<span><%= identifier %></span>
<span><%= event.id |> Utils.shorten_block_hash() %></span>
</a>
</div>
<div class="absolute top-1/2 -right-6 tranform -translate-y-1/2">
<div class="relative">
<img
class="copy-btn copy-text w-4 h-4"
src={~p"/images/copy.svg"}
data-text={identifier}
data-text={event.id}
/>
<img
class="copy-check absolute top-0 left-0 w-4 h-4 opacity-0 pointer-events-none"
Expand All @@ -66,10 +62,10 @@ defmodule StarknetExplorerWeb.EventIndexLive do
<div>
<span class="blue-label">
<a
href={Utils.network_path(@network, "blocks/#{event["block_hash"]}")}
href={Utils.network_path(@network, "blocks/#{event.block_number}")}
class="text-hover-blue"
>
<span><%= to_string(block_number) %></span>
<span><%= to_string(event.block_number) %></span>
</a>
</span>
</div>
Expand All @@ -78,25 +74,52 @@ defmodule StarknetExplorerWeb.EventIndexLive do
<div class="list-h">Transaction Hash</div>
<div>
<a
href={Utils.network_path(@network, "transactions/#{tx_hash}")}
href={Utils.network_path(@network, "transactions/#{event.transaction_hash}")}
class="text-hover-blue"
>
<span><%= tx_hash |> Utils.shorten_block_hash() %></span>
<span><%= event.transaction_hash |> Utils.shorten_block_hash() %></span>
</a>
</div>
</div>
<div>
<div class="list-h">Name</div>
<div>
<%= Events.get_event_name(event, @network) %>
<%= if !String.starts_with?(event.name, "0x") do %>
<%= event.name %>
<% else %>
<div
class="flex gap-2 items-center copy-container"
id={"copy-name-#{event.id}"}
phx-hook="Copy"
>
<div class="relative">
<div class="break-all">
<span><%= event.name |> Utils.shorten_block_hash() %></span>
</div>
<div class="absolute top-1/2 -right-6 tranform -translate-y-1/2">
<div class="relative">
<img
class="copy-btn copy-text w-4 h-4"
src={~p"/images/copy.svg"}
data-text={event.name}
/>
<img
class="copy-check absolute top-0 left-0 w-4 h-4 opacity-0 pointer-events-none"
src={~p"/images/check-square.svg"}
/>
</div>
</div>
</div>
</div>
<% end %>
</div>
</div>
<div class="list-h">From Address</div>
<div><%= from_address |> Utils.shorten_block_hash() %></div>
<div><%= event.from_address |> Utils.shorten_block_hash() %></div>
<div>
<div class="list-h">Age</div>
<div>
<%= Utils.get_block_age(@block) %>
<%= Utils.get_block_age_from_timestamp(event.age) %>
</div>
</div>
</div>
Expand All @@ -109,24 +132,17 @@ defmodule StarknetExplorerWeb.EventIndexLive do
@impl true
def mount(_params, _session, socket) do
{:ok, block_height} = BlockUtils.block_height(socket.assigns.network)
block_height = block_height - 1

{:ok, block} = Rpc.get_block_by_number(block_height, socket.assigns.network)

{:ok, page} =
Data.get_events(
%{
"chunk_size" => @page_size,
"from_block" => %{"block_number" => block_height},
"to_block" => %{"block_number" => block_height}
},
page =
Events.paginate_events(
%{page: 1},
block_height,
socket.assigns.network
)

assigns = [
page: page,
page_number: 0,
block: block
page_number: 0
]

{:ok, assign(socket, assigns)}
Expand Down
72 changes: 37 additions & 35 deletions lib/starknet_explorer_web/live/event_live.ex
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
defmodule StarknetExplorerWeb.EventDetailLive do
use StarknetExplorerWeb, :live_view
alias StarknetExplorer.{Events, Block}
alias StarknetExplorerWeb.Utils
@impl true
def render(assigns) do
Expand All @@ -13,16 +14,13 @@ defmodule StarknetExplorerWeb.EventDetailLive do
<div class="flex flex-col lg:flex-row gap-2 items-baseline pb-5">
<h2>Event</h2>
<div class="font-semibold">
<%= "0x01b4d24a461851e8eb9924369b5d9e23e79e8bbea6abc93eae4323462a25ddac_1"
|> Utils.shorten_block_hash() %>
<%= @event.id %>
</div>
<span class="gray-label text-sm">Mocked</span>
</div>
<div class="grid-4 custom-list-item">
<div class="block-label !mt-0">Event ID</div>
<div>
<%= "0x01b4d24a461851e8eb9924369b5d9e23e79e8bbea6abc93eae4323462a25ddac_1"
|> Utils.shorten_block_hash() %>
<%= @event.id %>
</div>
</div>
<div class="grid-4 custom-list-item">
Expand All @@ -32,66 +30,67 @@ defmodule StarknetExplorerWeb.EventDetailLive do
href={
Utils.network_path(
@network,
"blocks/0x014570bdb1ed38e71bb11709b2fff208101d74231c1b973bd5d1e3ab717c659a"
"blocks/#{@block.hash}"
)
}
class="text-hover-blue"
>
<span> 0x014570bdb1ed38e71bb11709b2fff208101d74231c1b973bd5d1e3ab717c659a </span>
<span><%= @block.hash %></span>
</a>
</div>
</div>
<div class="grid-4 custom-list-item">
<div class="block-label !mt-0">Block Number</div>
<div>98369</div>
<a
href={
Utils.network_path(
@network,
"blocks/#{@event.block_number}"
)
}
class="text-hover-blue"
>
<div><%= @event.block_number %></div>
</a>
</div>
<div class="grid-4 custom-list-item">
<div class="block-label !mt-0">Transaction Hash</div>
<div>
<%= "0x01b4d24a461851e8eb9924369b5d9e23e79e8bbea6abc93eae4323462a25ddac"
|> Utils.shorten_block_hash() %>
<a
href={
Utils.network_path(
@network,
"blocks/#{@event.transaction_hash}"
)
}
class="text-hover-blue"
>
<%= @event.transaction_hash %>
</a>
</div>
</div>
<div class="grid-4 custom-list-item">
<div class="block-label !mt-0">Contract Address</div>
<div>
<%= "0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7"
|> Utils.shorten_block_hash() %>
<%= @event.from_address %>
</div>
</div>
<div class="grid-4 custom-list-item">
<div class="block-label !mt-0">L1 Block Hash</div>
<div>
<%= "0x93f4c763b869dd008594f8a976c7f0bb60942db7bf314a70339e7e8c94fcfd1a"
|> Utils.shorten_block_hash() %>
</div>
</div>
<div class="grid-4 custom-list-item">
<div class="block-label !mt-0">L1 Block Number</div>
<div>17630003</div>
</div>
<div class="custom-list-item">
<div class="block-label !mt-0 lg:pb-5">Event Data</div>
<div class="bg-black/10 p-5">
<div class="grid-3 w-full table-th">
<div>Input</div>
<div>Type</div>
<div>Value</div>
</div>
<%= for _idx <- 0..0 do %>
<%= for {payload, index} <- Enum.with_index(@event.data) do %>
<div class="grid-3 w-full custom-list-item">
<div>
<div class="list-h">Input</div>
<div>from_</div>
</div>
<div>
<div class="list-h">Type</div>
<div>felt</div>
<div class="list-h">Index</div>
<div><%= index %></div>
</div>
<div>
<div class="list-h">Value</div>
<%= "0x4c97c4d367b88df2f29887043750ff189f539c28fe1fed331d3359b403a8bad"
|> Utils.shorten_block_hash() %>
<div><%= payload %></div>
</div>
</div>
<% end %>
Expand All @@ -102,9 +101,12 @@ defmodule StarknetExplorerWeb.EventDetailLive do
end

@impl true
def mount(_params = %{"identifier" => _identifier}, _session, socket) do
def mount(_params = %{"identifier" => identifier}, _session, socket) do
event = Events.get_by_id(identifier, socket.assigns.network)

assigns = [
event: nil
event: event,
block: Block.get_by_num(event.block_number, socket.assigns.network)
]

{:ok, assign(socket, assigns)}
Expand Down
Loading

0 comments on commit 0e42047

Please sign in to comment.