diff --git a/src/status_im/acquisition/advertiser.cljs b/src/status_im/acquisition/advertiser.cljs index 4edc681b37..a2c5bd505e 100644 --- a/src/status_im/acquisition/advertiser.cljs +++ b/src/status_im/acquisition/advertiser.cljs @@ -23,7 +23,7 @@ (if (= decision :accept) (gateway/handle-acquisition {:message payload :method "PATCH" - :url (gateway/get-url :clicks referral) + :url [:clicks referral] :on-success [::claim/success-starter-pack-claim]}) {::persistence/set-referrer-state :declined}) (popover/hide-popover)))) diff --git a/src/status_im/acquisition/chat.cljs b/src/status_im/acquisition/chat.cljs index 7ca75b6774..869e34481d 100644 --- a/src/status_im/acquisition/chat.cljs +++ b/src/status_im/acquisition/chat.cljs @@ -32,5 +32,5 @@ {:db (update db :acquisition dissoc :chat-referrer)} (gateway/handle-acquisition {:message payload :method "PATCH" - :url (gateway/get-url :clicks referral) + :url [:clicks referral] :on-success [::claim/success-starter-pack-claim]})))) diff --git a/src/status_im/acquisition/claim.cljs b/src/status_im/acquisition/claim.cljs index 6b21a3c52c..f5910d1e91 100644 --- a/src/status_im/acquisition/claim.cljs +++ b/src/status_im/acquisition/claim.cljs @@ -15,19 +15,19 @@ (fx/defn add-tx-watcher {:events [::add-tx-watcher]} [cofx tx] - (transaction/watch-transaction cofx - tx - {:trigger-fn (constantly true) - :on-trigger - (fn [] - {:dispatch [::success-tx-received]})})) + (fx/merge cofx + {::persistence/set-watch-tx tx} + (transaction/watch-transaction tx + {:trigger-fn (constantly true) + :on-trigger + (fn [] + {:dispatch [::success-tx-received]})}))) (fx/defn success-starter-pack-claim {:events [::success-starter-pack-claim]} [cofx {:keys [tx]}] (fx/merge cofx - {::persistence/set-watch-tx tx - ::persistence/set-referrer-state (if tx :accepted :claimed)} + {::persistence/set-referrer-state (if tx :accepted :claimed)} (when tx (add-tx-watcher tx)) (notifications/request-permission))) diff --git a/src/status_im/acquisition/core.cljs b/src/status_im/acquisition/core.cljs index 650cadf6fe..be04e31136 100644 --- a/src/status_im/acquisition/core.cljs +++ b/src/status_im/acquisition/core.cljs @@ -24,7 +24,7 @@ {:message message :on-success on-success :method "POST" - :url (gateway/get-url :registrations nil)})) + :url [:registrations nil]})) (re-frame/reg-fx ::get-referrer diff --git a/src/status_im/acquisition/dapp.cljs b/src/status_im/acquisition/dapp.cljs index 2d3e75b5ce..69a1bca227 100644 --- a/src/status_im/acquisition/dapp.cljs +++ b/src/status_im/acquisition/dapp.cljs @@ -34,7 +34,7 @@ (if (= decision :accept) (gateway/handle-acquisition {:message payload :method "PATCH" - :url (gateway/get-url :clicks referral) + :url [:clicks referral] :on-success [::success-claim]}) {::persistence/set-referrer-state :declined}) (popover/hide-popover)))) diff --git a/src/status_im/acquisition/gateway.cljs b/src/status_im/acquisition/gateway.cljs index d8ee8a57f7..e80c64abda 100644 --- a/src/status_im/acquisition/gateway.cljs +++ b/src/status_im/acquisition/gateway.cljs @@ -1,25 +1,29 @@ (ns status-im.acquisition.gateway (:require [re-frame.core :as re-frame] [status-im.utils.fx :as fx] + [status-im.ethereum.core :as ethereum] [status-im.i18n :as i18n] [status-im.ethereum.json-rpc :as json-rpc] [status-im.waku.core :as waku] [status-im.utils.types :as types])) -(def acquisition-gateway "https://test-referral.status.im") +(def acquisition-gateway {:mainnet "https://get.status.im" + :rinkeby "https://test-referral.status.im"}) -(def acquisition-routes {:clicks (str acquisition-gateway "/clicks") - :registrations (str acquisition-gateway "/registrations")}) +(defn acquisition-routes [network type] + (get {:clicks (str (get acquisition-gateway network) "/clicks") + :registrations (str (get acquisition-gateway network) "/registrations")} + type)) (def network-statuses {:initiated 1 :in-flight 2 :error 3 :success 4}) -(defn get-url [type referral] +(defn get-url [network [type referral]] (if (= type :clicks) - (str (get acquisition-routes :clicks) "/" referral) - (get acquisition-routes :registrations))) + (str (acquisition-routes network :clicks) "/" referral) + (acquisition-routes network :registrations))) (fx/defn handle-error {:events [::on-error]} @@ -32,7 +36,8 @@ (fx/defn handle-acquisition {:events [::handle-acquisition]} [{:keys [db] :as cofx} {:keys [message on-success method url]}] - (let [msg (types/clj->json message)] + (let [msg (types/clj->json message) + network (ethereum/chain-keyword db)] {:db (assoc-in db [:acquisition :network-status] (get network-statuses :initiated)) ::json-rpc/call [{:method (json-rpc/call-ext-method (waku/enabled? cofx) "signMessageWithChatKey") @@ -42,7 +47,7 @@ {:chat-key (get-in db [:multiaccount :public-key]) :message msg :method method - :url url + :url (get-url network url) :on-success on-success} %])}]})) (fx/defn call-acquisition-gateway {:events [::call-acquisition-gateway]} @@ -67,15 +72,16 @@ (re-frame/dispatch [::on-error (:error (types/json->clj (get error :response-body)))]))}})) (fx/defn get-referrer - [cofx referrer on-success handled-error handle-error] - {:http-get {:url (get-url :clicks referrer) - :on-success (fn [response] - (re-frame/dispatch (on-success (types/json->clj response)))) - :on-error (fn [response] - (let [error (types/json->clj response)] - (if (handled-error error) - (handle-error error) - (re-frame/dispatch [::on-error (:error error)]))))}}) + [{:keys [db]} referrer on-success handled-error handle-error] + (let [network (ethereum/chain-keyword db)] + {:http-get {:url (get-url network [:clicks referrer]) + :on-success (fn [response] + (re-frame/dispatch (on-success (types/json->clj response)))) + :on-error (fn [response] + (let [error (types/json->clj response)] + (if (handled-error error) + (handle-error error) + (re-frame/dispatch [::on-error (:error error)]))))}})) (re-frame/reg-sub ::network-status (fn [db] diff --git a/src/status_im/acquisition/persistance.cljs b/src/status_im/acquisition/persistance.cljs index 56ef74174d..e08a14d0dc 100644 --- a/src/status_im/acquisition/persistance.cljs +++ b/src/status_im/acquisition/persistance.cljs @@ -44,10 +44,11 @@ (re-frame/reg-fx ::set-watch-tx (fn [tx] - (-> ^js async-storage - (.setItem tx-store-key tx) - (.catch (fn [error] - (log/error "[async-storage]" error)))))) + (when tx + (-> ^js async-storage + (.setItem tx-store-key tx) + (.catch (fn [error] + (log/error "[async-storage]" error))))))) (re-frame/reg-fx ::chat-initalized!