1# frozen_string_literal: true
2
3class TelSelections
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