Sha256: 31a0ebd909127e92e5b1eab1d257f842ad8f638b9d22e807af1e8f0cef14f4bb

Contents?: true

Size: 777 Bytes

Versions: 14

Compression:

Stored size: 777 Bytes

Contents

# frozen_string_literal: true

require "ostruct"

module Heya
  module Campaigns
    class Step < OpenStruct
      include GlobalID::Identification

      def self.find(id)
        campaign_name, _step_name = id.to_s.split("/")
        campaign_name.constantize.steps.find { |s| s.id == id }
      end

      def initialize(id:, name:, campaign:, position:, action:, wait:, segment:, queue:, params: {})
        super
        if action.respond_to?(:validate_step)
          action.validate_step(self)
        end
      end

      def gid
        to_gid(app: "heya").to_s
      end

      def in_segment?(user)
        Heya.in_segments?(user, *campaign.__segments, segment)
      end

      def campaign_name
        @campaign_name ||= campaign.name
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
heya-0.12.0 lib/heya/campaigns/step.rb
heya-0.11.0 lib/heya/campaigns/step.rb
heya-0.10.0 lib/heya/campaigns/step.rb
heya-0.9.0 lib/heya/campaigns/step.rb
heya-0.8.0 lib/heya/campaigns/step.rb
heya-0.7.0 lib/heya/campaigns/step.rb
heya-0.6.1 lib/heya/campaigns/step.rb
heya-0.6.0 lib/heya/campaigns/step.rb
heya-0.5.3 lib/heya/campaigns/step.rb
heya-0.5.2 lib/heya/campaigns/step.rb
heya-0.5.1 lib/heya/campaigns/step.rb
heya-0.5.0 lib/heya/campaigns/step.rb
heya-0.4.0 lib/heya/campaigns/step.rb
heya-0.3.0 lib/heya/campaigns/step.rb