|
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