Skip to content

Commit 3420fc8

Browse files
committed
Read fields from assigns
1 parent 0158677 commit 3420fc8

File tree

4 files changed

+18
-44
lines changed

4 files changed

+18
-44
lines changed

lib/backpex/live_components/form_component.ex

Lines changed: 7 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,7 @@ defmodule Backpex.FormComponent do
7777
end
7878

7979
def handle_event("validate", %{"change" => change, "_target" => target}, %{assigns: %{action_type: :item}} = socket) do
80-
%{assigns: %{item: item, live_resource: live_resource, live_action: live_action} = assigns} = socket
81-
fields = live_resource.fields(live_action, assigns)
82-
80+
%{assigns: %{item: item, fields: fields} = assigns} = socket
8381
changeset_function = &assigns.action_to_confirm.module.changeset/3
8482

8583
target = Enum.at(target, 1)
@@ -107,17 +105,11 @@ defmodule Backpex.FormComponent do
107105
end
108106

109107
def handle_event("validate", %{"change" => change, "_target" => target}, socket) do
110-
%{
111-
live_resource: live_resource,
112-
live_action: live_action,
113-
item: item
114-
} = socket.assigns
108+
%{live_resource: live_resource, fields: fields, item: item} = socket.assigns
115109

116110
target = Enum.at(target, 1)
117111
assocs = Map.get(socket.assigns, :assocs, [])
118112

119-
fields = live_resource.fields(live_action, socket.assigns)
120-
121113
change =
122114
change
123115
|> drop_readonly_changes(fields, socket.assigns)
@@ -151,11 +143,9 @@ defmodule Backpex.FormComponent do
151143

152144
def handle_event("cancel-existing-entry", %{"ref" => file_key, "id" => upload_key}, socket) do
153145
upload_key = String.to_existing_atom(upload_key)
154-
%{live_resource: live_resource, live_action: live_action} = socket.assigns
155-
fields = live_resource.fields(live_action, socket.assigns)
156146

157147
field =
158-
fields
148+
socket.assigns.fields
159149
|> Enum.find(fn {_name, field_options} ->
160150
Map.has_key?(field_options, :upload_key) and Map.get(field_options, :upload_key) == upload_key
161151
end)
@@ -181,8 +171,7 @@ defmodule Backpex.FormComponent do
181171
end
182172

183173
def handle_event("save", %{"change" => change, "save-type" => save_type}, socket) do
184-
%{assigns: %{live_resource: live_resource, live_action: live_action} = assigns} = socket
185-
fields = live_resource.fields(live_action, assigns)
174+
%{assigns: %{live_action: live_action, fields: fields} = assigns} = socket
186175

187176
change =
188177
change
@@ -205,10 +194,7 @@ defmodule Backpex.FormComponent do
205194
end
206195

207196
def handle_event(msg, params, socket) do
208-
%{live_resource: live_resource, live_action: live_action} = socket.assigns
209-
fields = live_resource.fields(live_action, socket.assigns)
210-
211-
Enum.reduce(fields, socket, fn el, acc ->
197+
Enum.reduce(socket.assigns.fields, socket, fn el, acc ->
212198
el.module.handle_form_event(el, msg, params, acc)
213199
end)
214200
|> noreply()
@@ -309,15 +295,14 @@ defmodule Backpex.FormComponent do
309295
assigns:
310296
%{
311297
live_resource: live_resource,
312-
live_action: live_action,
298+
fields: fields,
313299
resource_action: resource_action,
314300
item: item,
315301
return_to: return_to
316302
} = assigns
317303
} = socket
318304

319305
assocs = Map.get(assigns, :assocs, [])
320-
fields = live_resource.fields(live_action, assigns)
321306
params = drop_readonly_changes(params, fields, assigns)
322307

323308
result =
@@ -361,14 +346,13 @@ defmodule Backpex.FormComponent do
361346
assigns:
362347
%{
363348
live_resource: live_resource,
364-
live_action: live_action,
349+
fields: fields,
365350
selected_items: selected_items,
366351
action_to_confirm: action_to_confirm,
367352
return_to: return_to
368353
} = assigns
369354
} = socket
370355

371-
fields = live_resource.fields(live_action, assigns)
372356
params = drop_readonly_changes(params, fields, assigns)
373357

374358
result =

lib/backpex/live_resource.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -728,11 +728,11 @@ defmodule Backpex.LiveResource do
728728
live_action: live_action,
729729
filters: filters,
730730
query_options: query_options,
731-
init_order: init_order
731+
init_order: init_order,
732+
fields: fields
732733
} = assigns
733734

734735
schema = live_resource.adapter_config(:schema)
735-
fields = live_resource.fields(live_action, assigns)
736736

737737
field = Enum.find(fields, fn {name, _field_options} -> name == query_options.order_by end)
738738

lib/backpex/live_resource/form.ex

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,10 +98,9 @@ defmodule Backpex.LiveResource.Form do
9898
end
9999

100100
defp assign_changeset(socket, live_action) do
101-
%{live_resource: live_resource, item: item} = socket.assigns
102-
changeset_fun = changeset_fun(live_resource, live_action)
103-
fields = live_resource.fields(live_action, socket.assigns)
101+
%{live_resource: live_resource, item: item, fields: fields} = socket.assigns
104102

103+
changeset_fun = changeset_fun(live_resource, live_action)
105104
LiveResource.assign_changeset(socket, changeset_fun, item, fields, live_action)
106105
end
107106

lib/backpex/live_resource/index.ex

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -335,9 +335,9 @@ defmodule Backpex.LiveResource.Index do
335335
end
336336

337337
defp assign_active_fields(socket, session) do
338-
fields = socket.assigns.live_resource.fields(:index, socket.assigns)
338+
%{fields: fields, live_resource: live_resource} = socket.assigns
339339

340-
saved_fields = get_in(session, ["backpex", "column_toggle", "#{socket.assigns.live_resource}"]) || %{}
340+
saved_fields = get_in(session, ["backpex", "column_toggle", "#{live_resource}"]) || %{}
341341

342342
active_fields =
343343
Enum.map(fields, fn {name, %{label: label}} ->
@@ -348,8 +348,7 @@ defmodule Backpex.LiveResource.Index do
348348
}}
349349
end)
350350

351-
socket
352-
|> assign(:active_fields, active_fields)
351+
assign(socket, :active_fields, active_fields)
353352
end
354353

355354
defp field_active?(name, saved_fields) do
@@ -429,7 +428,7 @@ defmodule Backpex.LiveResource.Index do
429428
end
430429

431430
defp apply_index(socket) do
432-
%{live_resource: live_resource, params: params} = socket.assigns
431+
%{live_resource: live_resource, params: params, fields: fields} = socket.assigns
433432

434433
if not live_resource.can?(socket.assigns, :index, nil), do: raise(Backpex.ForbiddenError)
435434

@@ -442,8 +441,6 @@ defmodule Backpex.LiveResource.Index do
442441

443442
schema = live_resource.adapter_config(:schema)
444443

445-
fields = live_resource.fields(:index, socket.assigns)
446-
447444
count_criteria = [
448445
search: LiveResource.search_options(params, fields, schema),
449446
filters: LiveResource.filter_options(valid_filter_params, filters)
@@ -547,18 +544,12 @@ defmodule Backpex.LiveResource.Index do
547544
end
548545

549546
defp refresh_items(socket) do
550-
%{
551-
live_resource: live_resource,
552-
params: params,
553-
query_options: query_options
554-
} = socket.assigns
547+
%{live_resource: live_resource, params: params, query_options: query_options, fields: fields} = socket.assigns
555548

556549
schema = live_resource.adapter_config(:schema)
557550
filters = LiveResource.active_filters(socket.assigns)
558551
valid_filter_params = LiveResource.get_valid_filters_from_params(params, filters, LiveResource.empty_filter_key())
559552

560-
fields = live_resource.fields(:index, socket.assigns)
561-
562553
count_criteria = [
563554
search: LiveResource.search_options(params, fields, schema),
564555
filters: LiveResource.filter_options(valid_filter_params, filters)
@@ -581,13 +572,13 @@ defmodule Backpex.LiveResource.Index do
581572
%{
582573
live_resource: live_resource,
583574
query_options: query_options,
584-
metric_visibility: metric_visibility
575+
metric_visibility: metric_visibility,
576+
fields: fields
585577
} = socket.assigns
586578

587579
repo = live_resource.adapter_config(:repo)
588580
schema = live_resource.adapter_config(:schema)
589581
filters = LiveResource.active_filters(socket.assigns)
590-
fields = live_resource.fields(:index, socket.assigns)
591582

592583
metrics =
593584
socket.assigns.live_resource.metrics()

0 commit comments

Comments
 (0)