Skip to content

Commit a780760

Browse files
committed
refactor: allow to introduce different merge strategies in the future
1 parent e4700d0 commit a780760

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

lib/inertia_rails/renderer.rb

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -53,13 +53,17 @@ def shared_data
5353
controller.__send__(:inertia_shared_data)
5454
end
5555

56+
# Cast props to symbol keyed hash before merging so that we have a consistent data structure and
57+
# avoid duplicate keys after merging.
58+
#
59+
# Functionally, this permits using either string or symbol keys in the controller. Since the results
60+
# is cast to json, we should treat string/symbol keys as identical.
61+
def merge_props(shared_data, props)
62+
shared_data.deep_symbolize_keys.send(@deep_merge ? :deep_merge : :merge, props.deep_symbolize_keys)
63+
end
64+
5665
def computed_props
57-
# Cast props to symbol keyed hash before merging so that we have a consistent data structure and
58-
# avoid duplicate keys after merging.
59-
#
60-
# Functionally, this permits using either string or symbol keys in the controller. Since the results
61-
# is cast to json, we should treat string/symbol keys as identical.
62-
_props = shared_data.deep_symbolize_keys.send(prop_merge_method, props.deep_symbolize_keys).select do |key, prop|
66+
_props = merge_props(shared_data, props).select do |key, prop|
6367
if rendering_partial_component?
6468
key.in? partial_keys
6569
else
@@ -97,9 +101,5 @@ def partial_keys
97101
def rendering_partial_component?
98102
@request.inertia_partial? && @request.headers['X-Inertia-Partial-Component'] == component
99103
end
100-
101-
def prop_merge_method
102-
@deep_merge ? :deep_merge : :merge
103-
end
104104
end
105105
end

0 commit comments

Comments
 (0)