ciscoheat / sveltekit-flash-message

Send temporary data after redirect, usually from endpoints. Works with both SSR and client.
https://www.npmjs.com/package/sveltekit-flash-message
MIT License
263 stars 6 forks source link

Idea: enhance sveltekit redirect #4

Closed garlandcrow closed 1 year ago

garlandcrow commented 1 year ago

Was looking around for prior art on doing flash messages in sveltekit and found this project. I was thinking it might be good to stick to the sveltekit style throw redirect(...) and maybe (not sure your exact implementation so maybe not possible) you could wrap the sveltekit redirect and add your functionality there so then i can do something like this.

import { redirect }  "sveltekit-flash-message/server"`

throw redirect(302, "/dashboard", {type: "success", message: "It worked"})
ciscoheat commented 1 year ago

Thank you, that's an excellent idea, will implement that for the next release. :)

ciscoheat commented 1 year ago

Version 0.8.0 is released now, doing exactly this. It simplified the API quite a bit, so thank you again! Let me know if you have more suggestions. I would like the following signatures:

// For compatibility with sveltekit/redirect
redirect(303, '/', { message }, event)

// Redirecting to event.url with 303 status.
redirect({ message }, event)

// Redirecting to '/' with 303 status
redirect('/' , { message }, event)

But all the parameter combinations are complicated to combine correctly, so I settled with redirect303 for now. Any ideas?

ciscoheat commented 1 year ago

I managed to fix it in version 0.9.1, just released.

garlandcrow commented 1 year ago

Just saw your updates, nice work! Just added to my project today so will feedback/make some PRs if I notice anything :)

garlandcrow commented 1 year ago

I played with it today and using it now. I like it, does just what I needed. I ended up using $page.data.flash on the page instead of importing and wrapping page with new Flash(page) and using like a store. Maybe its cause I don't have a use case like that, and I just use flash as a simple message forwarder. Thanks!

ciscoheat commented 1 year ago

Great to hear. :) Just for curiosity, does your $page.data.flash usage mean that you don't have any client-side functionality, navigation or anything that may update/modify the flash message on the client?