Shared utility functions for file upload wiring in MishkaGervaz forms.
Provides helpers to:
- Build
allow_upload/3options from DSL config - Generate namespaced upload names to avoid collisions
- Parse accept strings
- Check if a form config has uploads
See MishkaGervaz.Form.Web.Live (calls build_allow_upload_opts/2 +
namespaced_upload_name/2 at mount), MishkaGervaz.Form.Web.Events.UploadHandler
(uses namespaced_upload_name/2 for consume_uploaded_entries),
MishkaGervaz.Form.Templates.Standard (uses find_upload_for_field/2 +
upload_error_to_string/1), and MishkaGervaz.Form.Entities.Upload.
Summary
Functions
Build keyword options for Phoenix.LiveView.allow_upload/3 from a DSL upload config map.
Find the upload config for a given field name.
Check if a Static config struct has any uploads configured.
Generate a namespaced upload name unique per component instance.
Parse an accept string into a list of MIME types / extensions.
Convert an upload error atom to a human-readable string.
Functions
Build keyword options for Phoenix.LiveView.allow_upload/3 from a DSL upload config map.
Examples
iex> build_allow_upload_opts(%{accept: "image/*", max_entries: 3, max_file_size: 10_000_000, auto_upload: true}, "my-form")
[accept: ~w(image/*), max_entries: 3, max_file_size: 10_000_000, auto_upload: true]
Find the upload config for a given field name.
Matches by field first, then by name.
Check if a Static config struct has any uploads configured.
Generate a namespaced upload name unique per component instance.
This avoids collisions when multiple form components are on the same page.
Examples
iex> namespaced_upload_name(:avatar, "post-form")
:avatar_post_form
Parse an accept string into a list of MIME types / extensions.
Returns :any if nil, or a list of trimmed parts.
Examples
iex> parse_accept(nil)
:any
iex> parse_accept("image/*,.pdf")
["image/*", ".pdf"]
Convert an upload error atom to a human-readable string.