Skip to content

Commit b01588e

Browse files
committed
fix: update oauth flow to use redirect callback instead of sending messages from popup window
1 parent 302fe1a commit b01588e

File tree

1 file changed

+25
-29
lines changed
  • lib/algora_web/live/onboarding

1 file changed

+25
-29
lines changed

lib/algora_web/live/onboarding/dev.ex

Lines changed: 25 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,6 @@ defmodule AlgoraWeb.Onboarding.DevLive do
4949

5050
@impl true
5151
def mount(_params, _session, socket) do
52-
if connected?(socket) do
53-
Phoenix.PubSub.subscribe(Algora.PubSub, "auth:#{socket.id}")
54-
end
55-
5652
context = %{
5753
country: socket.assigns.current_country,
5854
tech_stack: [],
@@ -127,37 +123,37 @@ defmodule AlgoraWeb.Onboarding.DevLive do
127123
{:noreply, socket}
128124
end
129125

130-
@impl true
131-
def handle_info({:authenticated, user}, socket) do
132-
tech_stack = get_field(socket.assigns.info_form.source, :tech_stack) || []
133-
intentions = get_field(socket.assigns.info_form.source, :intentions) || []
134-
135-
case user
136-
|> change(
137-
tech_stack: tech_stack,
138-
seeking_bounties: "bounties" in intentions,
139-
seeking_contracts: "contracts" in intentions,
140-
seeking_jobs: "jobs" in intentions
141-
)
142-
|> Repo.update() do
143-
{:ok, user} ->
144-
{:noreply, redirect(socket, to: AlgoraWeb.UserAuth.generate_login_path(user.email))}
145-
146-
{:error, changeset} ->
147-
Logger.error("Failed to update user #{user.id} on onboarding: #{inspect(changeset)}")
148-
{:noreply, put_flash(socket, :error, "Something went wrong. Please try again.")}
149-
end
150-
end
151-
152126
@impl true
153127
def handle_event("restore_settings", params, socket) do
154-
{:noreply, LocalStore.restore(socket, params)}
128+
socket = LocalStore.restore(socket, params)
129+
130+
if user = socket.assigns[:current_user] do
131+
tech_stack = get_field(socket.assigns.info_form.source, :tech_stack) || []
132+
intentions = get_field(socket.assigns.info_form.source, :intentions) || []
133+
134+
case user
135+
|> change(
136+
tech_stack: tech_stack,
137+
seeking_bounties: "bounties" in intentions,
138+
seeking_contracts: "contracts" in intentions,
139+
seeking_jobs: "jobs" in intentions
140+
)
141+
|> Repo.update() do
142+
{:ok, user} ->
143+
{:noreply, redirect(socket, to: AlgoraWeb.UserAuth.generate_login_path(user.email))}
144+
145+
{:error, changeset} ->
146+
Logger.error("Failed to update user #{user.id} on onboarding: #{inspect(changeset)}")
147+
{:noreply, put_flash(socket, :error, "Something went wrong. Please try again.")}
148+
end
149+
else
150+
{:noreply, socket}
151+
end
155152
end
156153

157154
@impl true
158155
def handle_event("sign_in_with_github", _params, socket) do
159-
popup_url = Github.authorize_url(%{socket_id: socket.id})
160-
{:noreply, push_event(socket, "open_popup", %{url: popup_url})}
156+
{:noreply, redirect(socket, external: Github.authorize_url(%{return_to: ~p"/onboarding/dev?checkpoint=1"}))}
161157
end
162158

163159
@impl true

0 commit comments

Comments
 (0)