diff --git a/modules/notifications/index.ts b/modules/notifications/index.ts index d6114c7..1d6fd97 100644 --- a/modules/notifications/index.ts +++ b/modules/notifications/index.ts @@ -8,10 +8,14 @@ import { Body } from "./body/index.js"; import { CloseButton } from "./close/index.js"; import { NotificationAnchor } from "lib/types/options"; -const { position } = options.notifications; +const { position, timeout, cache_actions } = options.notifications; export default () => { - notifs.popupTimeout = 7000; + Utils.merge([timeout.bind("value"), cache_actions.bind("value")], (timeout, doCaching) => { + notifs.popupTimeout = timeout; + notifs.cacheActions = doCaching; + }); + const getPosition = (pos: NotificationAnchor): ("top" | "bottom" | "left" | "right")[] => { const positionMap: { [key: string]: ("top" | "bottom" | "left" | "right")[] } = { "top": ["top"], diff --git a/options.ts b/options.ts index 590a0fa..0e63199 100644 --- a/options.ts +++ b/options.ts @@ -719,6 +719,8 @@ const options = mkOptions(OPTIONS, { notifications: { position: opt<"top" | "top right" | "top left" | "bottom" | "bottom right" | "bottom left">("top right"), + timeout: opt(7000), + cache_actions: opt(true), }, }) diff --git a/widget/settings/pages/config/index.ts b/widget/settings/pages/config/index.ts index 08ab661..4f7f806 100644 --- a/widget/settings/pages/config/index.ts +++ b/widget/settings/pages/config/index.ts @@ -2,13 +2,15 @@ import { BarGeneral } from "./general/index"; import { BarSettings } from "./bar/index"; import { ClockMenuSettings } from "./menus/clock"; import { DashboardMenuSettings } from "./menus/dashboard"; +import { NotificationSettings } from "./notifications/index"; -type Page = "General" | "Bar" | "Clock Menu" | "Dashboard Menu" +type Page = "General" | "Bar" | "Clock Menu" | "Dashboard Menu" | "Notifications"; const CurrentPage = Variable("General"); const pagerMap: Page[] = [ "General", "Bar", + "Notifications", "Clock Menu", "Dashboard Menu", ] @@ -37,6 +39,7 @@ export const SettingsMenu = () => { children: { "General": BarGeneral(), "Bar": BarSettings(), + "Notifications": NotificationSettings(), "Clock Menu": ClockMenuSettings(), "Dashboard Menu": DashboardMenuSettings(), }, diff --git a/widget/settings/pages/config/notifications/index.ts b/widget/settings/pages/config/notifications/index.ts index 12ec14b..fb839ae 100644 --- a/widget/settings/pages/config/notifications/index.ts +++ b/widget/settings/pages/config/notifications/index.ts @@ -10,6 +10,8 @@ export const NotificationSettings = () => { children: [ Header('Notification Settings'), Option({ opt: options.notifications.position, title: 'Notification Location', type: 'enum', enums: ['top left', 'top', 'top right', 'bottom right', 'bottom', 'bottom left'] }), + Option({ opt: options.notifications.timeout, title: 'Notification Timeout', subtitle: 'How long notification popups will last (in milliseconds).', type: 'number' }), + Option({ opt: options.notifications.cache_actions, title: 'Preserve Actions', subtitle: 'This will persist the action buttons of a notification after rebooting.', type: 'boolean' }), ] }) }