# 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