diff --git a/pkg/grid/src/nav/preferences/InterfacePrefs.tsx b/pkg/grid/src/nav/preferences/InterfacePrefs.tsx
index 7287c3ebb6..c86592a6e6 100644
--- a/pkg/grid/src/nav/preferences/InterfacePrefs.tsx
+++ b/pkg/grid/src/nav/preferences/InterfacePrefs.tsx
@@ -23,14 +23,6 @@ export function InterfacePrefs() {
.putEntry('browserSettings', 'settings', JSON.stringify(newSettings));
}
};
- const setBrowserNotifications = (setting: boolean) => {
- const newSettings = [{ browserId, browserNotifications: setting, protocolHandling }];
- if (!settings.includes(newSettings)) {
- useSettingsState
- .getState()
- .putEntry('browserSettings', 'settings', JSON.stringify(newSettings));
- }
- };
const toggleProtoHandling = async () => {
if (!protocolHandling && window?.navigator?.registerProtocolHandler) {
@@ -54,15 +46,6 @@ export function InterfacePrefs() {
}
};
- const toggleNotifications = async () => {
- if (!browserNotifications) {
- Notification.requestPermission();
- setBrowserNotifications(true);
- } else {
- setBrowserNotifications(false);
- }
- };
-
return (
<>
Interface Settings
@@ -84,21 +67,6 @@ export function InterfacePrefs() {
)}
-
-
- Show desktop notifications in this browser.
- {!secure && (
- <>
- , requires HTTPS
- >
- )}
-
-
>
);
diff --git a/pkg/grid/src/nav/preferences/NotificationPrefs.tsx b/pkg/grid/src/nav/preferences/NotificationPrefs.tsx
index 8d70dfb139..2ae8d983ff 100644
--- a/pkg/grid/src/nav/preferences/NotificationPrefs.tsx
+++ b/pkg/grid/src/nav/preferences/NotificationPrefs.tsx
@@ -3,14 +3,13 @@ import React from 'react';
import { Setting } from '../../components/Setting';
import { pokeOptimisticallyN } from '../../state/base';
import { HarkState, reduceGraph, useHarkStore } from '../../state/hark';
-import { useSettingsState, SettingsState } from '../../state/settings';
-
-const selDnd = (s: SettingsState) => s.display.doNotDisturb;
-async function toggleDnd() {
- const state = useSettingsState.getState();
- const curr = selDnd(state);
- await state.putEntry('display', 'doNotDisturb', !curr);
-}
+import { useBrowserId } from '../../state/local';
+import {
+ useSettingsState,
+ useBrowserNotifications,
+ useBrowserSettings,
+ useProtocolHandling
+} from '../../state/settings';
const selMentions = (s: HarkState) => s.notificationsGraphConfig.mentions;
async function toggleMentions() {
@@ -19,27 +18,43 @@ async function toggleMentions() {
}
export const NotificationPrefs = () => {
- const doNotDisturb = useSettingsState(selDnd);
const mentions = useHarkStore(selMentions);
+ const settings = useBrowserSettings();
+ const browserId = useBrowserId();
+ const browserNotifications = useBrowserNotifications(browserId);
+ const protocolHandling = useProtocolHandling(browserId);
const secure = window.location.protocol === 'https:' || window.location.hostname === 'localhost';
+ const setBrowserNotifications = (setting: boolean) => {
+ const newSettings = [{ browserId, browserNotifications: setting, protocolHandling }];
+ if (!settings.includes(newSettings)) {
+ useSettingsState
+ .getState()
+ .putEntry('browserSettings', 'settings', JSON.stringify(newSettings));
+ }
+ };
+
+ const toggleNotifications = async () => {
+ if (!browserNotifications) {
+ Notification.requestPermission();
+ setBrowserNotifications(true);
+ } else {
+ setBrowserNotifications(false);
+ }
+ };
+
return (
<>
Notifications
- Block visual desktop notifications whenever Urbit software produces a notification
- badge.
-
-
- Turning this "off" will prompt your browser to ask if you'd like to
- enable notifications
+ Show desktop notifications in this browser.
{!secure && (
<>
, requires HTTPS