-
-
Notifications
You must be signed in to change notification settings - Fork 2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: correctly notify page store subscribers #13205
Conversation
🦋 Changeset detectedLatest commit: 6fdf52f The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
Thanks for the fix @eltigerchino! Do you think it'd make sense to extract |
Probably this line also needs to be updated. @eltigerchino |
if (state !== page.state) { | ||
page.state = state; | ||
} | ||
|
||
update_url(url); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
update_url
already notifies the store so we don't need root.$set({ page });
or it will be notified twice
Hello, any progress on this one? It's unfortunately causing a bit of problem with Superforms, I've been getting many issues lately about it. It would be great if it can be patched soon. :) |
route: page.route, | ||
state: page.state, | ||
status: page.status, | ||
url: page.url |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- is there a reason why we can't just do
page: { ...page }
? - if we can't do that, then this should be moved into a helper function and reused across the change sites to reduce a bit of code size
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, no clue why but spreading with { ...page }
just returns an empty object. Maybe @Rich-Harris knows
Added a helper in 51a5ea7
(#13205)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ah, it's because of the class with $state.raw
on it, producing getters which are not spreadable
preview: https://svelte-dev-git-preview-kit-13205-svelte.vercel.app/ this is an automated message |
@eltigerchino is it possible to have a release with this merged? |
It's in the next release #13277 |
@eltigerchino yeah noticed that. Is it possible to cut it off already or does it wait for something? |
fixes #13200
This PR ensures page store subscribers are correctly notified by creating a new object whenever we update the page store. I'm not sure why but when the same page object is used, it doesn't notify subscribers.
There was also another bug where a popstate event would cause subscribers to get notified twice because we were calling
root.$set({ page })
in addition tostores.page.notify()
when updating the URL.Please don't delete this checklist! Before submitting the PR, please make sure you do the following:
Tests
pnpm test
and lint the project withpnpm lint
andpnpm check
Changesets
pnpm changeset
and following the prompts. Changesets that add features should beminor
and those that fix bugs should bepatch
. Please prefix changeset messages withfeat:
,fix:
, orchore:
.Edits