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