# frozen_string_literal: true

require_relative "error_to_send"

class WebRegisterManager
	def initialize
		@tel_map = Hash.new { ChooseTel.new }
	end

	def []=(jid, tel)
		@tel_map[jid.to_s] = HaveTel.new(tel)
	end

	def [](jid)
		@tel_map[jid.to_s]
	end

	def choose_tel(iq)
		self[iq&.from&.stripped].choose_tel(iq)
	end

	class HaveTel
		def initialize(tel)
			@tel = tel
		end

		def choose_tel(iq)
			EMPromise.resolve([iq, @tel])
		end
	end

	class ChooseTel
		def choose_tel(iq)
			reply = iq.reply
			reply.status = :completed
			reply.note_type = :error
			reply.note_text =
				"You have not chosen a phone number yet, please return to " \
				"https://jmp.chat and choose one now."
			raise ErrorToSend, reply
		end
	end
end
