Sha256: 647a02e4a0479ef97ae124e572dea1a5de8aa112f7e5084b44b2cf44daf34726

Contents?: true

Size: 1.95 KB

Versions: 2

Compression:

Stored size: 1.95 KB

Contents

module Voicemail
  class MailboxPlayMessageController < ApplicationController

    attr_accessor :new_or_saved

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

    def run
      load_message
      play_message
    end

    def play_message
      menu intro_message, message_uri, play_message_menu, timeout: config.menu_timeout, tries: config.menu_tries do
        match 1 do
          archive_or_unarchive_message
        end

        match 5 do
          delete_message
        end

        match(7) { rewind_message }
        match(8) { skip_message }
        match(9) { main_menu }

        timeout do
          play config.mailbox.menu_timeout_message
        end

        invalid do
          play config.mailbox.menu_invalid_message
        end

        failure do
          play config.mailbox.menu_failure_message
          main_menu
        end
      end
    end

    def intro_message
      IntroMessageCreator.new(current_message).intro_message
    end

    def play_message_menu
      if new_or_saved == :new
        config.messages.menu_new
      else
        config.messages.menu_saved
      end
    end

    def rewind_message
      play_message
    end

    def skip_message
      # This method intentionally left blank
    end

    def archive_or_unarchive_message
      if new_or_saved == :new
        storage.archive_message mailbox[:id], current_message[:id]
      else
        storage.unarchive_message mailbox[:id], current_message[:id]
      end
    end

    def delete_message
      storage.delete_message mailbox[:id], current_message[:id]
      play config.messages.message_deleted
    end

    def current_message
      @message
    end

    def load_message
      @message = metadata[:message] || nil
      raise ArgumentError, "MailboxPlayMessageController needs a valid message passed to it" unless @message
    end

    def message_uri
      current_message[:uri]
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
voicemail-1.1.1 lib/voicemail/call_controllers/mailbox_play_message_controller.rb
voicemail-1.1.0 lib/voicemail/call_controllers/mailbox_play_message_controller.rb