we don't need to pass self() on to client functions

This commit is contained in:
Rüdiger Diedrich
2022-07-25 11:04:46 +02:00
parent de9afd2907
commit bd8177a7c0
2 changed files with 41 additions and 10 deletions

View File

@ -3,15 +3,15 @@ defmodule SomethingErlang.Grover do
require Logger
def mount(lv_pid, user, thread_id) do
def mount(user, thread_id) do
DynamicSupervisor.start_child(
SomethingErlang.Supervisor.Grovers,
{__MODULE__, [lv_pid, user, thread_id]}
{__MODULE__, [self(), user, thread_id]}
)
end
def get_thread!(lv_pid, thread_id, page_number) do
GenServer.call(via(lv_pid), {:show_thread, thread_id, page_number})
def get_thread!(thread_id, page_number) do
GenServer.call(via(self()), {:show_thread, thread_id, page_number})
end
def start_link([lv_pid, user, thread_id]) do
@ -47,9 +47,9 @@ defmodule SomethingErlang.Grover do
Logger.debug "received :DOWN from: #{inspect(state.lv_pid)} reason: #{inspect(reason)}"
case reason do
{:shutdown, _} -> {:stop, :normal, state}
:killed -> {:stop, :normal, state}
_ -> {:noreply, state}
end
|> IO.inspect()
end
defp via(lv_pid),

View File

@ -9,13 +9,13 @@ defmodule SomethingErlangWeb.ThreadLive.Show do
@impl true
def mount(%{"id" => id} = _params, _session, socket) do
Grover.mount(self(), socket.assigns.current_user, id)
Grover.mount(socket.assigns.current_user, id)
{:ok, socket}
end
@impl true
def handle_params(%{"id" => id, "page" => page}, _, socket) do
thread = Grover.get_thread!(self(), id, page |> String.to_integer())
thread = Grover.get_thread!(id, page |> String.to_integer())
{:noreply,
socket
|> assign(:thread, thread)}
@ -40,12 +40,43 @@ defmodule SomethingErlangWeb.ThreadLive.Show do
def user(assigns) do
~H"""
<aside class="userinfo shrink-0 w-[13em]">
<h3><%= @info.name %></h3>
<div class="title">
<aside class="userinfo bg-base-100 shrink-0 w-[13em]">
<h3 class="mb-4"><%= @info.name %></h3>
<div class="title text-sm pr-4">
<%= raw @info.title %>
</div>
</aside>
"""
end
def pagination(assigns) do
%{page: page_number, page_count: page_count} = assigns.thread
first_page_disabled_button = if page_number == 1, do: " btn-disabled", else: ""
last_page_disabled_button = if page_number == page_count, do: " btn-disabled", else: ""
active_page_button = " btn-active"
prev_button_target = if page_number >= 1, do: page_number - 1, else: 1
next_button_target = if page_number < page_count, do: page_number + 1, else: page_count
buttons = [
%{label: "«", page: 1, special: first_page_disabled_button},
%{label: "", page: prev_button_target, special: first_page_disabled_button},
%{label: "#{page_number}", page: page_number, special: active_page_button},
%{label: "", page: next_button_target, special: last_page_disabled_button},
%{label: "»", page: page_count, special: last_page_disabled_button}
]
~H"""
<div class="navbar my-4 bg-base-200">
<div class="flex-1"></div>
<div class="flex-none btn-group">
<%= for btn <- buttons do %>
<%= live_redirect btn.label, class: "btn btn-sm" <> btn.special,
to: Routes.thread_show_path(@socket, :show, @thread.id, page: btn.page) %>
<% end %>
</div>
</div>
"""
end
end