Fix poll option order

This commit is contained in:
Alex
2024-09-01 01:50:04 +02:00
parent cb3dacb32f
commit d333fd3441
2 changed files with 27 additions and 9 deletions

View File

@@ -5,6 +5,7 @@
- Fix OIDC to allow only client_secret_basic and client_secret_post auth methods - Fix OIDC to allow only client_secret_basic and client_secret_post auth methods
- Improve poll results UI - Improve poll results UI
- Fix minimum length for 2 characters messages - Fix minimum length for 2 characters messages
- Fix poll option order
## v2.1.0 ## v2.1.0

View File

@@ -238,7 +238,7 @@ defmodule ClaperWeb.EventLive.Show do
{:current_interaction, interaction}, {:current_interaction, interaction},
socket socket
) do ) do
{:noreply, socket |> load_current_interaction(interaction)} {:noreply, socket |> load_current_interaction(interaction, false)}
end end
@impl true @impl true
@@ -278,7 +278,7 @@ defmodule ClaperWeb.EventLive.Show do
def handle_info({:poll_updated, %Claper.Polls.Poll{enabled: true} = poll}, socket) do def handle_info({:poll_updated, %Claper.Polls.Poll{enabled: true} = poll}, socket) do
{:noreply, {:noreply,
socket socket
|> load_current_interaction(poll)} |> load_current_interaction(poll, true)}
end end
@impl true @impl true
@@ -292,7 +292,7 @@ defmodule ClaperWeb.EventLive.Show do
def handle_info({:form_updated, %Claper.Forms.Form{enabled: true} = form}, socket) do def handle_info({:form_updated, %Claper.Forms.Form{enabled: true} = form}, socket) do
{:noreply, {:noreply,
socket socket
|> load_current_interaction(form)} |> load_current_interaction(form, true)}
end end
@impl true @impl true
@@ -306,7 +306,7 @@ defmodule ClaperWeb.EventLive.Show do
def handle_info({:embed_updated, %Claper.Embeds.Embed{enabled: true} = embed}, socket) do def handle_info({:embed_updated, %Claper.Embeds.Embed{enabled: true} = embed}, socket) do
{:noreply, {:noreply,
socket socket
|> load_current_interaction(embed)} |> load_current_interaction(embed, true)}
end end
@impl true @impl true
@@ -695,20 +695,37 @@ defmodule ClaperWeb.EventLive.Show do
defp get_current_interaction(socket, event, position) do defp get_current_interaction(socket, event, position) do
with interaction <- Interactions.get_active_interaction(event, position) do with interaction <- Interactions.get_active_interaction(event, position) do
socket |> assign(:current_interaction, interaction) |> load_current_interaction(interaction) socket
|> assign(:current_interaction, interaction)
|> load_current_interaction(interaction, false)
end end
end end
defp load_current_interaction(socket, %Polls.Poll{} = interaction) do defp load_current_interaction(socket, %Polls.Poll{} = interaction, same_interaction) do
poll = Polls.set_percentages(interaction) poll = Polls.set_percentages(interaction)
socket |> assign(:current_interaction, poll) |> get_current_vote(poll.id)
socket
|> assign(
:current_interaction,
%{poll | poll_opts: Enum.sort_by(poll.poll_opts, & &1.id, :asc)}
)
|> maybe_reset_selected_poll_opt(same_interaction)
|> get_current_vote(poll.id)
end end
defp load_current_interaction(socket, %Forms.Form{} = interaction) do defp load_current_interaction(socket, %Forms.Form{} = interaction, _same_interaction) do
socket |> assign(:current_interaction, interaction) |> get_current_form_submit(interaction.id) socket |> assign(:current_interaction, interaction) |> get_current_form_submit(interaction.id)
end end
defp load_current_interaction(socket, interaction) do defp load_current_interaction(socket, interaction, _same_interaction) do
socket |> assign(:current_interaction, interaction) socket |> assign(:current_interaction, interaction)
end end
defp maybe_reset_selected_poll_opt(socket, true) do
socket
end
defp maybe_reset_selected_poll_opt(socket, _same_interaction) do
socket |> assign(:selected_poll_opt, [])
end
end end