-
Notifications
You must be signed in to change notification settings - Fork 1.9k
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
Read storage on window.onstorage #7137
Conversation
|
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.
NICE
} | ||
if (next) { | ||
_state = next | ||
_emitter.emit('update') |
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.
Do we need this emit? Looks like we might be able to remove the update
event now, since we always emit the more modern event with the key that changed.
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.
I think we do. If the BroadcastChannel
thing arrives too early, it will get ignored. And then by the time we get the storage
event, we don't know what changed exactly, so we have to deopt. We could try to be smarter about this but I'd prefer to keep it simple and then revisit the assumptions.
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.
In other words we don't know the key
if we use the storage event. So this part needs rethinking
* main: (58 commits) Fix tests Layout tweaks (bluesky-social#7150) Trending (Beta) (bluesky-social#7144) Fix emoji picker position (bluesky-social#7146) Tweak Follow dialog Search placeholder (bluesky-social#7147) New progress guide - 10 follows (bluesky-social#7128) Pipe statsig events to logger (bluesky-social#7141) Fix notifications borders (bluesky-social#7140) Refetch empty feed on focus (bluesky-social#7139) Read storage on window.onstorage (bluesky-social#7137) [ELI5] Tweak wording on the signup screen (bluesky-social#7136) alf error screen (bluesky-social#7135) add safe area view to profile error screen (bluesky-social#7134) Adjust gates (bluesky-social#7132) disable automaticallAdjustsScrollIndicatorInsets (bluesky-social#7131) Bump more native deps (bluesky-social#7129) Update more Expo packages (bluesky-social#7127) feat: widen recent search profile link for mobile devices (bluesky-social#7119) Fix video uploads on native (bluesky-social#7126) Fix post time localization on Android (bluesky-social#6742) ... # Conflicts: # src/view/com/profile/ProfileSubpageHeader.tsx # src/view/screens/ProfileList.tsx
This fixes an issue @estrattonbailey discovered.
BroadcastChannel
is arriving sooner thanlocalStorage
flushes the write to disk so we'd often read the storage data prematurely. This results in tabs failing to sync. This is most noticeable if you open two Settings screen in different windows and try to toggle some settings.The fix I'm suggesting here is to rely on the window
storage
which fires when another document (i.e. another tab/window) has changed the storage. In either case we would bail if the contents of the storage is the same as before so it doesn't hurt to add an extra check like this.Test Plan
Before
before_chrome.mov
before_ff.mov
before_safari.mov
After
after_chrome.mov
after_ff.mov
after_safari.mov