dockyard/dismissible_helpers

View on GitHub
lib/dismissible_helpers/helpers/dismissible_helpers.rb

Summary

Maintainability
A
35 mins
Test Coverage
module DismissibleHelpers::Helpers::DismissibleHelpers

  def render_dismissible_helper(name, options = {}, &block)
    contents = block_given? ? capture(&block) : nil
    restorable = options.fetch(:restorable) { false }
    if restorable || !dismissed?(name)
      builder = restorable ? DismissibleHelpers::RestorableContentBuilder : DismissibleHelpers::ContentBuilder
      builder.build(name, contents, options.merge({ dismissed: dismissed?(name) }))
    end
  end

  private

  def dismissed?(name)
    user = respond_to?(:current_user) ? current_user : nil
    DismissibleHelpers::DismissedChecker.dismissed?(
      name,
      user,
      cookies[:dismissed_helpers]
    )
  end

end