# frozen_string_literal: true
class CommandList
include Enumerable
def self.for(jid)
Customer.for_jid(jid).then(&:registered?).catch { nil }.then { |reg|
next [] unless reg
REDIS.get("catapult_fwd-#{reg.phone}").then { |fwd| [reg, fwd] }
}.then do |(reg, fwd)|
next RegisteredAndHasForwarding.new if reg && fwd
next Registered.new if reg
CommandList.new
end
end
def each
yield node: "jabber:iq:register", name: "Register"
end
class Registered < CommandList
def each
super
yield node: "number-display", name: "Display JMP Number"
yield node: "configure-calls", name: "Configure Calls"
# TODO: don't show this item if no braintree methods available
# TODO: don't show this item if no plan for this customer
yield node: "buy-credit", name: "Buy account credit"
yield node: "usage", name: "Show Monthly Usage"
yield node: "reset sip account", name: "Create or Reset SIP Account"
end
end
class RegisteredAndHasForwarding < Registered
def each
super
yield(
node: "record-voicemail-greeting",
name: "Record Voicemail Greeting"
)
end
end
end