|
438 | 438 | [:screen/wallet.swap-confirmation
|
439 | 439 | :screen/wallet.setup-swap]]]]})))
|
440 | 440 |
|
441 |
| -(defn transaction-approval-required? |
442 |
| - [transactions {:keys [swap-proposal approval-transaction-id]}] |
443 |
| - (let [approval-transaction (when approval-transaction-id |
444 |
| - (get transactions approval-transaction-id)) |
445 |
| - already-approved? (and approval-transaction |
446 |
| - (= (:status approval-transaction) |
447 |
| - :confirmed))] |
448 |
| - (and (:approval-required swap-proposal) |
449 |
| - (not already-approved?)))) |
450 |
| - |
451 | 441 | (rf/reg-event-fx
|
452 | 442 | :wallet.swap/mark-as-pending
|
453 | 443 | (fn [{:keys [db]} [transaction-id]]
|
|
474 | 464 | (-> amount-out
|
475 | 465 | (number/hex->whole receive-token-decimals)
|
476 | 466 | (money/to-fixed receive-token-decimals)))
|
477 |
| - approval-required? (transaction-approval-required? transactions swap)] |
| 467 | + approval-required? (utils/transaction-approval-required? transactions swap)] |
478 | 468 | {:fx [[:dispatch
|
479 | 469 | [:centralized-metrics/track
|
480 | 470 | (if approval-required?
|
|
502 | 492 | [:dispatch [:wallet.swap/mark-as-pending (-> sent-transactions first :hash)]])
|
503 | 493 | (when-not approval-required?
|
504 | 494 | ;; just end the whole transaction flow if no approval needed
|
505 |
| - [:dispatch [:wallet.swap/end-transaction-flow]]) |
506 |
| - (when-not approval-required? |
507 |
| - [:dispatch-later |
508 |
| - {:ms 500 |
509 |
| - :dispatch [:toasts/upsert |
510 |
| - {:id :swap-transaction-pending |
511 |
| - :icon :i/info |
512 |
| - :type :neutral |
513 |
| - :text (i18n/label :t/swapping-to |
514 |
| - {:pay-amount amount |
515 |
| - :pay-token-symbol token-id-from |
516 |
| - :receive-token-symbol token-id-to |
517 |
| - :receive-amount receive-amount})}]}])]}))) |
| 495 | + [:dispatch [:wallet.swap/end-transaction-flow]])]}))) |
518 | 496 |
|
519 | 497 | (rf/reg-event-fx
|
520 |
| - :wallet.swap/transaction-failure |
521 |
| - (fn [{:keys [db]} [{:keys [details] :as error}]] |
| 498 | + :wallet.swap/track-transaction-execution-failed |
| 499 | + (fn [{:keys [db]} [error]] |
522 | 500 | (let [transactions (get-in db [:wallet :transactions])
|
523 | 501 | {:keys [asset-to-pay
|
524 | 502 | asset-to-receive
|
|
527 | 505 | swap-chain-id (:chain-id network)
|
528 | 506 | token-id-from (:symbol asset-to-pay)
|
529 | 507 | token-id-to (:symbol asset-to-receive)
|
530 |
| - approval-required? (transaction-approval-required? transactions swap)] |
| 508 | + approval-required? (utils/transaction-approval-required? transactions swap)] |
531 | 509 | {:fx [[:centralized-metrics/track
|
532 | 510 | (if approval-required?
|
533 | 511 | :metric/swap-approval-execution-failed
|
|
536 | 514 | :error error
|
537 | 515 | :pay_token token-id-from}
|
538 | 516 | (not approval-required?)
|
539 |
| - (assoc :receive_token token-id-to))] |
540 |
| - [:dispatch [:wallet.swap/end-transaction-flow]] |
541 |
| - [:dispatch |
542 |
| - [:toasts/upsert |
543 |
| - {:id :send-transaction-error |
544 |
| - :type :negative |
545 |
| - :text (or details "An error occured")}]]]}))) |
| 517 | + (assoc :receive_token token-id-to))]]}))) |
546 | 518 |
|
547 | 519 | (rf/reg-event-fx
|
548 | 520 | :wallet.swap/clean-up-transaction-flow
|
549 | 521 | (fn [{:keys [db]}]
|
550 | 522 | (let [transactions (get-in db [:wallet :transactions])
|
551 | 523 | swap (get-in db [:wallet :ui :swap])
|
552 |
| - approval-required? (transaction-approval-required? transactions swap)] |
| 524 | + approval-required? (utils/transaction-approval-required? transactions swap)] |
553 | 525 | {:db (update-in db [:wallet :ui] dissoc :swap)
|
554 | 526 | :fx [[:dispatch
|
555 | 527 | [:dismiss-modal
|
|
583 | 555 | [:dispatch
|
584 | 556 | [:navigate-to-within-stack
|
585 | 557 | [:screen/wallet.swap-select-asset-to-pay :screen/wallet.swap-select-account]]]])})))
|
| 558 | + |
| 559 | +(rf/reg-event-fx |
| 560 | + :wallet.swap/show-transaction-notification |
| 561 | + (fn [{:keys [db]} [{:keys [status send-details]}]] |
| 562 | + (let [transactions (get-in db [:wallet :transactions]) |
| 563 | + {:keys [asset-to-pay asset-to-receive] :as swap} (get-in db [:wallet :ui :swap])] |
| 564 | + ;; show toast when approval is not required |
| 565 | + (when (and (= status :sent) |
| 566 | + (not (utils/transaction-approval-required? transactions swap))) |
| 567 | + {:fx [[:dispatch-later |
| 568 | + {:ms 500 |
| 569 | + :dispatch [:toasts/upsert |
| 570 | + {:id :swap-transaction-pending |
| 571 | + :icon :i/info |
| 572 | + :type :neutral |
| 573 | + :text (i18n/label :t/swapping-to |
| 574 | + {:pay-amount (-> send-details |
| 575 | + :from-amount |
| 576 | + (money/token->unit |
| 577 | + (:decimals asset-to-pay))) |
| 578 | + :receive-amount (-> send-details |
| 579 | + :to-amount |
| 580 | + (money/token->unit |
| 581 | + (:decimals asset-to-receive))) |
| 582 | + :pay-token-symbol (:from-asset send-details) |
| 583 | + :receive-token-symbol (:to-asset send-details)})}]}]]})))) |
0 commit comments