1# frozen_string_literal: true
2
3class WebRegisterManager
4 def initialize
5 @tel_map = Hash.new { ChooseTel.new }
6 end
7
8 def []=(jid, tel)
9 @tel_map[jid.to_s] = HaveTel.new(tel)
10 end
11
12 def [](jid)
13 @tel_map[jid.to_s]
14 end
15
16 def choose_tel(iq)
17 self[iq&.from&.stripped].choose_tel(iq)
18 end
19
20 class HaveTel
21 def initialize(tel)
22 @tel = tel
23 end
24
25 def choose_tel(iq)
26 EMPromise.resolve([iq, @tel])
27 end
28 end
29
30 class ChooseTel
31 def choose_tel(iq)
32 reply = iq.reply
33 reply.status = :completed
34 reply.note_type = :error
35 reply.note_text =
36 "You have not chosen a phone number yet, please return to " \
37 "https://jmp.chat and choose one now."
38 EMPromise.reject(reply)
39 end
40 end
41end