module MnoEnterprise
  module ApplicationHelper

    def support_email
      MnoEnterprise.support_email
    end

    # Re-implement Devise filter
    # For some reasons the original Devise filter seems to ignore the
    # mnoe prefix when using custom devise controllers
    def authenticate_user!(_favourite=nil, opts={})
      redirect_to(new_user_session_path) unless current_user
      true
    end

    # Redirect a signed in user to the confirmation
    # lounge if unconfirmed
    def redirect_to_lounge_if_unconfirmed
      if current_user && !current_user.confirmed?
        redirect_to user_confirmation_lounge_path
      end
      return true
    end

    # Redirect to signup page if user not authenticated
    def authenticate_user_or_signup!
      unless current_user
        redirect_to new_user_registration_path
        false
      end

      true
    end

    def notice_hash(notice)
      return {} unless notice
      # TODO: refactor
      auto_close = (notice =~ /signed (in|out)/i ? 5*1000 : nil)
      # Check if a timeout has been defined in flash
      unless auto_close
        auto_close = flash[:flash_options][:timeout] if flash[:flash_options] && flash[:flash_options][:timeout]
      end

      {
        type:'success',
        msg: (notice || '').html_safe,
        timeout: auto_close
      }
    end

    def alert_hash(alert)
      return {} unless alert
      {
        type:'danger',
        msg: (alert || '').html_safe,
        timeout: -1
      }
    end

    # This helper converts markdown content
    # to html, using the HtmlProcessor (see /lib)
    def markdown(text)
      return text unless text.present?
      HtmlProcessor.new(text, format: :markdown).html.html_safe
    end

    # Return the user avatar url. The displayed picture use the gravatar of the user email
    # TODO: add and use avatar_email from the OAUTH user
    def avatar_url(user)
      gravatar_url(user.email)
    end

    # Return the gravatar url for the given email
    def gravatar_url(email)
      if email
        gravatar_id = Digest::MD5.hexdigest(email.downcase)
        "https://gravatar.com/avatar/#{gravatar_id}.png?s=50&d=mm"
      end
    end
  end
end
