[Persisted] Make broadcast subscriptions granular by key (#4874)
* Add fast path for guaranteed noop updates * Change persisted.onUpdate() API to take a key * Implement granular broadcast listeners
This commit is contained in:
parent
966f6c511f
commit
686d5ebb53
17 changed files with 95 additions and 42 deletions
|
@ -26,9 +26,12 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
|
|||
)
|
||||
|
||||
React.useEffect(() => {
|
||||
return persisted.onUpdate(() => {
|
||||
setState(persisted.get('requireAltTextEnabled'))
|
||||
})
|
||||
return persisted.onUpdate(
|
||||
'requireAltTextEnabled',
|
||||
nextRequireAltTextEnabled => {
|
||||
setState(nextRequireAltTextEnabled)
|
||||
},
|
||||
)
|
||||
}, [setStateWrapped])
|
||||
|
||||
return (
|
||||
|
|
|
@ -24,8 +24,8 @@ export function Provider({children}: {children: React.ReactNode}) {
|
|||
)
|
||||
|
||||
React.useEffect(() => {
|
||||
return persisted.onUpdate(() => {
|
||||
setState(Boolean(persisted.get('disableAutoplay')))
|
||||
return persisted.onUpdate('disableAutoplay', nextDisableAutoplay => {
|
||||
setState(Boolean(nextDisableAutoplay))
|
||||
})
|
||||
}, [setStateWrapped])
|
||||
|
||||
|
|
|
@ -24,8 +24,8 @@ export function Provider({children}: {children: React.ReactNode}) {
|
|||
)
|
||||
|
||||
React.useEffect(() => {
|
||||
return persisted.onUpdate(() => {
|
||||
setState(Boolean(persisted.get('disableHaptics')))
|
||||
return persisted.onUpdate('disableHaptics', nextDisableHaptics => {
|
||||
setState(Boolean(nextDisableHaptics))
|
||||
})
|
||||
}, [setStateWrapped])
|
||||
|
||||
|
|
|
@ -35,8 +35,8 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
|
|||
)
|
||||
|
||||
React.useEffect(() => {
|
||||
return persisted.onUpdate(() => {
|
||||
setState(persisted.get('externalEmbeds'))
|
||||
return persisted.onUpdate('externalEmbeds', nextExternalEmbeds => {
|
||||
setState(nextExternalEmbeds)
|
||||
})
|
||||
}, [setStateWrapped])
|
||||
|
||||
|
|
|
@ -44,8 +44,8 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
|
|||
)
|
||||
|
||||
React.useEffect(() => {
|
||||
return persisted.onUpdate(() => {
|
||||
setState(persisted.get('hiddenPosts'))
|
||||
return persisted.onUpdate('hiddenPosts', nextHiddenPosts => {
|
||||
setState(nextHiddenPosts)
|
||||
})
|
||||
}, [setStateWrapped])
|
||||
|
||||
|
|
|
@ -34,8 +34,8 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
|
|||
)
|
||||
|
||||
React.useEffect(() => {
|
||||
return persisted.onUpdate(() => {
|
||||
setState(persisted.get('useInAppBrowser'))
|
||||
return persisted.onUpdate('useInAppBrowser', nextUseInAppBrowser => {
|
||||
setState(nextUseInAppBrowser)
|
||||
})
|
||||
}, [setStateWrapped])
|
||||
|
||||
|
|
|
@ -21,8 +21,8 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
|
|||
)
|
||||
|
||||
React.useEffect(() => {
|
||||
return persisted.onUpdate(() => {
|
||||
setState(persisted.get('kawaii'))
|
||||
return persisted.onUpdate('kawaii', nextKawaii => {
|
||||
setState(nextKawaii)
|
||||
})
|
||||
}, [setStateWrapped])
|
||||
|
||||
|
|
|
@ -43,8 +43,8 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
|
|||
)
|
||||
|
||||
React.useEffect(() => {
|
||||
return persisted.onUpdate(() => {
|
||||
setState(persisted.get('languagePrefs'))
|
||||
return persisted.onUpdate('languagePrefs', nextLanguagePrefs => {
|
||||
setState(nextLanguagePrefs)
|
||||
})
|
||||
}, [setStateWrapped])
|
||||
|
||||
|
|
|
@ -26,9 +26,12 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
|
|||
)
|
||||
|
||||
React.useEffect(() => {
|
||||
return persisted.onUpdate(() => {
|
||||
setState(persisted.get('largeAltBadgeEnabled'))
|
||||
})
|
||||
return persisted.onUpdate(
|
||||
'largeAltBadgeEnabled',
|
||||
nextLargeAltBadgeEnabled => {
|
||||
setState(nextLargeAltBadgeEnabled)
|
||||
},
|
||||
)
|
||||
}, [setStateWrapped])
|
||||
|
||||
return (
|
||||
|
|
|
@ -19,9 +19,12 @@ export function Provider({children}: {children: React.ReactNode}) {
|
|||
}
|
||||
|
||||
React.useEffect(() => {
|
||||
return persisted.onUpdate(() => {
|
||||
setState(persisted.get('hasCheckedForStarterPack'))
|
||||
})
|
||||
return persisted.onUpdate(
|
||||
'hasCheckedForStarterPack',
|
||||
nextHasCheckedForStarterPack => {
|
||||
setState(nextHasCheckedForStarterPack)
|
||||
},
|
||||
)
|
||||
}, [])
|
||||
|
||||
return (
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue