web_register_manager.rb

 1# frozen_string_literal: true
 2
 3class WebRegisterManager
 4	THIRTY_DAYS = 60 * 60 * 24 * 30
 5
 6	def initialize(redis: REDIS)
 7		@redis = redis
 8	end
 9
10	def set(jid, tel)
11		@redis.setex("pending_tel_for-#{jid}", THIRTY_DAYS, tel)
12	end
13
14	def [](jid)
15		@redis.get("pending_tel_for-#{jid}").then do |tel|
16			tel ? HaveTel.new(tel) : ChooseTel.new
17		end
18	end
19
20	class HaveTel
21		def initialize(tel)
22			@tel = tel
23		end
24
25		def choose_tel
26			EMPromise.resolve(@tel)
27		end
28	end
29
30	class ChooseTel
31		def choose_tel
32			Command.finish(
33				"You have not chosen a phone number yet, please return to " \
34				"https://jmp.chat and choose one now.",
35				type: :error
36			)
37		end
38	end
39end