From 767c15b91c80f8567bf39dc300947d1df25f2cea Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 5 Oct 2024 13:12:44 +0200 Subject: [PATCH] Version 2.1.1 --- CHANGELOG.md | 12 ++++++ assets/js/app.js | 11 +++++- lib/claper/events.ex | 2 +- lib/claper_web/controllers/user_oidc_auth.ex | 3 +- .../live/event_live/embed_component.ex | 18 ++++----- lib/claper_web/live/event_live/manage.ex | 2 +- .../live/event_live/manage.html.heex | 4 +- .../live/event_live/poll_component.ex | 22 +++++------ lib/claper_web/live/event_live/presenter.ex | 4 +- .../live/event_live/presenter.html.heex | 10 +++-- lib/claper_web/live/event_live/show.ex | 37 ++++++++++++++----- lib/claper_web/live/event_live/show.html.heex | 4 +- lib/claper_web/live/stat_live/index.html.heex | 8 ++-- mix.exs | 2 +- priv/gettext/de/LC_MESSAGES/default.po | 4 +- priv/gettext/es/LC_MESSAGES/default.po | 2 +- priv/gettext/fr/LC_MESSAGES/default.po | 6 +-- priv/gettext/nl/LC_MESSAGES/default.po | 2 +- 18 files changed, 96 insertions(+), 57 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index acb1709..f3b7149 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +## v2.1.1 + +### Fixes and improvements + +- Fix OIDC to allow only client_secret_basic and client_secret_post auth methods +- Fix minimum length for 2 characters messages +- Fix poll option order +- Fix translations for current interactions +- Improve poll results UI +- Optimize resource usage of the manager when attendees join the event +- Fix duplicate event being inaccesible + ## v2.1.0 ### Features diff --git a/assets/js/app.js b/assets/js/app.js index af51d19..0df58fc 100644 --- a/assets/js/app.js +++ b/assets/js/app.js @@ -226,7 +226,7 @@ Hooks.PostForm = { e.preventDefault(); submitBtn.click(); } else { - if (TA.value.length > 1 && TA.value.length < 256) { + if (TA.value.length > 0 && TA.value.length < 256) { submitBtn.classList.remove("opacity-50"); submitBtn.classList.add("opacity-100"); submitBtn.disabled = false; @@ -261,7 +261,7 @@ Hooks.PostForm = { updated() { const submitBtn = document.getElementById("submitBtn"); const TA = document.getElementById("postFormTA"); - if (TA.value.length > 1 && TA.value.length < 256) { + if (TA.value.length > 0 && TA.value.length < 256) { submitBtn.classList.remove("opacity-50"); submitBtn.classList.add("opacity-100"); submitBtn.disabled = false; @@ -316,6 +316,13 @@ Hooks.Pickr = { this.pickr.destroy(); }, }; +Hooks.UpdateAttendees = { + mounted() { + this.handleEvent("update-attendees", ({ count }) => { + this.el.textContent = count; + }); + }, +}; Hooks.Presenter = { mounted() { this.presenter = new Presenter(this); diff --git a/lib/claper/events.ex b/lib/claper/events.ex index b5807dc..ed8ba60 100644 --- a/lib/claper/events.ex +++ b/lib/claper/events.ex @@ -428,7 +428,7 @@ defmodule Claper.Events do |> Map.drop([:id, :inserted_at, :updated_at]) |> Map.put(:presentation_file_id, new_presentation_file.id) |> Map.put(:position, 0) - |> Map.put(:banned, nil) + |> Map.put(:banned, []) Claper.Presentations.create_presentation_state(attrs) end) diff --git a/lib/claper_web/controllers/user_oidc_auth.ex b/lib/claper_web/controllers/user_oidc_auth.ex index d2e85a2..9aaec12 100644 --- a/lib/claper_web/controllers/user_oidc_auth.ex +++ b/lib/claper_web/controllers/user_oidc_auth.ex @@ -78,7 +78,8 @@ defmodule ClaperWeb.UserOidcAuth do %{ redirect_uri: "#{url}/users/oidc/callback", - scopes: scopes() + scopes: scopes(), + preferred_auth_methods: [:client_secret_basic, :client_secret_post] } end diff --git a/lib/claper_web/live/event_live/embed_component.ex b/lib/claper_web/live/event_live/embed_component.ex index 46ef274..b73d5bc 100644 --- a/lib/claper_web/live/event_live/embed_component.ex +++ b/lib/claper_web/live/event_live/embed_component.ex @@ -17,21 +17,17 @@ defmodule ClaperWeb.EventLive.EmbedComponent do
- - - - - - - + <%= gettext("See current web content") %>
diff --git a/lib/claper_web/live/event_live/manage.ex b/lib/claper_web/live/event_live/manage.ex index 4b303d8..85e5ca1 100644 --- a/lib/claper_web/live/event_live/manage.ex +++ b/lib/claper_web/live/event_live/manage.ex @@ -86,7 +86,7 @@ defmodule ClaperWeb.EventLive.Manage do @impl true def handle_info(%{event: "presence_diff"}, %{assigns: %{event: event}} = socket) do attendees = Presence.list("event:#{event.uuid}") - {:noreply, assign(socket, :attendees_nb, Enum.count(attendees))} + {:noreply, push_event(socket, "update-attendees", %{count: Enum.count(attendees)})} end @impl true diff --git a/lib/claper_web/live/event_live/manage.html.heex b/lib/claper_web/live/event_live/manage.html.heex index c3a2e4a..ff4a9dd 100644 --- a/lib/claper_web/live/event_live/manage.html.heex +++ b/lib/claper_web/live/event_live/manage.html.heex @@ -402,7 +402,9 @@ clip-rule="evenodd" /> - <%= @attendees_nb %> + + <%= @attendees_nb %> + diff --git a/lib/claper_web/live/event_live/poll_component.ex b/lib/claper_web/live/event_live/poll_component.ex index 9ac321c..0f00d79 100644 --- a/lib/claper_web/live/event_live/poll_component.ex +++ b/lib/claper_web/live/event_live/poll_component.ex @@ -53,17 +53,17 @@ defmodule ClaperWeb.EventLive.PollComponent do <% end %>
-
+
<%= if (length @poll.poll_opts) > 0 do %> <%= for {opt, idx} <- Enum.with_index(@poll.poll_opts) do %> <%= if (length @current_poll_vote) > 0 do %> - <% else %> diff --git a/lib/claper_web/live/event_live/presenter.ex b/lib/claper_web/live/event_live/presenter.ex index df4cf4b..9c89c9e 100644 --- a/lib/claper_web/live/event_live/presenter.ex +++ b/lib/claper_web/live/event_live/presenter.ex @@ -84,7 +84,7 @@ defmodule ClaperWeb.EventLive.Presenter do @impl true def handle_info(%{event: "presence_diff"}, %{assigns: %{event: event}} = socket) do attendees = Presence.list("event:#{event.uuid}") - {:noreply, assign(socket, :attendees_nb, Enum.count(attendees))} + {:noreply, push_event(socket, "update-attendees", %{count: Enum.count(attendees)})} end @impl true @@ -163,7 +163,7 @@ defmodule ClaperWeb.EventLive.Presenter do @impl true def handle_info({:form_updated, form}, socket) do - if form.active do + if form.enabled do {:noreply, socket |> update(:current_form, fn _current_form -> form end)} diff --git a/lib/claper_web/live/event_live/presenter.html.heex b/lib/claper_web/live/event_live/presenter.html.heex index 522d9ee..e23c0f3 100644 --- a/lib/claper_web/live/event_live/presenter.html.heex +++ b/lib/claper_web/live/event_live/presenter.html.heex @@ -56,14 +56,14 @@
<%= if (length @current_poll.poll_opts) > 0 do %> <%= for opt <- @current_poll.poll_opts do %> -
+
- + <%= opt.content %>
@@ -234,7 +234,9 @@
- <%= @attendees_nb %> + + <%= @attendees_nb %> +
diff --git a/lib/claper_web/live/event_live/show.ex b/lib/claper_web/live/event_live/show.ex index e570ec4..3aa0712 100644 --- a/lib/claper_web/live/event_live/show.ex +++ b/lib/claper_web/live/event_live/show.ex @@ -166,7 +166,7 @@ defmodule ClaperWeb.EventLive.Show do def handle_info(%{event: "presence_diff"}, %{assigns: %{event: event}} = socket) do attendees = Presence.list("event:#{event.uuid}") - {:noreply, assign(socket, :attendees_nb, Enum.count(attendees))} + {:noreply, push_event(socket, "update-attendees", %{count: Enum.count(attendees)})} end @impl true @@ -238,7 +238,7 @@ defmodule ClaperWeb.EventLive.Show do {:current_interaction, interaction}, socket ) do - {:noreply, socket |> load_current_interaction(interaction)} + {:noreply, socket |> load_current_interaction(interaction, false)} end @impl true @@ -278,7 +278,7 @@ defmodule ClaperWeb.EventLive.Show do def handle_info({:poll_updated, %Claper.Polls.Poll{enabled: true} = poll}, socket) do {:noreply, socket - |> load_current_interaction(poll)} + |> load_current_interaction(poll, true)} end @impl true @@ -292,7 +292,7 @@ defmodule ClaperWeb.EventLive.Show do def handle_info({:form_updated, %Claper.Forms.Form{enabled: true} = form}, socket) do {:noreply, socket - |> load_current_interaction(form)} + |> load_current_interaction(form, true)} end @impl true @@ -306,7 +306,7 @@ defmodule ClaperWeb.EventLive.Show do def handle_info({:embed_updated, %Claper.Embeds.Embed{enabled: true} = embed}, socket) do {:noreply, socket - |> load_current_interaction(embed)} + |> load_current_interaction(embed, true)} end @impl true @@ -695,20 +695,37 @@ defmodule ClaperWeb.EventLive.Show do defp get_current_interaction(socket, 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 - 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) - 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 - 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) end - defp load_current_interaction(socket, interaction) do + defp load_current_interaction(socket, interaction, _same_interaction) do socket |> assign(:current_interaction, interaction) 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 diff --git a/lib/claper_web/live/event_live/show.html.heex b/lib/claper_web/live/event_live/show.html.heex index 182ca6e..ad386c8 100644 --- a/lib/claper_web/live/event_live/show.html.heex +++ b/lib/claper_web/live/event_live/show.html.heex @@ -50,7 +50,9 @@
- <%= @attendees_nb %> + + <%= @attendees_nb %> +
diff --git a/lib/claper_web/live/stat_live/index.html.heex b/lib/claper_web/live/stat_live/index.html.heex index b8554f4..dad16b2 100644 --- a/lib/claper_web/live/stat_live/index.html.heex +++ b/lib/claper_web/live/stat_live/index.html.heex @@ -191,15 +191,15 @@ else: 0 %> diff --git a/mix.exs b/mix.exs index d65dbce..d911a45 100644 --- a/mix.exs +++ b/mix.exs @@ -1,7 +1,7 @@ defmodule Claper.MixProject do use Mix.Project - @version "2.1.0" + @version "2.1.1" def project do [ diff --git a/priv/gettext/de/LC_MESSAGES/default.po b/priv/gettext/de/LC_MESSAGES/default.po index ce29446..be260b9 100644 --- a/priv/gettext/de/LC_MESSAGES/default.po +++ b/priv/gettext/de/LC_MESSAGES/default.po @@ -724,7 +724,7 @@ msgstr "Es wurde kein Formular gesendet" #: lib/claper_web/live/event_live/form_component.ex:32 #, elixir-autogen, elixir-format msgid "See current form" -msgstr "Siehe aktuelles Formular" +msgstr "Aktuelles Formular anzeigen" #: lib/claper_web/live/event_live/form_component.ex:97 #, elixir-autogen, elixir-format @@ -929,7 +929,7 @@ msgstr "Neuer Webinhalt" #: lib/claper_web/live/event_live/embed_component.ex:36 #, elixir-autogen, elixir-format, fuzzy msgid "See current web content" -msgstr "Aktuellen Webinhalt anzeigen" +msgstr "Aktuelle Webinhalte anzeigen" #: lib/claper_web/live/embed_live/form_component.html.heex:80 #, elixir-autogen, elixir-format, fuzzy diff --git a/priv/gettext/es/LC_MESSAGES/default.po b/priv/gettext/es/LC_MESSAGES/default.po index bacb7a0..5e7dceb 100644 --- a/priv/gettext/es/LC_MESSAGES/default.po +++ b/priv/gettext/es/LC_MESSAGES/default.po @@ -929,7 +929,7 @@ msgstr "Nuevo contenido web" #: lib/claper_web/live/event_live/embed_component.ex:36 #, elixir-autogen, elixir-format msgid "See current web content" -msgstr "Ver contenido" +msgstr "Ver contenido web actual" #: lib/claper_web/live/embed_live/form_component.html.heex:80 #, elixir-autogen, elixir-format diff --git a/priv/gettext/fr/LC_MESSAGES/default.po b/priv/gettext/fr/LC_MESSAGES/default.po index 02b0ae1..4affcfe 100644 --- a/priv/gettext/fr/LC_MESSAGES/default.po +++ b/priv/gettext/fr/LC_MESSAGES/default.po @@ -375,7 +375,7 @@ msgstr "Sondage actuel" #: lib/claper_web/live/event_live/poll_component.ex:28 #, elixir-autogen, elixir-format msgid "See current poll" -msgstr "Voir le sondage" +msgstr "Voir le sondage actuel" #: lib/claper_web/live/event_live/poll_component.ex:127 #: lib/claper_web/live/event_live/poll_component.ex:135 @@ -686,7 +686,7 @@ msgstr "Ajoutez un formulaire pour recueillir les données de votre public." #: lib/claper_web/live/event_live/form_component.ex:51 #, elixir-autogen, elixir-format, fuzzy msgid "Current form" -msgstr "Sondage actuel" +msgstr "Formulaire actuel" #: lib/claper_web/live/event_live/manage.html.heex:295 #, elixir-autogen, elixir-format, fuzzy @@ -729,7 +729,7 @@ msgstr "Aucun formulaire n'a été envoyé" #: lib/claper_web/live/event_live/form_component.ex:32 #, elixir-autogen, elixir-format, fuzzy msgid "See current form" -msgstr "Voir le formulaire" +msgstr "Voir le formulaire actuel" #: lib/claper_web/live/event_live/form_component.ex:97 #, elixir-autogen, elixir-format diff --git a/priv/gettext/nl/LC_MESSAGES/default.po b/priv/gettext/nl/LC_MESSAGES/default.po index 7097c0c..9b59b71 100644 --- a/priv/gettext/nl/LC_MESSAGES/default.po +++ b/priv/gettext/nl/LC_MESSAGES/default.po @@ -929,7 +929,7 @@ msgstr "Nieuwe webinhoud" #: lib/claper_web/live/event_live/embed_component.ex:36 #, elixir-autogen, elixir-format msgid "See current web content" -msgstr "Bekijk de huidige webinhoud" +msgstr "Bekijk huidige webinhoud" #: lib/claper_web/live/embed_live/form_component.html.heex:80 #, elixir-autogen, elixir-format