aboutsummaryrefslogtreecommitdiff
path: root/src/api/settings.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/api/settings.ts')
-rw-r--r--src/api/settings.ts11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/api/settings.ts b/src/api/settings.ts
index b7c143a..2617903 100644
--- a/src/api/settings.ts
+++ b/src/api/settings.ts
@@ -141,14 +141,19 @@ export const Settings = makeProxy(settings);
* Settings hook for React components. Returns a smart settings
* object that automagically triggers a rerender if any properties
* are altered
+ * @param paths An optional list of paths to whitelist for rerenders
* @returns Settings
*/
-export function useSettings() {
+export function useSettings(paths?: string[]) {
const [, forceUpdate] = React.useReducer(() => ({}), {});
+ const onUpdate: SubscriptionCallback = paths
+ ? (value, path) => paths.includes(path) && forceUpdate()
+ : forceUpdate;
+
React.useEffect(() => {
- subscriptions.add(forceUpdate);
- return () => void subscriptions.delete(forceUpdate);
+ subscriptions.add(onUpdate);
+ return () => void subscriptions.delete(onUpdate);
}, []);
return Settings;