Packages
livebook
0.1.2
0.19.8
0.19.7
0.19.6
0.19.5
0.19.4
0.19.3
0.19.2
0.19.1
0.19.0
0.18.6
0.18.5
0.18.4
0.18.3
0.18.2
0.18.1
0.18.0
0.17.3
0.17.2
0.17.1
0.17.0
0.16.4
0.16.3
0.16.2
0.16.1
0.16.0
0.15.5
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.7
0.14.6
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.14.0-rc.1
0.14.0-rc.0
0.13.3
0.13.2
0.13.1
0.13.0
0.12.1
0.12.0
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.0
0.9.3
0.9.2
0.9.1
0.9.0
0.8.2
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.6.3
0.6.2
0.6.1
0.6.0
0.5.2
0.5.1
0.5.0
0.4.1
0.4.0
0.3.2
0.3.1
0.3.0
0.2.3
0.2.2
0.2.1
0.2.0
0.1.2
0.1.1
0.1.0
Automate code & data workflows with interactive notebooks
Current section
Files
Jump to
Current section
Files
lib/livebook_web/live/user_helpers.ex
defmodule LivebookWeb.UserHelpers do
import Phoenix.LiveView
import Phoenix.LiveView.Helpers
alias Livebook.Users.User
@doc """
Renders user avatar,
## Options
* `:class` - class added to the avatar box
* `:text_class` - class added to the avatar text
"""
def render_user_avatar(user, opts \\ []) do
assigns = %{
name: user.name,
hex_color: user.hex_color,
class: Keyword.get(opts, :class, "w-full h-full"),
text_class: Keyword.get(opts, :text_class)
}
~L"""
<div class="rounded-full <%= @class %> flex items-center justify-center" style="background-color: <%= @hex_color %>">
<div class="<%= @text_class %> text-gray-100 font-semibold">
<%= avatar_text(@name) %>
</div>
</div>
"""
end
defp avatar_text(nil), do: "?"
defp avatar_text(name) do
name
|> String.split()
|> Enum.map(&String.at(&1, 0))
|> Enum.map(&String.upcase/1)
|> case do
[initial] -> initial
initials -> List.first(initials) <> List.last(initials)
end
end
@doc """
Builds `Livebook.Users.User` with the given user id.
Uses `user_data` from socket `connect_params` as initial
attributes if the socket is connected.
"""
def build_current_user(current_user_id, socket) do
connect_params = get_connect_params(socket) || %{}
user_data = connect_params["user_data"] || %{}
case User.change(%{User.new() | id: current_user_id}, user_data) do
{:ok, user} -> user
{:error, _errors, user} -> user
end
end
end