Sha256: d340d5583809cabb942ace7e87c5cc6daf040f88132e47037eef7ce64a4cbc30

Contents?: true

Size: 976 Bytes

Versions: 4

Compression:

Stored size: 976 Bytes

Contents

module Voicemail
  class MailboxMessagesController < ApplicationController

    attr_accessor :new_or_saved

    def initialize(call, metadata={})
      @new_or_saved = metadata[:new_or_saved] || :new

      super call, metadata
    end

    def run
      message_loop
    end

    def message_loop
      if messages_remaining > 0
        next_message
      else
        bail_out
      end
    end

    def next_message
      handle_message current_message
      message_loop
    end

    def handle_message(message)
      invoke MailboxPlayMessageController, message: message, mailbox: mailbox[:id], new_or_saved: new_or_saved, storage: storage
    end

    private

    def messages_remaining
      storage.send "count_#{new_or_saved}_messages", mailbox[:id]
    end

    def current_message
      storage.send "next_#{new_or_saved}_message", mailbox[:id]
    end

    def bail_out
      play config.messages["no_#{new_or_saved}_messages"]
      main_menu
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
voicemail-1.1.1 lib/voicemail/call_controllers/mailbox_messages_controller.rb
voicemail-1.1.0 lib/voicemail/call_controllers/mailbox_messages_controller.rb
voicemail-1.0.0 lib/voicemail/call_controllers/mailbox_messages_controller.rb
voicemail-1.0.0.beta lib/voicemail/call_controllers/mailbox_messages_controller.rb