Pending stickers status maintains after app restart

Signed-off-by: Volodymyr Kozieiev <vkjr.sp@gmail.com>
This commit is contained in:
Volodymyr Kozieiev 2020-02-13 14:33:52 +02:00
parent 553f2c0e01
commit e6c859dd2d
No known key found for this signature in database
GPG Key ID: 82B04968DF4C0535
5 changed files with 35 additions and 20 deletions

View File

@ -39,6 +39,7 @@
(update :wallet/visible-tokens rpc->visible-tokens) (update :wallet/visible-tokens rpc->visible-tokens)
(update :pinned-mailservers rpc->pinned-mailservers) (update :pinned-mailservers rpc->pinned-mailservers)
(update :stickers/packs-installed rpc->stickers-packs) (update :stickers/packs-installed rpc->stickers-packs)
(update :stickers/packs-pending set)
(update :custom-bootnodes rpc->custom-bootnodes) (update :custom-bootnodes rpc->custom-bootnodes)
(update :custom-bootnodes-enabled? rpc->custom-bootnodes) (update :custom-bootnodes-enabled? rpc->custom-bootnodes)
(update :currency keyword))) (update :currency keyword)))

View File

@ -1369,7 +1369,7 @@
(stickers/pending-pack cofx id))) (stickers/pending-pack cofx id)))
(handlers/register-handler-fx (handlers/register-handler-fx
:stickers/pending-timout :stickers/pending-timeout
(fn [cofx _] (fn [cofx _]
(stickers/pending-timeout cofx))) (stickers/pending-timeout cofx)))

View File

@ -21,9 +21,9 @@
(re-frame/dispatch [:stickers/load-pack url id price])))) (re-frame/dispatch [:stickers/load-pack url id price]))))
(re-frame/reg-fx (re-frame/reg-fx
:stickers/set-pending-timout-fx :stickers/set-pending-timeout-fx
(fn [] (fn []
(utils/set-timeout #(re-frame/dispatch [:stickers/pending-timout]) (utils/set-timeout #(re-frame/dispatch [:stickers/pending-timeout])
10000))) 10000)))
(defn eth-call-pack-data (defn eth-call-pack-data
@ -86,11 +86,15 @@
(re-frame/dispatch [:stickers/pack-owned pack-id]))}))})))}))) (re-frame/dispatch [:stickers/pack-owned pack-id]))}))})))})))
(fx/defn init-stickers-packs (fx/defn init-stickers-packs
[{:keys [db]}] [{:keys [db] :as cofx}]
(let [sticker-packs (get-in db [:multiaccount :stickers/packs-installed])] (let [sticker-packs (get-in db [:multiaccount :stickers/packs-installed])
{:db (assoc db pending-packs (get-in db [:multiaccount :stickers/packs-pending] #{})]
:stickers/packs-installed sticker-packs (cond-> {:db (assoc db
:stickers/packs sticker-packs)})) :stickers/packs-installed sticker-packs
:stickers/packs sticker-packs
:stickers/packs-pending pending-packs)}
(not-empty pending-packs)
(assoc :stickers/set-pending-timeout-fx nil))))
(fx/defn install-stickers-pack (fx/defn install-stickers-pack
[{{:keys [multiaccount] :as db} :db :as cofx} id] [{{:keys [multiaccount] :as db} :db :as cofx} id]
@ -160,26 +164,36 @@
:on-result [:stickers/pending-pack pack-id]}))) :on-result [:stickers/pending-pack pack-id]})))
(fx/defn pending-pack (fx/defn pending-pack
[{:keys [db] :as cofx} id] [{{:keys [multiaccount] :as db} :db :as cofx} id]
(let [contract (contracts/get-address db :status/sticker-pack) (let [contract (contracts/get-address db :status/sticker-pack)
address (ethereum/default-address db)] address (ethereum/default-address db)
pending (get multiaccount :stickers/packs-pending #{})]
(when contract (when contract
(fx/merge cofx (fx/merge cofx
{:db (update db :stickers/packs-pending conj id) {:db (update db :stickers/packs-pending conj id)
:stickers/owned-packs-fx [contract address]} :stickers/owned-packs-fx [contract address]}
(multiaccounts.update/multiaccount-update
:stickers/packs-pending
(conj pending id)
{})
#(when (zero? (count (:stickers/packs-pending db))) #(when (zero? (count (:stickers/packs-pending db)))
{:stickers/set-pending-timout-fx nil}))))) {:stickers/set-pending-timeout-fx nil})))))
(fx/defn pending-timeout (fx/defn pending-timeout
[{{:stickers/keys [packs-pending packs-owned] :as db} :db}] [{{:stickers/keys [packs-pending packs-owned] :as db} :db :as cofx}]
(let [packs-diff (clojure.set/difference packs-pending packs-owned) (let [packs-diff (clojure.set/difference packs-pending packs-owned)
contract (contracts/get-address db :status/sticker-pack) contract (contracts/get-address db :status/sticker-pack)
address (ethereum/default-address db)] address (ethereum/default-address db)]
(when contract (when contract
(merge {:db (assoc db :stickers/packs-pending packs-diff)} (fx/merge cofx
(when-not (zero? (count packs-diff)) (merge {:db (assoc db :stickers/packs-pending packs-diff)}
{:stickers/owned-packs-fx [contract address] (when-not (zero? (count packs-diff))
:stickers/set-pending-timout-fx nil}))))) {:stickers/owned-packs-fx [contract address]
:stickers/set-pending-timeout-fx nil}))
(multiaccounts.update/multiaccount-update
:stickers/packs-pending
packs-diff
{})))))
(fx/defn pack-owned [{db :db} id] (fx/defn pack-owned [{db :db} id]
{:db (update db :stickers/packs-owned conj id)}) {:db (update db :stickers/packs-owned conj id)})

View File

@ -51,7 +51,7 @@
:dimensions/window (dimensions/window) :dimensions/window (dimensions/window)
:registry {} :registry {}
:stickers/packs-owned #{} :stickers/packs-owned #{}
:stickers/packs-pending #{} :stickers/packs-pending #{}
:hardwallet {:nfc-enabled? false :hardwallet {:nfc-enabled? false
:pin {:original [] :pin {:original []
:confirmation [] :confirmation []

View File

@ -2,7 +2,7 @@
"_comment": "DO NOT EDIT THIS FILE BY HAND. USE 'scripts/update-status-go.sh <tag>' instead", "_comment": "DO NOT EDIT THIS FILE BY HAND. USE 'scripts/update-status-go.sh <tag>' instead",
"owner": "status-im", "owner": "status-im",
"repo": "status-go", "repo": "status-go",
"version": "v0.43.1", "version": "v0.44.2",
"commit-sha1": "0b6ad662b519ce0bc0f0c1c65f8c5eb77ddb2904", "commit-sha1": "fdcefb8dc298b334be601ad7e330f14bdb066fc5",
"src-sha256": "1rn11ig98pb6y5gp5w9vzh41grsampd8bz09zdqz2rzfdic1b66i" "src-sha256": "19shkxqqwdz218d436fkbfcp8n257r55mnbr467kdm2ac973pnv1"
} }