Skip to content

Commit 6f49c3c

Browse files
feat: optional cvs (#93)
1 parent e6c664a commit 6f49c3c

File tree

2 files changed

+19
-20
lines changed

2 files changed

+19
-20
lines changed

lib/ares_web/components/cv_uploader.ex

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,19 @@ defmodule AresWeb.Components.CVUploader do
3535
<p class="mt-1 text-xs text-gray-500">
3636
PDF, DOC, DOCX, TXT, MD, RTF (max 10MB)
3737
</p>
38+
<%= if @is_optional do %>
39+
<p class="mt-1 text-xs text-primary">
40+
* Uploading a CV is <span class="underline">optional</span>.
41+
</p>
42+
<% end %>
3843
</div>
3944
</div>
4045
<div class="mt-3 space-y-2">
4146
<%= for entry <- @uploaders.cv.entries do %>
4247
<%= for err <- upload_errors(@uploaders.cv, entry) do %>
4348
<div class="rounded-sm border border-red-200 bg-red-50 px-3 py-2 text-sm text-red-800">
4449
<div class="flex items-center gap-2">
45-
<.icon name="hero-exclamation-circle" class="h-4 w-4 flex-shrink-0" />
50+
<.icon name="hero-exclamation-circle" class="h-4 w-4 shrink-0" />
4651
<span>{Phoenix.Naming.humanize(err)}</span>
4752
</div>
4853
</div>
@@ -76,7 +81,7 @@ defmodule AresWeb.Components.CVUploader do
7681
phx-click="cancel-upload"
7782
phx-value-ref={entry.ref}
7883
aria-label="Remove file"
79-
class="flex-shrink-0 rounded-sm p-1.5 text-gray-400 transition-colors hover:bg-red-50 hover:text-red-600"
84+
class="shrink-0 rounded-sm p-1.5 text-gray-400 transition-colors hover:bg-red-50 hover:text-red-600"
8085
>
8186
<.icon name="hero-x-mark" class="h-4 w-4" />
8287
</button>
@@ -96,6 +101,6 @@ defmodule AresWeb.Components.CVUploader do
96101

97102
@impl true
98103
def update(assigns, socket) do
99-
{:ok, assign(socket, assigns)}
104+
{:ok, socket |> assign(Map.put_new(assigns, :is_optional, false))}
100105
end
101106
end

lib/ares_web/live/auth/registration.ex

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ defmodule AresWeb.UserLive.Registration do
9898
id="cv-uploader"
9999
uploaders={@uploads}
100100
target={%JS{}}
101+
is_optional
101102
/>
102103
103104
<p class="flex flex-row">
@@ -153,25 +154,18 @@ defmodule AresWeb.UserLive.Registration do
153154

154155
@impl true
155156
def handle_event("save", %{"user" => user_params}, socket) do
156-
if Enum.empty?(socket.assigns.uploads.cv.entries) do
157+
with {:ok, user} <- Accounts.register_user(user_params, &consume_pdf_data(socket, &1)),
158+
{:ok, _} <- Accounts.deliver_login_instructions(user, &url(~p"/log-in/#{&1}")) do
157159
{:noreply,
158160
socket
159-
|> put_flash(:error, "Please upload your CV to proceed.")
160-
|> assign_form(Accounts.change_user(%User{}, user_params))}
161+
|> put_flash(
162+
:info,
163+
"An email was sent to #{user.email}, please access it to confirm your account."
164+
)
165+
|> push_navigate(to: ~p"/log-in")}
161166
else
162-
with {:ok, user} <- Accounts.register_user(user_params, &consume_pdf_data(socket, &1)),
163-
{:ok, _} <- Accounts.deliver_login_instructions(user, &url(~p"/log-in/#{&1}")) do
164-
{:noreply,
165-
socket
166-
|> put_flash(
167-
:info,
168-
"An email was sent to #{user.email}, please access it to confirm your account."
169-
)
170-
|> push_navigate(to: ~p"/log-in")}
171-
else
172-
{:error, %Ecto.Changeset{} = changeset} ->
173-
{:noreply, assign_form(socket, changeset)}
174-
end
167+
{:error, %Ecto.Changeset{} = changeset} ->
168+
{:noreply, assign_form(socket, changeset)}
175169
end
176170
end
177171

@@ -193,7 +187,7 @@ defmodule AresWeb.UserLive.Registration do
193187

194188
case result do
195189
[] ->
196-
{:error, :no_cv_uploaded}
190+
{:ok, user}
197191

198192
[error: reason] ->
199193
{:error, reason}

0 commit comments

Comments
 (0)