Sha256: 3dd241f202b2b42f0f77ba6780fcb2074c2fe315778b3332c208de6292d47aaa

Contents?: true

Size: 1.4 KB

Versions: 15

Compression:

Stored size: 1.4 KB

Contents

# frozen_string_literal: true

module Decidim
  module Meetings
    # This cell defines methods required for other cells to render
    # online meeting urls
    class OnlineMeetingCell < Decidim::ViewModel
      delegate :live?, to: :model

      def show
        return if model.iframe_embed_type_none?
        return unless model.iframe_access_level_allowed_for_user?(current_user)
        return unless assembly_privacy_allowed?
        return unless live? || future?

        render
      end

      protected

      def embedder
        @embedder ||= MeetingIframeEmbedder.new(model.online_meeting_url)
      end

      delegate :embeddable?, to: :embedder

      def live_event_url
        if embeddable? && !model.iframe_embed_type_open_in_new_tab?
          Decidim::EngineRouter.main_proxy(model.component).meeting_live_event_path(meeting_id: model.id)
        else
          model.online_meeting_url
        end
      end

      def future?
        Time.current <= model.start_time && !live?
      end

      def assembly_privacy_allowed?
        return true if !private_transparent_assembly? || current_user&.admin?

        model.participatory_space.users.include?(current_user)
      end

      def private_transparent_assembly?
        return unless model.participatory_space.is_a?(Decidim::Assembly)

        model.participatory_space.private_space? && model.participatory_space.is_transparent?
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
decidim-meetings-0.29.2 app/cells/decidim/meetings/online_meeting_cell.rb
decidim-meetings-0.28.5 app/cells/decidim/meetings/online_meeting_cell.rb
decidim-meetings-0.29.1 app/cells/decidim/meetings/online_meeting_cell.rb
decidim-meetings-0.28.4 app/cells/decidim/meetings/online_meeting_cell.rb
decidim-meetings-0.29.0 app/cells/decidim/meetings/online_meeting_cell.rb
decidim-meetings-0.28.3 app/cells/decidim/meetings/online_meeting_cell.rb
decidim-meetings-0.29.0.rc4 app/cells/decidim/meetings/online_meeting_cell.rb
decidim-meetings-0.29.0.rc3 app/cells/decidim/meetings/online_meeting_cell.rb
decidim-meetings-0.29.0.rc2 app/cells/decidim/meetings/online_meeting_cell.rb
decidim-meetings-0.29.0.rc1 app/cells/decidim/meetings/online_meeting_cell.rb
decidim-meetings-0.28.2 app/cells/decidim/meetings/online_meeting_cell.rb
decidim-meetings-0.28.1 app/cells/decidim/meetings/online_meeting_cell.rb
decidim-meetings-0.28.0 app/cells/decidim/meetings/online_meeting_cell.rb
decidim-meetings-0.28.0.rc5 app/cells/decidim/meetings/online_meeting_cell.rb
decidim-meetings-0.28.0.rc4 app/cells/decidim/meetings/online_meeting_cell.rb