diff --git a/package.json b/package.json index 76fe577d..63865c45 100644 --- a/package.json +++ b/package.json @@ -90,7 +90,7 @@ "@hcaptcha/react-hcaptcha": "^0.3.6", "@insertish/vite-plugin-babel-macros": "^1.0.5", "@preact/preset-vite": "^2.0.0", - "@revoltchat/ui": "1.0.35", + "@revoltchat/ui": "1.0.36", "@rollup/plugin-replace": "^2.4.2", "@styled-icons/boxicons-logos": "^10.38.0", "@styled-icons/boxicons-regular": "^10.38.0", diff --git a/src/pages/settings/panes/Appearance.tsx b/src/pages/settings/panes/Appearance.tsx index 5a7440c3..a907688c 100644 --- a/src/pages/settings/panes/Appearance.tsx +++ b/src/pages/settings/panes/Appearance.tsx @@ -3,8 +3,9 @@ import { observer } from "mobx-react-lite"; import styles from "./Panes.module.scss"; import { Text } from "preact-i18n"; -import CollapsibleSection from "../../../components/common/CollapsibleSection"; +import { Column } from "@revoltchat/ui"; +import CollapsibleSection from "../../../components/common/CollapsibleSection"; import { ThemeBaseSelectorShim, ThemeShopShim, @@ -37,8 +38,10 @@ export const Appearance = observer(() => {

- - + + + +
diff --git a/src/pages/settings/panes/Experiments.tsx b/src/pages/settings/panes/Experiments.tsx index de353f1f..8f36f7bd 100644 --- a/src/pages/settings/panes/Experiments.tsx +++ b/src/pages/settings/panes/Experiments.tsx @@ -3,7 +3,7 @@ import { observer } from "mobx-react-lite"; import styles from "./Panes.module.scss"; import { Text } from "preact-i18n"; -import { Checkbox } from "@revoltchat/ui"; +import { Checkbox, Column } from "@revoltchat/ui"; import { useApplicationState } from "../../../mobx/State"; import { @@ -19,15 +19,19 @@ export const ExperimentsPage = observer(() => {

- {AVAILABLE_EXPERIMENTS.map((key) => ( - experiments.setEnabled(key, enabled)} - description={EXPERIMENTS[key].description} - title={EXPERIMENTS[key].title} - /> - ))} + + {AVAILABLE_EXPERIMENTS.map((key) => ( + + experiments.setEnabled(key, enabled) + } + description={EXPERIMENTS[key].description} + title={EXPERIMENTS[key].title} + /> + ))} + {AVAILABLE_EXPERIMENTS.length === 0 && (
diff --git a/src/pages/settings/panes/Notifications.tsx b/src/pages/settings/panes/Notifications.tsx index 3e987497..b8edac46 100644 --- a/src/pages/settings/panes/Notifications.tsx +++ b/src/pages/settings/panes/Notifications.tsx @@ -4,7 +4,7 @@ import styles from "./Panes.module.scss"; import { Text } from "preact-i18n"; import { useContext, useEffect, useState } from "preact/hooks"; -import { Checkbox } from "@revoltchat/ui"; +import { Checkbox, Column } from "@revoltchat/ui"; import { urlBase64ToUint8Array } from "../../../lib/conversion"; @@ -36,96 +36,103 @@ export const Notifications = observer(() => {

- - } - description={ - - } - onChange={async (desktopEnabled) => { - if (desktopEnabled) { - const permission = - await Notification.requestPermission(); - - if (permission !== "granted") { - return openScreen({ - id: "error", - error: "DeniedNotification", - }); - } + + } + description={ + + } + onChange={async (desktopEnabled) => { + if (desktopEnabled) { + const permission = + await Notification.requestPermission(); - settings.set("notifications:desktop", desktopEnabled); - }} - /> - - } - description={ - - } - onChange={async (pushEnabled) => { - try { - const reg = - await navigator.serviceWorker?.getRegistration(); - if (reg) { - if (pushEnabled) { - const sub = await reg.pushManager.subscribe({ - userVisibleOnly: true, - applicationServerKey: urlBase64ToUint8Array( - client.configuration!.vapid, - ), + if (permission !== "granted") { + return openScreen({ + id: "error", + error: "DeniedNotification", }); - - // tell the server we just subscribed - const json = sub.toJSON(); - if (json.keys) { - client.api.post("/push/subscribe", { - endpoint: sub.endpoint, - ...(json.keys as { - p256dh: string; - auth: string; - }), - }); - setPushEnabled(true); - } - } else { - const sub = - await reg.pushManager.getSubscription(); - sub?.unsubscribe(); - setPushEnabled(false); - - client.api.post("/push/unsubscribe"); } } - } catch (err) { - console.error("Failed to enable push!", err); + + settings.set("notifications:desktop", desktopEnabled); + }} + /> + } - }} - /> + description={ + + } + onChange={async (pushEnabled) => { + try { + const reg = + await navigator.serviceWorker?.getRegistration(); + if (reg) { + if (pushEnabled) { + const sub = await reg.pushManager.subscribe( + { + userVisibleOnly: true, + applicationServerKey: + urlBase64ToUint8Array( + client.configuration!.vapid, + ), + }, + ); + + // tell the server we just subscribed + const json = sub.toJSON(); + if (json.keys) { + client.api.post("/push/subscribe", { + endpoint: sub.endpoint, + ...(json.keys as { + p256dh: string; + auth: string; + }), + }); + setPushEnabled(true); + } + } else { + const sub = + await reg.pushManager.getSubscription(); + sub?.unsubscribe(); + setPushEnabled(false); + + client.api.post("/push/unsubscribe"); + } + } + } catch (err) { + console.error("Failed to enable push!", err); + } + }} + /> +

- {settings.sounds.getState().map(({ id, enabled }) => ( - - } - onChange={(enabled) => - settings.sounds.setEnabled(id, enabled) - } - /> - ))} + + {settings.sounds.getState().map(({ id, enabled }) => ( + + } + onChange={(enabled) => + settings.sounds.setEnabled(id, enabled) + } + /> + ))} +
); }); diff --git a/src/pages/settings/panes/Panes.module.scss b/src/pages/settings/panes/Panes.module.scss index c6551d72..e5faf987 100644 --- a/src/pages/settings/panes/Panes.module.scss +++ b/src/pages/settings/panes/Panes.module.scss @@ -481,6 +481,8 @@ border-radius: var(--border-radius); margin-top: 0; + transition: 0.1s ease background-color; + &:hover { background: var(--secondary-background); } diff --git a/src/pages/settings/panes/Sync.tsx b/src/pages/settings/panes/Sync.tsx index a6d26c6a..c068634f 100644 --- a/src/pages/settings/panes/Sync.tsx +++ b/src/pages/settings/panes/Sync.tsx @@ -3,7 +3,7 @@ import { observer } from "mobx-react-lite"; import styles from "./Panes.module.scss"; import { Text } from "preact-i18n"; -import { Checkbox } from "@revoltchat/ui"; +import { Checkbox, Column } from "@revoltchat/ui"; import { useApplicationState } from "../../../mobx/State"; import { SyncKeys } from "../../../mobx/stores/Sync"; @@ -20,26 +20,28 @@ export const Sync = observer(() => {

- {( - [ - ["appearance", "appearance.title"], - ["theme", "appearance.theme"], - ["locale", "language.title"], - // notifications sync is always-on - ] as [SyncKeys, string][] - ).map(([key, title]) => ( - } - description={ - - } - onChange={() => sync.toggle(key)} - /> - ))} + + {( + [ + ["appearance", "appearance.title"], + ["theme", "appearance.theme"], + ["locale", "language.title"], + // notifications sync is always-on + ] as [SyncKeys, string][] + ).map(([key, title]) => ( + } + description={ + + } + onChange={() => sync.toggle(key)} + /> + ))} + {/*
Last sync at 12:00
*/} diff --git a/yarn.lock b/yarn.lock index 86a9f87c..88208886 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2220,9 +2220,9 @@ __metadata: languageName: node linkType: hard -"@revoltchat/ui@npm:1.0.35": - version: 1.0.35 - resolution: "@revoltchat/ui@npm:1.0.35" +"@revoltchat/ui@npm:1.0.36": + version: 1.0.36 + resolution: "@revoltchat/ui@npm:1.0.36" dependencies: "@styled-icons/boxicons-logos": ^10.38.0 "@styled-icons/boxicons-regular": ^10.38.0 @@ -2235,7 +2235,7 @@ __metadata: react-device-detect: "*" react-virtuoso: "*" revolt.js: "*" - checksum: 39831a463f030b1361401270b8d1d10c18b28c964b878083784544902e62682ddee0634fe087af99437963d24b585ac680d8b7c2df0d298bffb3bddc140a52ac + checksum: 97eee93df28f2ca826c7cb1493e3c0efe0ab83d3ef8ea3d3ec013ff3b527f2692193ef50c8e44d144f96d49457c4d290a4dc708a38ab527f3a4290e0d05b41b5 languageName: node linkType: hard @@ -3521,7 +3521,7 @@ __metadata: "@hcaptcha/react-hcaptcha": ^0.3.6 "@insertish/vite-plugin-babel-macros": ^1.0.5 "@preact/preset-vite": ^2.0.0 - "@revoltchat/ui": 1.0.35 + "@revoltchat/ui": 1.0.36 "@rollup/plugin-replace": ^2.4.2 "@styled-icons/boxicons-logos": ^10.38.0 "@styled-icons/boxicons-regular": ^10.38.0