refactor(types): remove dead catch-all clauses unreachable per success typing

This commit is contained in:
Moritz 2026-06-02 11:56:44 +02:00
parent d9a5a081df
commit 05f66ccf74
17 changed files with 14 additions and 74 deletions

View file

@ -17,17 +17,11 @@ defmodule Mv.Membership.JoinRequest.Changes.FilterFormDataByAllowlist do
form_data = Ash.Changeset.get_attribute(changeset, :form_data) || %{} form_data = Ash.Changeset.get_attribute(changeset, :form_data) || %{}
allowlist_ids = allowlist_ids =
case Membership.get_join_form_allowlist() do Membership.get_join_form_allowlist()
list when is_list(list) ->
list
|> Enum.map(fn item -> item.id end) |> Enum.map(fn item -> item.id end)
|> MapSet.new() |> MapSet.new()
|> MapSet.difference(MapSet.new(@typed_fields)) |> MapSet.difference(MapSet.new(@typed_fields))
_ ->
MapSet.new()
end
filtered = filtered =
form_data form_data
|> Enum.filter(fn {key, _} -> MapSet.member?(allowlist_ids, to_string(key)) end) |> Enum.filter(fn {key, _} -> MapSet.member?(allowlist_ids, to_string(key)) end)

View file

@ -1234,8 +1234,6 @@ defmodule Mv.Membership.Member do
|> String.replace("_", "\\_") |> String.replace("_", "\\_")
end end
defp sanitize_search_query(_), do: ""
# ============================================================================ # ============================================================================
# Search Filter Builders # Search Filter Builders
# ============================================================================ # ============================================================================

View file

@ -26,8 +26,6 @@ defmodule Mv.MembershipFees.Changes.SetMembershipFeeStartDate do
""" """
use Ash.Resource.Change use Ash.Resource.Change
require Logger
alias Mv.MembershipFees.CalendarCycles alias Mv.MembershipFees.CalendarCycles
@impl true @impl true
@ -83,11 +81,6 @@ defmodule Mv.MembershipFees.Changes.SetMembershipFeeStartDate do
field: :membership_fee_type_id, field: :membership_fee_type_id,
message: "not found" message: "not found"
) )
{:error, reason} ->
# Log warning for other unexpected errors
Logger.warning("Could not auto-set membership_fee_start_date: #{inspect(reason)}")
changeset
end end
end end

View file

@ -207,8 +207,6 @@ defmodule Mv.Config do
end end
end end
defp derive_app_url_from_api_url(_), do: nil
@doc """ @doc """
Returns true if Vereinfacht is fully configured (URL, API key, and club ID all set). Returns true if Vereinfacht is fully configured (URL, API key, and club ID all set).
""" """
@ -251,7 +249,6 @@ defmodule Mv.Config do
case System.get_env(key) do case System.get_env(key) do
nil -> false nil -> false
v when is_binary(v) -> String.trim(v) != "" v when is_binary(v) -> String.trim(v) != ""
_ -> false
end end
end end
@ -270,9 +267,6 @@ defmodule Mv.Config do
value when is_binary(value) -> value when is_binary(value) ->
v = String.trim(value) |> String.downcase() v = String.trim(value) |> String.downcase()
v in ["true", "1", "yes"] v in ["true", "1", "yes"]
_ ->
false
end end
end end
@ -328,7 +322,6 @@ defmodule Mv.Config do
defp present?(nil), do: false defp present?(nil), do: false
defp present?(s) when is_binary(s), do: String.trim(s) != "" defp present?(s) when is_binary(s), do: String.trim(s) != ""
defp present?(_), do: false
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
# OIDC authentication # OIDC authentication

View file

@ -190,6 +190,4 @@ defmodule Mv.Mailer do
defp valid_email?(email) when is_binary(email) do defp valid_email?(email) when is_binary(email) do
Regex.match?(@email_regex, String.trim(email)) Regex.match?(@email_regex, String.trim(email))
end end
defp valid_email?(_), do: false
end end

View file

@ -210,8 +210,6 @@ defmodule Mv.Membership.Import.MemberCSV do
MapSet.member?(HeaderMapper.known_member_fields(), normalized) MapSet.member?(HeaderMapper.known_member_fields(), normalized)
end end
defp member_field?(_), do: false
# Validates that row count doesn't exceed limit # Validates that row count doesn't exceed limit
defp validate_row_count(rows, max_rows) do defp validate_row_count(rows, max_rows) do
if length(rows) > max_rows do if length(rows) > max_rows do

View file

@ -522,6 +522,4 @@ defmodule Mv.Membership.MemberExport do
other -> other other -> other
end) end)
end end
defp normalize_computed_fields(_), do: []
end end

View file

@ -87,8 +87,6 @@ defmodule Mv.OidcRoleSync do
ArgumentError -> nil ArgumentError -> nil
end end
defp safe_get_atom(_map, _key), do: nil
defp peek_jwt_claims(token) do defp peek_jwt_claims(token) do
parts = String.split(token, ".") parts = String.split(token, ".")

View file

@ -335,8 +335,6 @@ defmodule MvWeb.AuthController do
end end
end end
defp redact_url(_), do: "[redacted]"
def sign_out(conn, _params) do def sign_out(conn, _params) do
conn = clear_session(conn, :mv) |> put_flash(:success, gettext("You are now signed out")) conn = clear_session(conn, :mv) |> put_flash(:success, gettext("You are now signed out"))

View file

@ -935,7 +935,6 @@ defmodule MvWeb.Components.MemberFilterComponent do
{nil, true} -> "#{base_classes} btn-active" {nil, true} -> "#{base_classes} btn-active"
{:in, true} -> "#{base_classes} btn-success btn-active" {:in, true} -> "#{base_classes} btn-success btn-active"
{:not_in, true} -> "#{base_classes} btn-error btn-active" {:not_in, true} -> "#{base_classes} btn-error btn-active"
_ -> "#{base_classes} btn-outline"
end end
end end

View file

@ -836,12 +836,6 @@ defmodule MvWeb.GroupLive.Show do
end end
end end
defp perform_add_members(socket, _group, _member_ids, _actor) do
{:noreply,
socket
|> put_flash(:error, gettext("No members selected."))}
end
defp handle_successful_add_members(socket, group, actor) do defp handle_successful_add_members(socket, group, actor) do
socket = reload_group(socket, group.slug, actor) socket = reload_group(socket, group.slug, actor)

View file

@ -287,8 +287,6 @@ defmodule MvWeb.JoinLive do
end end
end end
defp member_field_input_type(_), do: "text"
defp member_field_atom(field_id) when is_binary(field_id) do defp member_field_atom(field_id) when is_binary(field_id) do
Mv.Constants.member_fields() Mv.Constants.member_fields()
|> Enum.find(&(Atom.to_string(&1) == field_id)) |> Enum.find(&(Atom.to_string(&1) == field_id))

View file

@ -1218,8 +1218,6 @@ defmodule MvWeb.MemberLive.Index do
end end
end end
defp apply_one_fee_type_filter(query, _, _), do: query
defp apply_cycle_status_filter(members, nil, _show_current), do: members defp apply_cycle_status_filter(members, nil, _show_current), do: members
defp apply_cycle_status_filter(members, status, show_current) defp apply_cycle_status_filter(members, status, show_current)
@ -1297,8 +1295,6 @@ defmodule MvWeb.MemberLive.Index do
end end
end end
defp valid_sort_field?(_), do: false
defp valid_sort_field_db_or_custom?(field) when is_atom(field) do defp valid_sort_field_db_or_custom?(field) when is_atom(field) do
non_sortable_fields = [:notes] non_sortable_fields = [:notes]
valid_fields = Mv.Constants.member_fields() -- non_sortable_fields valid_fields = Mv.Constants.member_fields() -- non_sortable_fields
@ -1558,8 +1554,6 @@ defmodule MvWeb.MemberLive.Index do
assign(socket, :group_filters, Map.take(filters, valid_group_ids)) assign(socket, :group_filters, Map.take(filters, valid_group_ids))
end end
defp maybe_update_group_filters(socket, _), do: socket
defp maybe_update_fee_type_filters(socket, params) when is_map(params) do defp maybe_update_fee_type_filters(socket, params) when is_map(params) do
prefix = @fee_type_filter_prefix prefix = @fee_type_filter_prefix
prefix_len = String.length(prefix) prefix_len = String.length(prefix)
@ -1586,8 +1580,6 @@ defmodule MvWeb.MemberLive.Index do
assign(socket, :fee_type_filters, Map.take(filters, valid_fee_type_ids)) assign(socket, :fee_type_filters, Map.take(filters, valid_fee_type_ids))
end end
defp maybe_update_fee_type_filters(socket, _), do: socket
defp add_fee_type_filter_entry(acc, key, value_str, prefix_len) do defp add_fee_type_filter_entry(acc, key, value_str, prefix_len) do
key_str = to_string(key) key_str = to_string(key)
raw_id = String.slice(key_str, prefix_len, String.length(key_str) - prefix_len) raw_id = String.slice(key_str, prefix_len, String.length(key_str) - prefix_len)
@ -1719,8 +1711,6 @@ defmodule MvWeb.MemberLive.Index do
assign(socket, :date_filters, DateFilter.from_params(params, date_custom_fields)) assign(socket, :date_filters, DateFilter.from_params(params, date_custom_fields))
end end
defp maybe_update_date_filters(socket, _params), do: socket
# ------------------------------------------------------------- # -------------------------------------------------------------
# Custom Field Value Helpers # Custom Field Value Helpers
# ------------------------------------------------------------- # -------------------------------------------------------------

View file

@ -103,8 +103,6 @@ defmodule MvWeb.MemberLive.Index.FieldSelection do
end) end)
end end
defp parse_cookie_header(_), do: %{}
@doc """ @doc """
Saves field selection to cookie. Saves field selection to cookie.
@ -218,8 +216,6 @@ defmodule MvWeb.MemberLive.Index.FieldSelection do
end end
end end
defp parse_json(_), do: %{}
# Parses a comma-separated string of field names # Parses a comma-separated string of field names
defp parse_fields_string(fields_string) do defp parse_fields_string(fields_string) do
fields_string fields_string

View file

@ -2208,11 +2208,6 @@ msgstr "Keine Mitglieder in dieser Gruppe"
msgid "No members selected" msgid "No members selected"
msgstr "Keine Mitglieder ausgewählt" msgstr "Keine Mitglieder ausgewählt"
#: lib/mv_web/live/group_live/show.ex
#, elixir-autogen, elixir-format
msgid "No members selected."
msgstr "Keine Mitglieder ausgewählt."
#: lib/mv_web/live/member_live/show/membership_fees_component.ex #: lib/mv_web/live/member_live/show/membership_fees_component.ex
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No membership fee cycles found. Cycles will be generated automatically when a membership fee type is assigned." msgid "No membership fee cycles found. Cycles will be generated automatically when a membership fee type is assigned."
@ -3972,3 +3967,8 @@ msgstr "Zeitraum"
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "To" msgid "To"
msgstr "Bis" msgstr "Bis"
#~ #: lib/mv_web/live/group_live/show.ex
#~ #, elixir-autogen, elixir-format
#~ msgid "No members selected."
#~ msgstr "Keine Mitglieder ausgewählt."

View file

@ -2209,11 +2209,6 @@ msgstr ""
msgid "No members selected" msgid "No members selected"
msgstr "" msgstr ""
#: lib/mv_web/live/group_live/show.ex
#, elixir-autogen, elixir-format
msgid "No members selected."
msgstr ""
#: lib/mv_web/live/member_live/show/membership_fees_component.ex #: lib/mv_web/live/member_live/show/membership_fees_component.ex
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No membership fee cycles found. Cycles will be generated automatically when a membership fee type is assigned." msgid "No membership fee cycles found. Cycles will be generated automatically when a membership fee type is assigned."

View file

@ -2209,11 +2209,6 @@ msgstr ""
msgid "No members selected" msgid "No members selected"
msgstr "" msgstr ""
#: lib/mv_web/live/group_live/show.ex
#, elixir-autogen, elixir-format, fuzzy
msgid "No members selected."
msgstr ""
#: lib/mv_web/live/member_live/show/membership_fees_component.ex #: lib/mv_web/live/member_live/show/membership_fees_component.ex
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No membership fee cycles found. Cycles will be generated automatically when a membership fee type is assigned." msgid "No membership fee cycles found. Cycles will be generated automatically when a membership fee type is assigned."
@ -3972,3 +3967,8 @@ msgstr ""
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "To" msgid "To"
msgstr "" msgstr ""
#~ #: lib/mv_web/live/group_live/show.ex
#~ #, elixir-autogen, elixir-format, fuzzy
#~ msgid "No members selected."
#~ msgstr ""