fkhadra / react-toastify

React notification made easy 🚀 !
https://fkhadra.github.io/react-toastify/introduction
MIT License
12.3k stars 676 forks source link

bug: Promise success clears when 2nd promise has undefined success #1110

Open hufftheweevil opened 1 month ago

hufftheweevil commented 1 month ago

What is the current behavior?

When calling two promises in a row, if one has a success defined, but the other does not, then the first one closes instantly. Example:

await toast.promise(async () => {}, {
  success: 'Success on 1'
})
await toast.promise(async () => {}, {
  // success: 'Success on 2',
  error: 'Error on 2'
})

If you uncomment the success on the 2nd one, then all works well.


What is the expected behavior?

success shouldn't be required. When absent, it shouldn't affect other toasts.

Note: Adding a toastId does not help.


Which versions of React, and which browser / OS are affected by this issue? Did this work in previous versions of React?

React v18.2.0; not tested in other versions Tested in Chrome and Firefox

BTW, awesome package! Simple and beautiful.

hufftheweevil commented 1 month ago

Doing some more testing, I found that adding a pending to (at least) the 2nd call will yield the expected the results.

But looking through the code, it shouldn't be required. If no pending is given, then no id is set inside handlePromise(), so when it's time to resolve(), it should be creating a fresh new toast and not touch the other. I can't figure out why it's affecting the other.

hufftheweevil commented 1 month ago

Found the issue, PR submitted https://github.com/fkhadra/react-toastify/pull/1112