[WIP] added basic codec preference fields to settings form
This commit is contained in:
parent
3cb7c2c70c
commit
14742d442a
4 changed files with 59 additions and 2 deletions
|
|
@ -13,7 +13,9 @@ defmodule Pinchflat.Settings.Setting do
|
|||
:apprise_version,
|
||||
:apprise_server,
|
||||
:video_codec_preference,
|
||||
:audio_codec_preference
|
||||
:audio_codec_preference,
|
||||
:video_codec_preference_string,
|
||||
:audio_codec_preference_string
|
||||
]
|
||||
|
||||
@required_fields ~w(
|
||||
|
|
@ -38,6 +40,31 @@ defmodule Pinchflat.Settings.Setting do
|
|||
def changeset(setting, attrs) do
|
||||
setting
|
||||
|> cast(attrs, @allowed_fields)
|
||||
|> convert_codec_preference_strings()
|
||||
|> validate_required(@required_fields)
|
||||
end
|
||||
|
||||
# TODO: test
|
||||
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) == ""))
|
||||
|
||||
put_change(changeset, actual_field, new_value)
|
||||
end
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
Oops, something went wrong! Please check the errors below.
|
||||
</.error>
|
||||
|
||||
<h3 class=" text-2xl text-black dark:text-white">
|
||||
<h3 class="text-2xl text-black dark:text-white">
|
||||
General Options
|
||||
</h3>
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ defmodule PinchflatWeb.Settings.SettingController do
|
|||
|
||||
def update(conn, %{"setting" => setting_params}) do
|
||||
setting = Settings.record()
|
||||
IO.inspect(setting_params)
|
||||
|
||||
case Settings.update_setting(setting, setting_params) do
|
||||
{:ok, _} ->
|
||||
|
|
|
|||
|
|
@ -15,5 +15,34 @@
|
|||
) %>
|
||||
</section>
|
||||
|
||||
<section class="mt-10">
|
||||
<h3 class="text-2xl text-black dark:text-white">
|
||||
Advanced Options
|
||||
</h3>
|
||||
|
||||
<%!-- TODO: add codec docs --%>
|
||||
<.input
|
||||
id="video_codec_preference_string"
|
||||
name="setting[video_codec_preference_string]"
|
||||
value={Enum.join(f[:video_codec_preference].value, ">")}
|
||||
placeholder="avc>vp9>av01"
|
||||
type="text"
|
||||
label="Video Codec Preference"
|
||||
help="Order of preference for video codecs. Separate with >. See below for available codecs TODO"
|
||||
inputclass="font-mono text-sm mr-4"
|
||||
/>
|
||||
|
||||
<.input
|
||||
id="audio_codec_preference_string"
|
||||
name="setting[audio_codec_preference_string]"
|
||||
value={Enum.join(f[:audio_codec_preference].value, ">")}
|
||||
placeholder="mp4a>opus>aac"
|
||||
type="text"
|
||||
label="Audio Codec Preference"
|
||||
help="Order of preference for audio codecs. Separate with >. See below for available codecs TODO"
|
||||
inputclass="font-mono text-sm mr-4"
|
||||
/>
|
||||
</section>
|
||||
|
||||
<.button class="mt-10 mb-4 sm:mb-8 w-full sm:w-auto" rounding="rounded-lg">Save Settings</.button>
|
||||
</.simple_form>
|
||||
|
|
|
|||
Loading…
Reference in a new issue