Sha256: 8cafe35ed1236cbe20978149e9cc0867afaaa38b9fb789c566662e11b4d9308c

Contents?: true

Size: 1.19 KB

Versions: 3

Compression:

Stored size: 1.19 KB

Contents

# frozen_string_literal: true

module Lita
  module Handlers
    # Event-related handlers
    class LockerEvents < Handler
      namespace 'Locker'

      include ::Locker::Label
      include ::Locker::Misc
      include ::Locker::Regex
      include ::Locker::Resource

      on :lock_attempt, :lock_attempt
      on :unlock_attempt, :unlock_attempt

      def lock_attempt(payload)
        label      = payload[:label]
        user       = Lita::User.find_by_id(payload[:user_id])
        request_id = payload[:request_id]

        return unless Label.exists?(label)
        l = Label.new(label)
        if l.lock!(user.id)
          robot.trigger(:lock_success, request_id: request_id)
        else
          robot.trigger(:lock_failure, request_id: request_id)
        end
      end

      def unlock_attempt(payload)
        label      = payload[:label]
        request_id = payload[:request_id]

        return unless Label.exists?(label)
        l = Label.new(label)
        if l.unlock!
          robot.trigger(:unlock_success, request_id: request_id)
        else
          robot.trigger(:unlock_failure, request_id: request_id)
        end
      end

      Lita.register_handler(LockerEvents)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
lita-locker-1.2.0 lib/lita/handlers/locker_events.rb
lita-locker-1.1.1 lib/lita/handlers/locker_events.rb
lita-locker-1.1.0 lib/lita/handlers/locker_events.rb