# frozen_string_literal: true
module CustomerOGM
def self.for(url, fetch_vcard_temp)
return Media.new(url) if url
TTS.for(fetch_vcard_temp)
end
class Media
def initialize(url)
@url = url
end
def to_render
[:voicemail_ogm_media, { locals: { url: @url } }]
end
end
class TTS
def self.for(fetch_vcard_temp)
fetch_vcard_temp.call.then { |vcard|
new(vcard)
}.catch { new(Blather::Stanza::Iq::Vcard::Vcard.new) }
end
def initialize(vcard)
@vcard = vcard
end
def [](k)
value = @vcard[k]
return if value.to_s.empty?
value
end
def fn
self["FN"] || self["NICKNAME"] || "a user of JMP.chat"
end
def to_render
[:voicemail_ogm_tts, { locals: { fn: fn } }]
end
end
end