[Bugfix] Partially revert custom codec selection (#279)

* Removed and re-added codec preference columns

* Removed custom codec work from download options builder

* Updated settings UI

* Made codec preferences non-optional fields
This commit is contained in:
Kieran
2024-06-04 09:19:37 -07:00
committed by GitHub
parent 1c9f8f6abc
commit 4994e70652
10 changed files with 48 additions and 285 deletions
+4 -35
View File
@@ -16,14 +16,11 @@ defmodule Pinchflat.Settings.Setting do
:audio_codec_preference
]
@virtual_fields [
:video_codec_preference_string,
:audio_codec_preference_string
]
@required_fields ~w(
onboarding
pro_enabled
video_codec_preference
audio_codec_preference
)a
schema "settings" do
@@ -33,42 +30,14 @@ defmodule Pinchflat.Settings.Setting do
field :apprise_version, :string
field :apprise_server, :string
field :video_codec_preference, {:array, :string}, default: []
field :audio_codec_preference, {:array, :string}, default: []
field :video_codec_preference_string, :string, default: nil, virtual: true
field :audio_codec_preference_string, :string, default: nil, virtual: true
field :video_codec_preference, :string
field :audio_codec_preference, :string
end
@doc false
def changeset(setting, attrs) do
setting
|> cast(attrs, @allowed_fields)
|> cast(attrs, @virtual_fields, empty_values: [])
|> convert_codec_preference_strings()
|> validate_required(@required_fields)
end
defp convert_codec_preference_strings(changeset) do
fields = [
video_codec_preference_string: :video_codec_preference,
audio_codec_preference_string: :audio_codec_preference
]
Enum.reduce(fields, changeset, fn {virtual_field, actual_field}, changeset ->
case get_change(changeset, virtual_field) do
nil ->
changeset
value ->
new_value =
value
|> String.split(">")
|> Enum.map(&String.trim/1)
|> Enum.reject(&(String.trim(&1) == ""))
|> Enum.map(&String.downcase/1)
put_change(changeset, actual_field, new_value)
end
end)
end
end