diff --git a/config-schema.dhall b/config-schema.dhall index 82fe73c61c5561ceea3c95453ea80b212858edee..1b3aa07a4f6dcb5f95d733e9894c59d28f6ce9f1 100644 --- a/config-schema.dhall +++ b/config-schema.dhall @@ -27,6 +27,7 @@ , notify_from : Text , ogm_path : Text , ogm_web_root : Text +, onboarding_domain : Text , oxr_app_id : Text , payable : Text , plans : diff --git a/config.dhall.sample b/config.dhall.sample index 52686a7fbe41dbc8c173715de26d35fba85621e2..839f07a5f25110ed86cf1de8e9444fbd6f54cd69 100644 --- a/config.dhall.sample +++ b/config.dhall.sample @@ -82,6 +82,7 @@ in keep_area_codes = ["555"], keep_area_codes_in = { account = "", site_id = "", sip_peer_id = "" }, snikket_hosting_api = "", + onboarding_domain = "", rev_ai_token = "", upstream_domain = "example.net", approved_domains = toMap { `example.com` = Some "customer_id" }, diff --git a/forms/alt_top_up/interac.rb b/forms/alt_top_up/interac.rb index 18fb7666b74434d7388f807ece2715ccc8761cf3..9b7c7063893f0808b0f24c32ab821d44d08674da 100644 --- a/forms/alt_top_up/interac.rb +++ b/forms/alt_top_up/interac.rb @@ -2,6 +2,6 @@ field( var: "interac_email", type: "fixed", label: "Interac e-Transfer Address", - description: "Please include your Jabber ID in the note", + description: "Please include your #{@in_note || 'Jabber ID'} in the note", value: CONFIG[:interac] ) diff --git a/forms/alt_top_up/mailing_address.rb b/forms/alt_top_up/mailing_address.rb index 1feb7e6767c9aa64426bf8ee67d7b11073b6d3f2..c2f596d9619acd2dd9e638436a77e082a06dbdc9 100644 --- a/forms/alt_top_up/mailing_address.rb +++ b/forms/alt_top_up/mailing_address.rb @@ -4,6 +4,6 @@ field( label: "Mailing Address", description: "Make payable to #{CONFIG[:payable]} and include your " \ - "Jabber ID in the mailing somewhere.", + "#{@in_note || 'Jabber ID'} in the mailing somewhere.", value: CONFIG[:adr] ) diff --git a/forms/registration/btc.rb b/forms/registration/btc.rb new file mode 100644 index 0000000000000000000000000000000000000000..9451e7681766b01b0f09266c326ecaa6d3fb1706 --- /dev/null +++ b/forms/registration/btc.rb @@ -0,0 +1,19 @@ +result! +title "Activate using Bitcoin" + +field( + label: "Minimum initial Bitcoin deposit for activation", + var: "amount", + value: "%.6f" % @amount +) + +field( + label: "Bitcoin address", + var: "btc_addresses", + value: @addr +) + +instructions( + "You will received a notification when your payment is complete." \ + "#{@final_message}" +) diff --git a/forms/registration/mail.rb b/forms/registration/mail.rb index eef0dfd28ea09a3d43ba8dff616bf117ef1dde30..f801b0fd76f8622f11759dfbcab596ab1655d695 100644 --- a/forms/registration/mail.rb +++ b/forms/registration/mail.rb @@ -9,5 +9,13 @@ instructions( "#{@final_message}" ) +if @customer_id + field( + label: "Customer ID", + var: "customer_id", + value: @customer_id + ) +end + render "alt_top_up/mailing_address" render "alt_top_up/interac" if @currency == :CAD diff --git a/lib/registration.rb b/lib/registration.rb index c50b806255d938128849854a76999c237159f156..f4afc671130e6a3ac3bbc6a473584c7505405bf1 100644 --- a/lib/registration.rb +++ b/lib/registration.rb @@ -188,14 +188,15 @@ class Registration REDIS.setex("pending_tel_for-#{@customer.jid}", THIRTY_DAYS, tel) end - def note_text(rate, addr) + def form(rate, addr) amount = CONFIG[:activation_amount] / rate - <<~NOTE - Activate your account by sending at least #{'%.6f' % amount} BTC to - #{addr} - You will receive a notification when your payment is complete. - NOTE + FormTemplate.render( + "registration/btc", + amount: amount, + addr: addr, + final_message: @final_message + ) end def write @@ -203,8 +204,7 @@ class Registration Command.reply { |reply| reply.allowed_actions = [:prev] reply.status = :canceled - reply.note_type = :info - reply.note_text = note_text(rate, addr) + @final_message.to_s + reply.command << form(rate, addr) }.then(&method(:handle_possible_prev)) end end @@ -418,10 +418,21 @@ class Registration FormTemplate.render( "registration/mail", currency: @customer.currency, - final_message: @final_message + final_message: @final_message, + **onboarding_extras ) end + def onboarding_extras + jid = ProxiedJID.new(@customer.jid).unproxied + return {} unless jid.domain == CONFIG[:onboarding_domain] + + { + customer_id: @customer.customer_id, + in_note: "Customer ID" + } + end + def write Command.reply { |reply| reply.allowed_actions = [:prev] diff --git a/test/test_registration.rb b/test/test_registration.rb index e04ce53b6847d8c98cbddfebfa7fdd17e6ad3443..fca1b8d5ec2b81c2b0a3e29093c40c17574a3eff 100644 --- a/test/test_registration.rb +++ b/test/test_registration.rb @@ -340,20 +340,14 @@ class RegistrationTest < Minitest::Test EMPromise.resolve([]), ["jmp_customer_btc_addresses-test"] ) - reply_text = <<~NOTE - Activate your account by sending at least 1.000000 BTC to - testaddr - - You will receive a notification when your payment is complete. - NOTE blather = Minitest::Mock.new Command::COMMAND_MANAGER.expect( :write, EMPromise.reject(SessionManager::Timeout.new), [Matching.new do |reply| assert_equal :canceled, reply.status - assert_equal :info, reply.note_type - assert_equal reply_text, reply.note.content + assert_equal "1.000000", reply.form.field("amount").value + assert_equal "testaddr", reply.form.field("btc_addresses").value true end] )