1# frozen_string_literal: true
2
3module CustomerOGM
4 def self.for(url, fetch_vcard_temp)
5 return Media.new(url) if url
6 TTS.for(fetch_vcard_temp)
7 end
8
9 class Media
10 def initialize(url)
11 @url = url
12 end
13
14 def to_render
15 [:voicemail_ogm_media, locals: { url: @url }]
16 end
17 end
18
19 class TTS
20 def self.for(fetch_vcard_temp)
21 fetch_vcard_temp.call.then { |vcard|
22 new(vcard)
23 }.catch { new(Blather::Stanza::Iq::Vcard::Vcard.new) }
24 end
25
26 def initialize(vcard)
27 @vcard = vcard
28 end
29
30 def [](k)
31 value = @vcard[k]
32 return if value.to_s.empty?
33 value
34 end
35
36 def fn
37 self["FN"] || self["NICKNAME"] || "a user of JMP.chat"
38 end
39
40 def to_render
41 [:voicemail_ogm_tts, locals: { fn: fn }]
42 end
43 end
44end