Sha256: 2b534ad74da285cfd6471de255759f37929982fe7c1682d83d757d244bc6a8aa

Contents?: true

Size: 651 Bytes

Versions: 22

Compression:

Stored size: 651 Bytes

Contents

# A decorated debouncer that will store instances in the current thread clearing them
# after the debounced logic triggers.
class Turbo::ThreadDebouncer
  delegate :wait, to: :debouncer

  def self.for(key, delay: Turbo::Debouncer::DEFAULT_DELAY)
    Thread.current[key] ||= new(key, Thread.current, delay: delay)
  end

  private_class_method :new

  def initialize(key, thread, delay: )
    @key = key
    @debouncer = Turbo::Debouncer.new(delay: delay)
    @thread = thread
  end

  def debounce
    debouncer.debounce do
      yield.tap do
        thread[key] = nil
      end
    end
  end

  private
    attr_reader :key, :debouncer, :thread
end

Version data entries

22 entries across 22 versions & 2 rubygems

Version Path
turbo-rails-2.0.13 app/models/turbo/thread_debouncer.rb
turbo-rails-2.0.12 app/models/turbo/thread_debouncer.rb
turbo-rails-2.0.11 app/models/turbo/thread_debouncer.rb
turbo-rails-2.0.10 app/models/turbo/thread_debouncer.rb
turbo-rails-2.0.9 app/models/turbo/thread_debouncer.rb
turbo-rails-2.0.8 app/models/turbo/thread_debouncer.rb
turbo-rails-2.0.7 app/models/turbo/thread_debouncer.rb
blacklight-spotlight-3.6.0.beta8 vendor/bundle/ruby/3.2.0/gems/turbo-rails-2.0.5/app/models/turbo/thread_debouncer.rb
turbo-rails-2.0.6 app/models/turbo/thread_debouncer.rb
turbo-rails-2.0.5 app/models/turbo/thread_debouncer.rb
turbo-rails-2.0.4 app/models/turbo/thread_debouncer.rb
turbo-rails-2.0.3 app/models/turbo/thread_debouncer.rb
turbo-rails-2.0.2 app/models/turbo/thread_debouncer.rb
turbo-rails-2.0.1 app/models/turbo/thread_debouncer.rb
turbo-rails-2.0.0 app/models/turbo/thread_debouncer.rb
turbo-rails-2.0.0.pre.rc.3 app/models/turbo/thread_debouncer.rb
turbo-rails-2.0.0.pre.rc.2 app/models/turbo/thread_debouncer.rb
turbo-rails-2.0.0.pre.rc.1 app/models/turbo/thread_debouncer.rb
turbo-rails-2.0.0.pre.beta.4 app/models/turbo/thread_debouncer.rb
turbo-rails-2.0.0.pre.beta.3 app/models/turbo/thread_debouncer.rb