Files
fizzy/app/helpers/accesses_helper.rb
T
2025-08-05 17:02:24 -05:00

47 lines
1.8 KiB
Ruby

module AccessesHelper
def access_menu_tag(collection, **options, &)
tag.menu class: [ options[:class], { "toggler--toggled": collection.all_access? } ], data: {
controller: "filter toggle-class",
toggle_class_toggle_class: "toggler--toggled" }, &
end
def access_toggles_for(users, selected:)
render partial: "collections/access_toggle",
collection: users, as: :user,
locals: { selected: selected },
cached: ->(user) { [ user, selected ] }
end
def access_involvement_advance_button(collection, user)
access = collection.access_for(user)
turbo_frame_tag dom_id(collection, :involvement_button) do
button_to collection_involvement_path(collection), method: :put,
aria: { labelledby: dom_id(collection, :involvement_label) },
class: [ "btn", { "btn--reversed": access.involvement == "watching" || access.involvement == "everything" } ],
params: { involvement: next_involvement(access.involvement) },
title: involvement_access_label(collection, access.involvement) do
icon_tag("notification-bell-#{access.involvement.dasherize}") +
tag.span(involvement_access_label(collection, access.involvement), class: "for-screen-reader", id: dom_id(collection, :involvement_label))
end
end
end
private
def next_involvement(involvement)
order = %w[ everything watching access_only ]
order[(order.index(involvement.to_s) + 1) % order.size]
end
def involvement_access_label(collection, involvement)
case involvement
when "access_only"
"Notifications are off for #{collection.name}"
when "everything"
"Notifying me about everything in #{collection.name}"
when "watching"
"Notifying me only about @mentions and new items in #{collection.name}"
end
end
end