Skip to content

Commit 463f5e3

Browse files
committed
Simplify session storage to single key with toggled controllers array
Replace per-controller session keys (collapsed_sidebar_authors, etc.) with a single session[:aas_toggled] array tracking controllers that have been toggled from their default state.
1 parent 7219188 commit 463f5e3

File tree

1 file changed

+12
-13
lines changed

1 file changed

+12
-13
lines changed

lib/active_admin_sidebar/positions.rb

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -33,26 +33,25 @@ def validate_sidebar_options!(options)
3333
end
3434

3535
def apply_collapsible_options(start_collapsed)
36-
session_key = :"collapsed_sidebar_#{controller_name}"
37-
handle_collapsed_sidebar_request(session_key)
38-
is_collapsed = if session[session_key].nil?
39-
start_collapsed
40-
else
41-
session[session_key]
42-
end
36+
handle_sidebar_toggle_request
37+
toggled = (session[:aas_toggled] || []).include?(controller_name)
38+
is_collapsed = toggled ? !start_collapsed : start_collapsed
4339
@sidebar_options.merge!(
4440
collapsible: true,
4541
is_collapsed: is_collapsed
4642
)
4743
end
4844

49-
def handle_collapsed_sidebar_request(session_key)
50-
if request.xhr?
51-
if params[:collapsed_sidebar].present?
52-
collapsed = params[:collapsed_sidebar].to_s == 'true'
53-
session[session_key] = collapsed
54-
render json: { collapsed_sidebar: collapsed } and return
45+
def handle_sidebar_toggle_request
46+
if request.xhr? && params[:collapsed_sidebar].present?
47+
toggled = session[:aas_toggled] || []
48+
if toggled.include?(controller_name)
49+
toggled -= [controller_name]
50+
else
51+
toggled += [controller_name]
5552
end
53+
session[:aas_toggled] = toggled
54+
render json: { collapsed_sidebar: params[:collapsed_sidebar] } and return
5655
end
5756
end
5857

0 commit comments

Comments
 (0)