feat(chat): add username to users
And use it instead of hacky email transformation.
This commit is contained in:
parent
489be57db7
commit
24b609ec3a
@ -7,6 +7,7 @@ defmodule Slax.Accounts.User do
|
|||||||
|
|
||||||
schema "users" do
|
schema "users" do
|
||||||
field :email, :string
|
field :email, :string
|
||||||
|
field :username, :string
|
||||||
field :password, :string, virtual: true, redact: true
|
field :password, :string, virtual: true, redact: true
|
||||||
field :hashed_password, :string, redact: true
|
field :hashed_password, :string, redact: true
|
||||||
field :current_password, :string, virtual: true, redact: true
|
field :current_password, :string, virtual: true, redact: true
|
||||||
|
@ -98,7 +98,7 @@ defmodule SlaxWeb.ChatRoomLive do
|
|||||||
<ul class="relative z-10 flex items-center gap-4 px-4 sm:px-6 lg:px-8 justify-end">
|
<ul class="relative z-10 flex items-center gap-4 px-4 sm:px-6 lg:px-8 justify-end">
|
||||||
<%= if @current_user do %>
|
<%= if @current_user do %>
|
||||||
<li class="text-[0.8125rem] leading-6 text-zinc-900">
|
<li class="text-[0.8125rem] leading-6 text-zinc-900">
|
||||||
{username(@current_user)}
|
{@current_user.username}
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<.link
|
<.link
|
||||||
@ -469,7 +469,7 @@ defmodule SlaxWeb.ChatRoomLive do
|
|||||||
<span class="w-2 h-2 rounded-full border-2 border-gray-500"></span>
|
<span class="w-2 h-2 rounded-full border-2 border-gray-500"></span>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
<span class="ml-2 leading-none">{username(@user)}</span>
|
<span class="ml-2 leading-none">{@user.username}</span>
|
||||||
</.link>
|
</.link>
|
||||||
"""
|
"""
|
||||||
end
|
end
|
||||||
@ -526,7 +526,7 @@ defmodule SlaxWeb.ChatRoomLive do
|
|||||||
<div class="ml-2">
|
<div class="ml-2">
|
||||||
<div class="-mt-1">
|
<div class="-mt-1">
|
||||||
<.link class="text-sm font-semibold hover:underline">
|
<.link class="text-sm font-semibold hover:underline">
|
||||||
<span>{username(@message.user)}</span>
|
<span>{@message.user.username}</span>
|
||||||
</.link>
|
</.link>
|
||||||
<span :if={@timezone} class="ml-1 text-xs text-gray-500">
|
<span :if={@timezone} class="ml-1 text-xs text-gray-500">
|
||||||
{message_timestamp(@message, @timezone)}
|
{message_timestamp(@message, @timezone)}
|
||||||
@ -538,10 +538,6 @@ defmodule SlaxWeb.ChatRoomLive do
|
|||||||
"""
|
"""
|
||||||
end
|
end
|
||||||
|
|
||||||
defp username(user) do
|
|
||||||
user.email |> String.split("@") |> List.first() |> String.capitalize()
|
|
||||||
end
|
|
||||||
|
|
||||||
defp message_timestamp(message, timezone) do
|
defp message_timestamp(message, timezone) do
|
||||||
message.inserted_at
|
message.inserted_at
|
||||||
|> Timex.Timezone.convert(timezone)
|
|> Timex.Timezone.convert(timezone)
|
||||||
|
@ -0,0 +1,25 @@
|
|||||||
|
defmodule Slax.Repo.Migrations.AlterUsersAddUsername do
|
||||||
|
use Ecto.Migration
|
||||||
|
|
||||||
|
def change do
|
||||||
|
alter table(:users) do
|
||||||
|
add :username, :citext
|
||||||
|
end
|
||||||
|
|
||||||
|
query = """
|
||||||
|
update
|
||||||
|
users
|
||||||
|
set
|
||||||
|
username = initcap(substring(email from '^[^@]+'))
|
||||||
|
;
|
||||||
|
"""
|
||||||
|
|
||||||
|
execute query, ""
|
||||||
|
|
||||||
|
alter table(:users) do
|
||||||
|
modify :username, :citext, null: false, from: {:citext, null: true}
|
||||||
|
end
|
||||||
|
|
||||||
|
create unique_index(:users, :username)
|
||||||
|
end
|
||||||
|
end
|
Loading…
x
Reference in New Issue
Block a user