(client.websocket.ping);
- setInterval(
- () => setPing(client.websocket.ping),
- client.options.heartbeat * 1e3,
- );
+ useEffect(() => {
+ const timer = setInterval(
+ () => setPing(client.websocket.ping),
+ client.options.heartbeat * 1e3,
+ );
+
+ return () => clearInterval(timer);
+ }, []);
return (
diff --git a/src/pages/settings/panes/Notifications.tsx b/src/pages/settings/panes/Notifications.tsx
index 6643dd37..6c692c44 100644
--- a/src/pages/settings/panes/Notifications.tsx
+++ b/src/pages/settings/panes/Notifications.tsx
@@ -1,3 +1,5 @@
+import { observer } from "mobx-react-lite";
+
import styles from "./Panes.module.scss";
import { Text } from "preact-i18n";
import { useContext, useEffect, useState } from "preact/hooks";
@@ -11,7 +13,7 @@ import { AppContext } from "../../../context/revoltjs/RevoltClient";
import Checkbox from "../../../components/ui/Checkbox";
-export function Notifications() {
+export const Notifications = observer(() => {
const client = useContext(AppContext);
const { openScreen } = useIntermediate();
const settings = useApplicationState().settings;
@@ -118,4 +120,4 @@ export function Notifications() {
))}
);
-}
+});
diff --git a/yarn.lock b/yarn.lock
index ce022ce1..f29f871a 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2974,6 +2974,11 @@ json-stable-stringify-without-jsonify@^1.0.1:
resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
+json-stringify-deterministic@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/json-stringify-deterministic/-/json-stringify-deterministic-1.0.2.tgz#fe72b5f49cc39c5f7c5fcb17d2fb06fca092e727"
+ integrity sha512-u6lgTmpDXjVJChV2pOcW7bQOOXrGZAHKzfOfJXQ4ktFrpdotKgaf1crqktYrVOe/Ul0Qrm/CMjWNGS+ErpngCg==
+
json5@^2.1.2:
version "2.2.0"
resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3"