Sha256: 84eae11ebe914b03f2309030fb14fe0949ed4ae087002aa8178a05f504e928d2

Contents?: true

Size: 1.77 KB

Versions: 17

Compression:

Stored size: 1.77 KB

Contents

# frozen_string_literal: true

module Decidim
  #
  # Decorator for users
  #
  class UserPresenter < SimpleDelegator
    include ActionView::Helpers::UrlHelper
    include Decidim::TranslatableAttributes

    #
    # nickname presented in a twitter-like style
    #
    def nickname
      return "" if __getobj__.blocked?

      "@#{__getobj__.nickname}"
    end

    def badge
      return "" unless officialized?

      "verified-badge"
    end

    def profile_url
      return "" if respond_to?(:deleted?) && deleted?

      decidim.profile_url(__getobj__.nickname)
    end

    def avatar
      attached_uploader(:avatar)
    end

    def avatar_url(variant = nil)
      return default_avatar_url if __getobj__.blocked?
      return default_avatar_url unless avatar.attached?

      avatar.path(variant:)
    end

    def default_avatar_url
      avatar.default_url
    end

    def profile_path
      return "" if respond_to?(:deleted?) && deleted?

      decidim.profile_path(__getobj__.nickname)
    end

    def direct_messages_enabled?(context)
      return false unless __getobj__.respond_to?(:accepts_conversation?)

      __getobj__.accepts_conversation?(context[:current_user])
    end

    def display_mention
      link_to nickname, profile_url, data: { "external-link": false }
    end

    def can_be_contacted?
      true unless blocked?
    end

    def officialization_text
      translated_attribute(officialized_as).presence ||
        I18n.t("decidim.profiles.default_officialization_text_for_users")
    end

    def can_follow?
      true
    end

    def has_tooltip?
      return if respond_to?(:deleted?) && deleted?

      true
    end

    private

    def decidim
      @decidim ||= Decidim::EngineRouter.new("decidim", { host: __getobj__.organization.host })
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
decidim-core-0.30.0.rc2 app/presenters/decidim/user_presenter.rb
decidim-core-0.30.0.rc1 app/presenters/decidim/user_presenter.rb
decidim-core-0.29.2 app/presenters/decidim/user_presenter.rb
decidim-core-0.28.5 app/presenters/decidim/user_presenter.rb
decidim-core-0.29.1 app/presenters/decidim/user_presenter.rb
decidim-core-0.28.4 app/presenters/decidim/user_presenter.rb
decidim-core-0.29.0 app/presenters/decidim/user_presenter.rb
decidim-core-0.28.3 app/presenters/decidim/user_presenter.rb
decidim-core-0.29.0.rc4 app/presenters/decidim/user_presenter.rb
decidim-core-0.29.0.rc3 app/presenters/decidim/user_presenter.rb
decidim-core-0.29.0.rc2 app/presenters/decidim/user_presenter.rb
decidim-core-0.29.0.rc1 app/presenters/decidim/user_presenter.rb
decidim-core-0.28.2 app/presenters/decidim/user_presenter.rb
decidim-core-0.28.1 app/presenters/decidim/user_presenter.rb
decidim-core-0.28.0 app/presenters/decidim/user_presenter.rb
decidim-core-0.28.0.rc5 app/presenters/decidim/user_presenter.rb
decidim-core-0.28.0.rc4 app/presenters/decidim/user_presenter.rb