class Lita::Handlers::Queue
Public Instance Methods
fetch_queue(room)
click to toggle source
API
# File lib/lita/handlers/queue.rb, line 15 def fetch_queue(room) raise ArgumentError, 'must be a Lita::Room object' unless room.is_a? Lita::Room serialized = redis.get(room.id) if serialized MultiJson.load(serialized) else [] end end
queue_change_to_next(response)
click to toggle source
# File lib/lita/handlers/queue.rb, line 81 def queue_change_to_next(response) room = room_for(response) queue = fetch_queue(room) unless queue.empty? removed = queue.shift store_queue(room, queue) response.reply t('messages.removed_from_queue', mention: removed) response.reply t('messages.is_the_next_on_queue_motivate', mention: queue.first) unless queue.empty? end response.reply display_queue(queue, room) end
queue_list(response)
click to toggle source
Commands
# File lib/lita/handlers/queue.rb, line 33 def queue_list(response) room = room_for(response) queue = fetch_queue(room) response.reply display_queue(queue, room) end
queue_list_next(response)
click to toggle source
# File lib/lita/handlers/queue.rb, line 68 def queue_list_next(response) room = room_for(response) queue = fetch_queue(room) if queue.empty? response.reply t('messages.queue_is_empty') elsif queue.size == 1 response.reply t('messages.is_the_last_on_queue', mention: queue.first) else response.reply t('messages.is_the_next_on_queue', mention: queue[1]) end end
queue_me(response)
click to toggle source
# File lib/lita/handlers/queue.rb, line 40 def queue_me(response) room = room_for(response) queue = fetch_queue(room) me = response.user.mention_name if queue.include? me response.reply t('messages.already_on_queue') else queue << me store_queue(room, queue) response.reply t('messages.added_to_queue', mention: me) end end
queue_rotate(response)
click to toggle source
# File lib/lita/handlers/queue.rb, line 95 def queue_rotate(response) room = room_for(response) queue = fetch_queue(room) unless queue.empty? new_queue = queue.rotate store_queue(room, new_queue) response.reply t('messages.moved_to_the_end_of_queue', mention: queue.first) response.reply t('messages.is_the_next_on_queue_motivate', mention: new_queue.first) end response.reply display_queue(queue, room) end
store_queue(room, queue)
click to toggle source
# File lib/lita/handlers/queue.rb, line 27 def store_queue(room, queue) redis.set room.id, MultiJson.dump(queue) end
unqueue_me(response)
click to toggle source
# File lib/lita/handlers/queue.rb, line 54 def unqueue_me(response) room = room_for(response) queue = fetch_queue(room) me = response.user.mention_name if queue.include? me queue.delete(me) store_queue(room, queue) response.reply t('messages.removed_from_queue', mention: me) else response.reply t('messages.not_on_queue') end end
Private Instance Methods
display_queue(queue, room)
click to toggle source
# File lib/lita/handlers/queue.rb, line 115 def display_queue(queue, room) log.debug "displaying info for queue: #{queue.inspect} at #{room.inspect}" if queue.empty? t('messages.queue_is_empty') else render_template('display_queue_for_room', room: room, queue: queue) end end
room_for(response)
click to toggle source
# File lib/lita/handlers/queue.rb, line 111 def room_for(response) response.message.source.room_object end