web_register_manager.rb

 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