Sha256: a8a1e547624c33b7d7dc835cd33a5e52ff293ec6834d34b9aed6f8147334937c

Contents?: true

Size: 1.24 KB

Versions: 1

Compression:

Stored size: 1.24 KB

Contents

# frozen_string_literal: true

module Xip
  class Controller

    module DynamicDelay
      extend ActiveSupport::Concern

      SHORT_DELAY = 3.0
      STANDARD_DELAY = 4.3
      LONG_DELAY = 7.0

      included do
        def dynamic_delay(previous_reply:)
          calculate_delay(previous_reply: previous_reply)
        end

        private

        def calculate_delay(previous_reply:)
          return SHORT_DELAY if previous_reply.blank?

          case previous_reply['reply_type']
          when 'text'
            calculate_delay_from_text(previous_reply['text'])
          when 'image'
            STANDARD_DELAY
          when 'audio'
            STANDARD_DELAY
          when 'video'
            STANDARD_DELAY
          when 'file'
            STANDARD_DELAY
          when 'cards'
            STANDARD_DELAY
          when 'list'
            STANDARD_DELAY
          when nil
            SHORT_DELAY
          else
            SHORT_DELAY
          end
        end
      end

      def calculate_delay_from_text(text)
        case text.size
        when 0..55
          SHORT_DELAY
        when 56..140
          STANDARD_DELAY
        when 141..256
          STANDARD_DELAY * 1.5
        else
          LONG_DELAY
        end
      end
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
xip-2.0.0.beta2 lib/xip/controller/dynamic_delay.rb