-
Notifications
You must be signed in to change notification settings - Fork 4.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
Use the blog prefix to store preferences by site in localstorage #47768
Use the blog prefix to store preferences by site in localstorage #47768
Conversation
Size Change: +11 B (0%) Total Size: 1.31 MB
ℹ️ View Unchanged
|
Flaky tests detected in efee230. 🔍 Workflow run URL: https://github.com/WordPress/gutenberg/actions/runs/4100540688
|
I need to think about this some more, as there are a few different permutations for multisites, one of the main ones being whether the site uses subdomains or subdirectors (which affects how localstorage works). |
What? Why?
The preferences persistence system primarily stores data in user meta (within the WordPress database), but also saves to localstorage as a failsafe (in case the HTTP request to save to user meta doesn't complete).
When saving to user meta, data is stored by blog prefix and user id, so that any retrieved preferences are specific to the individual blog (on a multisite) and user.
There's a bug in that the localstorage system only uses the user id, so the same user with multiple sites on a multisite installation that uses subdirectories might end up incorrectly overwriting their preferences with those from another site.
Hopefully the impact of this is fairly small, as the user meta data is the preferred storage medium and instances of data needing to be retrieved from localstorage shouldn't be common.
How?
Use the
blog_prefix
as part of the localstorage key.Testing Instructions
This is a tricky one to test, as it requires a multisite installation.
It's also hard to write e2e tests (I don't think we have multisite e2e tests), or php unit tests (as it involves a client side script). Any suggestions welcome.
On one site:
On another site:
4. Set yourself back to being online
5. Load the post editor
6. The preference you changed should be unaffected by the change in step 3.
Screenshots or screencast