Session Flash Messages
π¨βπΌ Great work. Now we've got a pretty good pattern for handling toast
notifications.
π§ββοΈ I found a bug! If you delete a second note, the toast notification doesn't
show up. This is because we're not setting an
id
for the toast
in which
means the useEffect
in ShowToast
in won't
re-run (because all the other values are the same... dependency arrays π©).Because this isn't necessary for your learning of managing sessions, you can
safely leave this as-is and I'll fix it, or you can fix it before moving on if
you'd like. You could use the
noteId
as the id
for the toast, or you could
generate one with @paralleldrive/cuid2
which is already installed (that's what
I do).In any case, I'm going to refactor the code a bit to make utilities out of this
we can use in other areas of the app in the future. In addition, I'm going to
just destroy the toast cookie altogether after we've read its value to save on
some bytes per request. If you're interested,
you can review my changes.
The APIs you'll be able to use in the future are:
throw await redirectWithToast(
'/somewhere',
{
title: 'Toast Title',
description: 'This is a toast description',
type: 'success',
},
{
status: 201,
// other response init stuff you wanna do
},
)
// or, a lower-level API
const headers = createToastHeaders({
title: 'Toast Title',
description: 'This is a toast description',
})
return json({ status: 'success' }, { headers })