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