defmodule PostlandWeb.FollowersLive do use PostlandWeb, :live_view alias Postland.Actors alias Postland.Follows def render(assigns) do ~H"""

Followers

No one follows you.

<.profile_card id={dom_id} dom_id={dom_id} account={account} status={if confirmed, do: :follower_confirmed, else: :follower_pending} />
""" end def mount(_params, _session, socket) do followers = Follows.all_followers() |> Enum.map(fn follow -> %{ id: follow.follower, confirmed: !!follow.confirmed_at, account: Actors.actor(follow.follower) } end) |> Enum.reject(&is_nil(&1.account)) account_count = Enum.count(followers) {:ok, socket |> stream(:accounts, followers) |> assign(count: account_count)} end def handle_event("confirm", %{"id" => id, "dom-id" => dom_id}, socket) do request = Follows.get(id, Postland.my_actor_id()) socket = case Follows.record_and_send_acceptance(request) do {:ok, _} -> request = Follows.get(Postland.my_actor_id(), id) acct = %{ id: request.follower, confirmed: !!request.onfirmed_at, account: Actors.actor(request.follower) } socket |> stream_insert(:accounts, acct) _ -> put_flash(socket, :error, "An unexpected error occurred.") end {:noreply, socket} end end