notification-settings-45451678d2a0fe8d.js.map 60 KB

1
  1. {"version":3,"file":"static/chunks/pages/notification-settings-45451678d2a0fe8d.js","mappings":"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","sources":["webpack://_N_E/./public/icons/chevron-down.svg","webpack://_N_E/?e0e0","webpack://_N_E/./src/components/Auth/RedirectToLoginPage.tsx","webpack://_N_E/./src/components/Auth/withAuth.tsx","webpack://_N_E/./src/components/NextSeoWrapper.tsx","webpack://_N_E/./src/components/dls/Collapsible/Collapsible.tsx","webpack://_N_E/./src/components/dls/Pill/index.tsx","webpack://_N_E/./src/pages/_error.tsx","webpack://_N_E/./src/components/Notifications/hooks/useHeadlessService.tsx","webpack://_N_E/./src/lib/sentry.ts","webpack://_N_E/./src/components/Notifications/hooks/useMarkNotificationAsSeen.ts","webpack://_N_E/./src/components/Notifications/hooks/useFetchNotifications.ts","webpack://_N_E/./src/components/Notifications/hooks/useInitializeUnseenCount.ts","webpack://_N_E/./src/components/Notifications/InAppNotifications/NotificationContext.tsx","webpack://_N_E/./src/components/Notifications/hooks/useUpdateUserPreferences.ts","webpack://_N_E/./src/components/Notifications/NotificationSettings/Tabs/FieldsetContainer/index.tsx","webpack://_N_E/./src/components/dls/Toggle/Toggle.tsx","webpack://_N_E/./src/components/Notifications/NotificationSettings/Tabs/PreferenceSettingsToggles/index.tsx","webpack://_N_E/./src/components/Notifications/NotificationSettings/Tabs/CategoriesSettingsTab/CollapsibleWorkflowSettings/index.tsx","webpack://_N_E/./src/components/Notifications/hooks/useFetchUserPreferences.ts","webpack://_N_E/./src/components/Notifications/NotificationSettings/Tabs/CategoriesSettingsTab/index.tsx","webpack://_N_E/./src/components/Notifications/NotificationSettings/Tabs/index.tsx","webpack://_N_E/./src/pages/notification-settings/index.tsx","webpack://_N_E/./src/utils/string.ts","webpack://_N_E/./src/components/Notifications/NotificationSettings/Tabs/CategoriesSettingsTab/CollapsibleWorkflowSettings/CollapsibleWorkflowSettings.module.scss","webpack://_N_E/./src/components/Notifications/NotificationSettings/Tabs/FieldsetContainer/FieldsetContainer.module.scss","webpack://_N_E/./src/components/Notifications/NotificationSettings/Tabs/PreferenceSettingsToggles/PreferenceSettingsToggles.module.scss","webpack://_N_E/./src/components/Notifications/NotificationSettings/Tabs/Tabs.module.scss","webpack://_N_E/./src/components/dls/Collapsible/Collapsible.module.scss","webpack://_N_E/./src/components/dls/Pill/Pill.module.scss","webpack://_N_E/./src/components/dls/Toggle/Toggle.module.scss","webpack://_N_E/./src/pages/_error.module.scss","webpack://_N_E/./src/pages/index.module.scss"],"sourcesContent":["var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgChevronDown = function SvgChevronDown(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 15,\n height: 15,\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.135 6.158a.5.5 0 0 1 .707-.023L7.5 9.565l3.658-3.43a.5.5 0 0 1 .684.73l-4 3.75a.5.5 0 0 1-.684 0l-4-3.75a.5.5 0 0 1-.023-.707Z\",\n fill: \"currentColor\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n })));\n};\nexport default SvgChevronDown;","\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/notification-settings\",\n function () {\n return require(\"private-next-pages/notification-settings/index.tsx\");\n }\n ]);\n if(module.hot) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/notification-settings\"])\n });\n }\n ","import React, { useEffect } from 'react';\n\nimport { useRouter } from 'next/router';\n\nimport { getLoginNavigationUrl } from '@/utils/navigation';\n\nconst RedirectToLoginPage = () => {\n const router = useRouter();\n useEffect(() => {\n const { asPath } = router;\n router.replace(getLoginNavigationUrl(asPath));\n }, [router]);\n\n return <></>;\n};\n\nexport default RedirectToLoginPage;\n","import { JSX, useEffect, useState } from 'react';\n\nimport RedirectToLoginPage from './RedirectToLoginPage';\n\nimport { isLoggedIn } from '@/utils/auth/login';\n/**\n * withAuth is a Higher-Order Component (HOC) that wraps a component and checks if the user is authenticated.\n * If the user is authenticated, it renders the wrapped component.\n * If the user is not authenticated, it redirects the user to the login page.\n *\n * @param {React.ComponentType} WrappedComponent - The component to wrap and protect with authentication check.\n *\n * @returns {React.ComponentType} If the user is authenticated, returns the WrappedComponent.\n * If not, returns RedirectToLoginPage component.\n *\n * @example\n * const ProtectedComponent = withAuth(MyComponent);\n */\nconst withAuth = (WrappedComponent: React.ComponentType): React.ComponentType => {\n const WithAuth = (props: JSX.IntrinsicAttributes) => {\n const [isReady, setIsReady] = useState(false);\n\n /**\n * we need to wait for the initial render to check if the user is authenticated\n * because when it's server-side rendered, the user is not authenticated yet\n */\n useEffect(() => {\n setIsReady(true);\n }, []);\n\n if (!isReady) {\n return null; // or return a loading spinner\n }\n\n return isLoggedIn() ? <WrappedComponent {...props} /> : <RedirectToLoginPage />;\n };\n\n return WithAuth;\n};\n\nexport default withAuth;\n","import React from 'react';\n\nimport { NextSeo } from 'next-seo';\n\nimport { SEOProps } from '@/utils/seo';\nimport { truncateString } from '@/utils/string';\n\ninterface Props extends SEOProps {\n url?: string;\n image?: string;\n imageAlt?: string;\n imageWidth?: number;\n imageHeight?: number;\n}\n\nconst NextSeoWrapper: React.FC<Props> = (props) => {\n const { url, image, imageAlt, imageHeight, imageWidth, openGraph, description, ...rest } = props;\n const openGraphParams = {\n ...(openGraph && { openGraph }),\n ...(url && { url }),\n ...(image && {\n images: [{ url: image, width: imageWidth, height: imageHeight, alt: imageAlt }],\n }),\n };\n const params = {\n ...rest,\n ...(description && { description: truncateString(description, 150) }),\n };\n return <NextSeo {...params} openGraph={openGraphParams} />;\n};\n\nexport default NextSeoWrapper;\n","/* eslint-disable jsx-a11y/no-static-element-interactions */\n/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport React, { useEffect, useState } from 'react';\n\nimport * as CollapsiblePrimitive from '@radix-ui/react-collapsible';\nimport classNames from 'classnames';\n\nimport styles from './Collapsible.module.scss';\n\ntype ChildrenRenderProps = {\n isOpen: boolean;\n};\n\ntype Props = {\n title?: React.ReactNode;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n children: ({ isOpen }: ChildrenRenderProps) => React.ReactNode;\n isDefaultOpen?: boolean;\n shouldOpen?: boolean;\n shouldRotatePrefixOnToggle?: boolean;\n onOpenChange?: (isOpen: boolean) => void;\n direction?: CollapsibleDirection;\n};\n\nexport enum CollapsibleDirection {\n Left = 'left',\n Right = 'right',\n}\n\nconst Collapsible = ({\n isDefaultOpen = false,\n prefix,\n title,\n suffix,\n children,\n shouldRotatePrefixOnToggle,\n shouldOpen,\n onOpenChange,\n direction = CollapsibleDirection.Left,\n}: Props) => {\n const [isOpen, setIsOpen] = useState(isDefaultOpen);\n\n useEffect(() => {\n setIsOpen(shouldOpen);\n }, [shouldOpen]);\n\n const onSuffixClicked = (e) => {\n e.preventDefault();\n e.stopPropagation();\n };\n\n const onHeaderClicked = () => setIsOpen((preValue) => !preValue);\n\n return (\n <CollapsiblePrimitive.Root onOpenChange={onOpenChange} open={isOpen}>\n <CollapsiblePrimitive.Trigger asChild>\n <div className={styles.header} onClick={onHeaderClicked}>\n {direction === CollapsibleDirection.Left ? (\n <>\n <div className={styles.headerLeft}>\n <div\n className={classNames(styles.prefixContainer, {\n [styles.prefixRotated]: shouldRotatePrefixOnToggle && isOpen,\n })}\n >\n {prefix}\n </div>\n {title}\n </div>\n <div className={styles.suffixContainer} onClick={onSuffixClicked}>\n {suffix}\n </div>\n </>\n ) : (\n <>\n <div className={styles.headerLeft}>{title}</div>\n <div\n className={classNames(styles.prefixContainer, {\n [styles.prefixRotated]: shouldRotatePrefixOnToggle && isOpen,\n })}\n >\n {prefix}\n </div>\n </>\n )}\n </div>\n </CollapsiblePrimitive.Trigger>\n <CollapsiblePrimitive.CollapsibleContent>\n {isOpen && children({ isOpen })}\n </CollapsiblePrimitive.CollapsibleContent>\n </CollapsiblePrimitive.Root>\n );\n};\n\nexport default Collapsible;\n","import React from 'react';\n\nimport classNames from 'classnames';\n\nimport styles from './Pill.module.scss';\n\nexport enum PillSize {\n SMALL = 'small',\n MEDIUM = 'medium',\n}\n\ntype Props = {\n children: React.ReactNode;\n size?: PillSize;\n};\n\nconst Pill: React.FC<Props> = ({ children, size = PillSize.MEDIUM }) => {\n return (\n <div\n className={classNames(styles.container, {\n [styles.medium]: size === PillSize.MEDIUM,\n [styles.small]: size === PillSize.SMALL,\n })}\n >\n {children}\n </div>\n );\n};\n\nexport default Pill;\n","/* eslint-disable jsx-a11y/anchor-is-valid */\nimport classNames from 'classnames';\nimport { useRouter } from 'next/router';\nimport useTranslation from 'next-translate/useTranslation';\n\nimport styles from './_error.module.scss';\n\nimport Button from '@/dls/Button/Button';\nimport Link, { LinkVariant } from '@/dls/Link/Link';\n\n// reference: https://nextjs.org/docs/advanced-features/custom-error-page#more-advanced-error-page-customizing\ntype ErrorProps = {\n statusCode?: number;\n hasFullWidth?: boolean;\n};\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst Error = ({ statusCode, hasFullWidth = true }: ErrorProps) => {\n const { t } = useTranslation('error');\n const router = useRouter();\n\n // if previous page url exist, go back, otherwise go to home\n const onBackButtonClicked = () => {\n if (document && document.referrer) {\n router.back();\n return;\n }\n router.push('/'); // go to home\n };\n return (\n <div\n className={classNames(styles.container, {\n [styles.withFullWidth]: hasFullWidth,\n })}\n >\n <h1 className={styles.title}>{t('title')}</h1>\n <div className={styles.goBack}>\n <Button onClick={onBackButtonClicked}>{t('go-back')}</Button>\n </div>\n <p className={styles.reportBug}>\n {t('if-persist')}{' '}\n <Link href=\"https://feedback.quran.com/\" variant={LinkVariant.Highlight}>\n {t('report-cta')}\n </Link>\n </p>\n </div>\n );\n};\n\nexport default Error;\n","import { createContext, useContext, useEffect, useMemo, useState } from 'react';\n\nimport { HeadlessService } from '@novu/headless';\n\nimport { logErrorToSentry } from '@/lib/sentry';\nimport { getNotificationSubscriberHashCookie, getUserIdCookie } from '@/utils/auth/login';\n\nconst HeadlessServiceContext = createContext<{\n headlessService: HeadlessService;\n status: HeadlessServiceStatus;\n isReady: boolean;\n error: unknown | null;\n}>(null);\n\nexport enum HeadlessServiceStatus {\n INITIALIZING = 'initializing',\n READY = 'ready',\n ERROR = 'error',\n}\n\nexport const HeadlessServiceProvider = ({ children }) => {\n const [status, setStatus] = useState<HeadlessServiceStatus>(HeadlessServiceStatus.INITIALIZING);\n const [error, setError] = useState<unknown | null>(null);\n\n const headlessService = useMemo(() => {\n return new HeadlessService({\n backendUrl: process.env.NEXT_PUBLIC_NOVU_BACKEND_URL,\n socketUrl: process.env.NEXT_PUBLIC_NOVU_SOCKET_URL,\n subscriberId: getUserIdCookie(),\n subscriberHash: getNotificationSubscriberHashCookie(),\n applicationIdentifier: process.env.NEXT_PUBLIC_NOVU_APP_ID,\n });\n }, []);\n\n useEffect(() => {\n headlessService.initializeSession({\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n listener: () => {},\n onSuccess: () => {\n setStatus(HeadlessServiceStatus.READY);\n },\n onError: (err) => {\n setError(err);\n setStatus(HeadlessServiceStatus.ERROR);\n logErrorToSentry(err, { transactionName: 'useHeadlessService' });\n },\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [headlessService]);\n\n const value = useMemo(\n () => ({ headlessService, status, isReady: status === HeadlessServiceStatus.READY, error }),\n [headlessService, status, error],\n );\n\n return (\n <HeadlessServiceContext.Provider value={value}>{children}</HeadlessServiceContext.Provider>\n );\n};\n\nexport const useHeadlessService = () => useContext(HeadlessServiceContext);\n","import * as Sentry from '@sentry/nextjs';\n\nimport { getUserIdCookie } from '@/utils/auth/login';\n\nconst SENTRY_ENABLED = process.env.NEXT_PUBLIC_CLIENT_SENTRY_ENABLED === 'true';\n\ninterface LogOptions {\n metadata?: Record<string, unknown>;\n transactionName?: string;\n}\n\n/**\n * A wrapper around Sentry.captureException that logs to the console if Sentry is not enabled and accepts additional metadata.\n *\n * @param {unknown} error\n * @param {LogOptions} options\n */\nexport const logErrorToSentry = (error: unknown, options: LogOptions = {}) => {\n if (!SENTRY_ENABLED) {\n // eslint-disable-next-line no-console\n console.error(error, options);\n } else {\n Sentry.captureException(error, (scope) => {\n if (options.metadata) {\n scope.setContext('extraData', options.metadata);\n }\n if (getUserIdCookie()) {\n scope.setUser({\n id: getUserIdCookie(),\n });\n }\n if (options.transactionName) {\n scope.setTransactionName(options.transactionName);\n }\n return scope;\n });\n }\n};\n\n/**\n * A wrapper around Sentry.captureMessage that logs to the console if Sentry is not enabled and accepts additional metadata. This is typically used for logging errors or in-app states that are not thrown.\n *\n * @param {string} message\n * @param {LogOptions} options\n */\nexport const logMessageToSentry = (\n message: string,\n options: {\n metadata?: Record<string, unknown>;\n transactionName?: string;\n } = {},\n) => {\n if (!SENTRY_ENABLED) {\n // eslint-disable-next-line no-console\n console.log(message, options);\n } else {\n Sentry.captureMessage(message, (scope) => {\n if (options.metadata) {\n scope.setContext('extraData', options.metadata);\n }\n if (options.transactionName) {\n scope.setTransactionName(options.transactionName);\n }\n return scope;\n });\n }\n};\n","import { useCallback, useState } from 'react';\n\nimport { IMessageId } from '@novu/headless';\n\nimport { useHeadlessService } from './useHeadlessService';\n\nimport { logErrorToSentry } from '@/lib/sentry';\n\nconst useMarkNotificationAsSeen = () => {\n const { headlessService, isReady } = useHeadlessService();\n const [isMutating, setIsMutating] = useState(false);\n const [error, setError] = useState<unknown>(null);\n\n const markNotificationsAsSeen = useCallback(\n (messageIds: IMessageId) => {\n if (isReady) {\n headlessService.markNotificationsAsSeen({\n messageId: messageIds,\n listener: ({ isLoading }) => {\n setIsMutating(isLoading);\n },\n onSuccess: () => {\n setError(null);\n },\n onError: (err) => {\n setError(err);\n logErrorToSentry(err, {\n transactionName: 'useMarkNotificationAsSeen',\n metadata: { messageIds },\n });\n },\n });\n }\n },\n [headlessService, isReady],\n );\n\n return {\n mutate: markNotificationsAsSeen,\n isLoading: isMutating,\n error,\n };\n};\n\nexport default useMarkNotificationAsSeen;\n","import { useCallback, useState } from 'react';\n\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { useHeadlessService } from './useHeadlessService';\nimport useMarkNotificationAsSeen from './useMarkNotificationAsSeen';\n\nimport { logErrorToSentry } from '@/lib/sentry';\nimport {\n selectLoadedNotificationsPages,\n selectNotificationsIsFetching,\n setNotificationsLoading,\n setNotificationsPageAndFinishLoading,\n} from '@/redux/slices/notifications';\nimport { areArraysEqual } from '@/utils/array';\n\nconst NOTIFICATIONS_PAGE_SIZE = 10;\n\nconst useFetchNotifications = () => {\n const { headlessService, isReady } = useHeadlessService();\n const [error, setError] = useState<unknown | null>(null);\n const dispatch = useDispatch();\n\n const { mutate: markNotificationAsSeen } = useMarkNotificationAsSeen();\n const loadedPages = useSelector(selectLoadedNotificationsPages, areArraysEqual);\n const isFetchingNotifications = useSelector(selectNotificationsIsFetching);\n\n const fetchNotifications = useCallback(\n // eslint-disable-next-line react-func/max-lines-per-function\n ({\n shouldMarkAsSeenOnSuccess = true,\n page,\n shouldResetOldData = false,\n }: {\n shouldMarkAsSeenOnSuccess?: boolean;\n shouldResetOldData?: boolean;\n page: number;\n }) => {\n if (isReady) {\n if (isFetchingNotifications || loadedPages.includes(page)) {\n return;\n }\n\n headlessService.fetchNotifications({\n page,\n query: {\n limit: NOTIFICATIONS_PAGE_SIZE,\n },\n listener: ({ isLoading: loading, isFetching: fetching, data }) => {\n if (data) {\n dispatch({\n type: setNotificationsPageAndFinishLoading.type,\n payload: {\n page: data.page,\n data,\n shouldResetOldData,\n },\n });\n } else {\n dispatch({\n type: setNotificationsLoading.type,\n payload: {\n isLoading: loading,\n isFetching: fetching,\n shouldResetOldData,\n },\n });\n }\n },\n onSuccess: (response) => {\n setError(null);\n if (shouldMarkAsSeenOnSuccess) {\n const messageIds = response.data.map((message) => {\n // eslint-disable-next-line no-underscore-dangle\n return message._id;\n });\n markNotificationAsSeen(messageIds);\n }\n },\n onError: (err) => {\n setError(err);\n logErrorToSentry(err, {\n transactionName: 'useFetchNotifications',\n metadata: {\n page,\n shouldMarkAsSeenOnSuccess,\n shouldResetOldData,\n },\n });\n },\n });\n }\n },\n [\n dispatch,\n headlessService,\n isReady,\n markNotificationAsSeen,\n loadedPages,\n isFetchingNotifications,\n ],\n );\n\n return { fetch: fetchNotifications, error };\n};\n\nexport default useFetchNotifications;\n","import { useEffect, useState } from 'react';\n\nimport { useDispatch } from 'react-redux';\n\nimport { useHeadlessService } from './useHeadlessService';\n\nimport { logErrorToSentry } from '@/lib/sentry';\nimport { setUnseenCount } from '@/redux/slices/notifications';\n\nconst useInitializeUnseenCount = () => {\n const { headlessService, isReady } = useHeadlessService();\n const [error, setError] = useState<unknown>(null);\n const dispatch = useDispatch();\n\n useEffect(() => {\n if (isReady) {\n headlessService.fetchUnseenCount({\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n listener: () => {},\n onSuccess: ({ count }) => {\n dispatch({ type: setUnseenCount.type, payload: count });\n setError(null);\n },\n onError: (err: unknown) => {\n setError(err);\n logErrorToSentry(err, { transactionName: 'useInitializeUnseenCount' });\n },\n });\n\n headlessService.listenUnseenCountChange({\n listener: (count) => {\n dispatch({ type: setUnseenCount.type, payload: count });\n },\n });\n }\n }, [headlessService, isReady, dispatch]);\n\n return { error };\n};\n\nexport default useInitializeUnseenCount;\n","/* eslint-disable max-lines */\nimport { useContext, createContext, useMemo } from 'react';\n\nimport useFetchNotifications from '@/components/Notifications/hooks/useFetchNotifications';\nimport { HeadlessServiceProvider } from '@/components/Notifications/hooks/useHeadlessService';\nimport useInitializeUnseenCount from '@/components/Notifications/hooks/useInitializeUnseenCount';\n\ntype NotificationContextType = {\n fetchNotifications: ReturnType<typeof useFetchNotifications>;\n};\n\nconst NotificationContext = createContext<NotificationContextType>({} as NotificationContextType);\n\nconst NotificationsProviderInner = ({ children }: { children: React.ReactNode }) => {\n // fetch initial unseen count and listen to its changes\n useInitializeUnseenCount();\n\n const fetchNotifications = useFetchNotifications();\n\n const value = useMemo(\n () => ({\n fetchNotifications,\n }),\n [fetchNotifications],\n );\n\n return <NotificationContext.Provider value={value}>{children}</NotificationContext.Provider>;\n};\n\n// eslint-disable-next-line react/no-multi-comp\nexport const NotificationsProvider = ({ children }: { children: React.ReactNode }) => {\n return (\n <HeadlessServiceProvider>\n <NotificationsProviderInner>{children}</NotificationsProviderInner>\n </HeadlessServiceProvider>\n );\n};\n\nexport const useNotifications = () => useContext(NotificationContext);\n","import { useState } from 'react';\n\nimport { IUpdateUserPreferencesVariables } from '@novu/headless';\nimport useTranslation from 'next-translate/useTranslation';\n\nimport { useHeadlessService } from './useHeadlessService';\n\nimport { ToastStatus, useToast } from '@/dls/Toast/Toast';\nimport { logErrorToSentry } from '@/lib/sentry';\n\nconst useUpdateUserPreferences = (templateId: string) => {\n const { headlessService } = useHeadlessService();\n const [isMutating, setIsMutating] = useState(false);\n const [error, setError] = useState<unknown>(null);\n const { t } = useTranslation('common');\n const toast = useToast();\n\n const updateUserPreferences = (\n enabled: IUpdateUserPreferencesVariables['checked'],\n channel: IUpdateUserPreferencesVariables['channelType'],\n onSuccess?: () => void,\n ) => {\n headlessService.updateUserPreferences({\n templateId,\n checked: enabled,\n channelType: channel,\n listener: ({ isLoading }) => {\n setIsMutating(isLoading);\n },\n onSuccess: () => {\n setError(null);\n toast(t('notification-settings:notif-update-success'), { status: ToastStatus.Success });\n if (onSuccess) {\n onSuccess();\n }\n },\n onError: (err) => {\n setError(err);\n toast(t('error.general'), { status: ToastStatus.Error });\n logErrorToSentry(err, {\n transactionName: 'updateUserPreferences',\n metadata: {\n templateId,\n checked: enabled,\n channelType: channel,\n },\n });\n },\n });\n };\n\n return { mutate: updateUserPreferences, isMutating, error };\n};\n\nexport default useUpdateUserPreferences;\n","import React from 'react';\n\nimport styles from './FieldsetContainer.module.scss';\n\ntype Props = {\n children: React.ReactNode;\n title: React.ReactNode;\n};\n\nconst FieldsetContainer: React.FC<Props> = ({ children, title }) => {\n return (\n <fieldset className={styles.channelsContainer}>\n <legend>{title}</legend>\n {children}\n </fieldset>\n );\n};\n\nexport default FieldsetContainer;\n","import React from 'react';\n\nimport * as RadixToggle from '@radix-ui/react-switch';\n\nimport styles from './Toggle.module.scss';\n\ninterface Props {\n id: string;\n onChange?: (checked: boolean) => void;\n checked?: boolean;\n disabled?: boolean;\n required?: boolean;\n label?: string | JSX.Element;\n name?: string;\n defaultChecked?: boolean;\n}\n\nconst Toggle: React.FC<Props> = ({\n disabled = false,\n required = false,\n defaultChecked,\n checked,\n id,\n label,\n name,\n onChange,\n}) => {\n return (\n <div className={styles.container}>\n {label && (\n <label className={styles.label} htmlFor={id}>\n {label}\n </label>\n )}\n\n <RadixToggle.Root\n id={id}\n disabled={disabled}\n name={name}\n required={required}\n className={styles.root}\n {...(checked !== undefined && { checked })}\n {...(defaultChecked !== undefined && { defaultChecked })}\n {...(onChange !== undefined && { onCheckedChange: onChange })}\n >\n <RadixToggle.Thumb className={styles.thumb} />\n </RadixToggle.Root>\n </div>\n );\n};\n\nexport default Toggle;\n","import React from 'react';\n\nimport {\n ChannelTypeEnum,\n IUserGlobalPreferenceSettings,\n IUserPreferenceSettings,\n} from '@novu/headless';\nimport useTranslation from 'next-translate/useTranslation';\n\nimport styles from './PreferenceSettingsToggles.module.scss';\n\nimport FieldsetContainer from '@/components/Notifications/NotificationSettings/Tabs/FieldsetContainer';\nimport Spinner from '@/dls/Spinner/Spinner';\nimport Toggle from '@/dls/Toggle/Toggle';\n\ntype Props = {\n isMutating: boolean;\n preference: IUserPreferenceSettings | IUserGlobalPreferenceSettings;\n onToggle: (isChecked: boolean, channel?: ChannelTypeEnum) => void;\n hasGlobalPreference?: boolean;\n mutatingChannel?: string;\n};\n\nconst PreferenceSettingsToggles: React.FC<Props> = ({\n isMutating,\n preference,\n onToggle,\n hasGlobalPreference = true,\n mutatingChannel,\n}) => {\n const { t } = useTranslation('notification-settings');\n return (\n <>\n {hasGlobalPreference && (\n <div className={styles.row}>\n <Toggle\n id=\"all-notifications\"\n label={t('all-notifications')}\n onChange={onToggle}\n checked={preference.preference.enabled}\n disabled={isMutating}\n />\n {isMutating && <Spinner />}\n </div>\n )}\n\n <FieldsetContainer title={t('channels-notifications')}>\n {Object.keys(preference.preference.channels).map((channelName) => {\n return (\n <div className={styles.row} key={channelName}>\n <Toggle\n id={channelName}\n disabled={isMutating}\n label={t(`channels.${channelName}`)}\n onChange={(checked) => onToggle(checked, channelName as ChannelTypeEnum)}\n checked={preference.preference.channels[channelName]}\n />\n {isMutating && channelName === mutatingChannel && <Spinner />}\n </div>\n );\n })}\n </FieldsetContainer>\n </>\n );\n};\n\nexport default PreferenceSettingsToggles;\n","/* eslint-disable no-underscore-dangle */\nimport React, { useMemo, useState } from 'react';\n\nimport { ChannelTypeEnum, IUserPreferenceSettings } from '@novu/headless';\nimport useTranslation from 'next-translate/useTranslation';\n\nimport styles from './CollapsibleWorkflowSettings.module.scss';\n\nimport useUpdateUserPreferences from '@/components/Notifications/hooks/useUpdateUserPreferences';\nimport PreferenceSettingsToggles from '@/components/Notifications/NotificationSettings/Tabs/PreferenceSettingsToggles';\nimport Collapsible, { CollapsibleDirection } from '@/dls/Collapsible/Collapsible';\nimport ChevronDownIcon from '@/icons/chevron-down.svg';\nimport { logEvent, logValueChange } from '@/utils/eventLogger';\n\ntype Props = {\n preference: IUserPreferenceSettings;\n};\n\nconst CollapsibleWorkflowSettings: React.FC<Props> = ({ preference }) => {\n const { t } = useTranslation('notification-settings');\n const { mutate: UpdateUserPreferences, isMutating } = useUpdateUserPreferences(\n // eslint-disable-next-line no-underscore-dangle\n preference.template._id,\n );\n // we need a local state to handle UI updates when the user changes one of the settings since the toggles are controlled\n const [preferenceState, setPreferenceState] = useState<IUserPreferenceSettings>(preference);\n const [mutatingChannel, setMutatingChannel] = useState<ChannelTypeEnum>();\n\n const onOpenChange = (isOpen: boolean) => {\n if (isOpen) {\n logEvent('notif_workflow_settings_drawer_opened');\n } else {\n logEvent('notif_workflow_settings_drawer_closed');\n }\n };\n\n const onToggle = (isChecked: boolean, channel?: ChannelTypeEnum) => {\n setMutatingChannel(channel);\n logValueChange('notif_workflow_settings', !isChecked, isChecked, {\n channel,\n });\n UpdateUserPreferences(isChecked, channel, () => {\n setPreferenceState((prev) => {\n const newState = { ...prev };\n newState.preference.channels[channel] = isChecked;\n return newState;\n });\n });\n };\n\n const workflowChannels = useMemo(\n () =>\n // eslint-disable-next-line unicorn/no-array-reduce\n Object.keys(preferenceState.preference.channels).reduce((acc, currentValue) => {\n if (!acc) return t(`channels.${currentValue}`);\n return `${acc}, ${t(`channels.${currentValue}`)}`;\n }, ''),\n [preferenceState.preference.channels, t],\n );\n\n return (\n <div className={styles.container}>\n <Collapsible\n title={\n <div>\n <p className={styles.workflowName}>{preferenceState.template.name}</p>\n <p className={styles.workflowChannels}>{workflowChannels}</p>\n </div>\n }\n prefix={<ChevronDownIcon />}\n shouldRotatePrefixOnToggle\n onOpenChange={onOpenChange}\n direction={CollapsibleDirection.Right}\n >\n {({ isOpen: isOpenRenderProp }) => {\n if (!isOpenRenderProp) return null;\n return (\n <PreferenceSettingsToggles\n onToggle={onToggle}\n isMutating={isMutating}\n preference={preferenceState}\n mutatingChannel={mutatingChannel}\n hasGlobalPreference={false}\n />\n );\n }}\n </Collapsible>\n </div>\n );\n};\n\nexport default CollapsibleWorkflowSettings;\n","import { useCallback, useMemo, useState } from 'react';\n\nimport { IUserGlobalPreferenceSettings, IUserPreferenceSettings } from '@novu/headless';\nimport useTranslation from 'next-translate/useTranslation';\n\nimport { useHeadlessService } from '@/components/Notifications/hooks/useHeadlessService';\nimport { ToastStatus, useToast } from '@/dls/Toast/Toast';\nimport { logErrorToSentry } from '@/lib/sentry';\n\nconst useFetchUserPreferences = () => {\n const { headlessService, isReady, status } = useHeadlessService();\n const [isMutating, setIsMutating] = useState(false);\n const [error, setError] = useState<unknown>(null);\n const { t } = useTranslation('common');\n const toast = useToast();\n const [userPreferences, setUserPreferences] = useState<\n IUserPreferenceSettings[] | IUserGlobalPreferenceSettings[]\n >(null);\n\n const handlers = useMemo(\n () => ({\n listener: ({ isLoading }) => {\n setIsMutating(isLoading);\n },\n onSuccess: (response) => {\n setError(null);\n setUserPreferences(response);\n },\n onError: (err) => {\n setError(err);\n toast(t('error.general'), { status: ToastStatus.Error });\n logErrorToSentry(err, {\n transactionName: 'useFetchUserPreferences',\n });\n },\n }),\n [t, toast],\n );\n\n const fetchGetUserPreferences = useCallback(\n (fetchGlobalSettings = false) => {\n if (isReady) {\n if (fetchGlobalSettings) {\n headlessService.fetchUserGlobalPreferences(handlers);\n } else {\n headlessService.fetchUserPreferences(handlers);\n }\n }\n },\n [handlers, headlessService, isReady],\n );\n\n return {\n mutate: fetchGetUserPreferences,\n isMutating,\n error,\n userPreferences,\n status,\n };\n};\n\nexport default useFetchUserPreferences;\n","/* eslint-disable no-underscore-dangle */\nimport React, { useEffect, useMemo, useState } from 'react';\n\nimport { IUserPreferenceSettings } from '@novu/headless';\nimport groupBy from 'lodash/groupBy';\nimport useTranslation from 'next-translate/useTranslation';\n\nimport parentStyles from '../Tabs.module.scss';\n\nimport CollapsibleWorkflowSettings from './CollapsibleWorkflowSettings';\n\nimport useFetchUserPreferences from '@/components/Notifications/hooks/useFetchUserPreferences';\nimport { HeadlessServiceStatus } from '@/components/Notifications/hooks/useHeadlessService';\nimport FieldsetContainer from '@/components/Notifications/NotificationSettings/Tabs/FieldsetContainer';\nimport Pill, { PillSize } from '@/dls/Pill';\nimport Spinner, { SpinnerSize } from '@/dls/Spinner/Spinner';\nimport Error from '@/pages/_error';\n\nconst MARKETING_TAG = 'marketing';\n\nconst CategoriesSettingsTab = () => {\n const { t } = useTranslation('notification-settings');\n const {\n mutate,\n isMutating: isFetchingUserPreferences,\n error,\n userPreferences,\n status,\n } = useFetchUserPreferences();\n // we need a local state to handle UI updates when the user changes one of the settings since the toggles are controlled\n const [preferences, setPreferences] = useState<IUserPreferenceSettings[]>(\n userPreferences as IUserPreferenceSettings[],\n );\n\n /**\n * Group the preferences by tags. We filter out:\n *\n * 1. critical workflows since they are cannot be skipped.\n * 2. preferences that don't have tags since they cannot be categorized.\n * 3. non-marketing emails\n */\n const groupByTags = useMemo(\n () =>\n groupBy(\n preferences?.filter(\n (preference) =>\n preference.template.critical === false &&\n !!preference.template.tags.length &&\n !preference.template.tags.includes(MARKETING_TAG),\n ),\n (preference) => preference.template.tags,\n ),\n [preferences],\n );\n\n useEffect(() => {\n setPreferences(userPreferences as IUserPreferenceSettings[]);\n }, [userPreferences]);\n\n useEffect(() => {\n mutate(false);\n }, [mutate]);\n\n const isLoading = status === HeadlessServiceStatus.INITIALIZING || isFetchingUserPreferences;\n if (isLoading) {\n return (\n <div className={parentStyles.loadingContainer}>\n <Spinner size={SpinnerSize.Large} />\n </div>\n );\n }\n const hasError = status === HeadlessServiceStatus.ERROR || error;\n if (hasError) {\n return (\n <div className={parentStyles.loadingContainer}>\n <Error statusCode={500} />\n </div>\n );\n }\n\n // if it's loading or there's an error, we don't want to render anything\n if (!preferences || preferences.length === 0) {\n return null;\n }\n\n return (\n <>\n {Object.keys(groupByTags).map((tag) => {\n const tagPreferences = groupByTags[tag];\n return (\n <div key={tag}>\n <FieldsetContainer title={<Pill size={PillSize.SMALL}>{t(`tags.${tag}`)}</Pill>}>\n {tagPreferences.map((preference) => {\n return (\n <CollapsibleWorkflowSettings\n key={preference.template._id}\n preference={preference}\n />\n );\n })}\n </FieldsetContainer>\n </div>\n );\n })}\n </>\n );\n};\n\nexport default CategoriesSettingsTab;\n","import React from 'react';\n\nimport useTranslation from 'next-translate/useTranslation';\n\nimport styles from './Tabs.module.scss';\n\nimport CategoriesSettingsTab from '@/components/Notifications/NotificationSettings/Tabs/CategoriesSettingsTab';\n\nconst NotificationSettingsTabs = () => {\n const { t } = useTranslation('notification-settings');\n\n return (\n <div className={styles.container}>\n <div className={styles.header}>\n <div className={styles.titleContainer}>\n <h1>{t('common:notification-settings')}</h1>\n </div>\n </div>\n <CategoriesSettingsTab />\n </div>\n );\n};\n\nexport default NotificationSettingsTabs;\n","/* eslint-disable max-lines */\n\nimport { GetStaticProps } from 'next';\nimport useTranslation from 'next-translate/useTranslation';\n\nimport withAuth from '@/components/Auth/withAuth';\nimport NextSeoWrapper from '@/components/NextSeoWrapper';\nimport { NotificationsProvider } from '@/components/Notifications/InAppNotifications/NotificationContext';\nimport NotificationSettingsTabs from '@/components/Notifications/NotificationSettings/Tabs';\nimport layoutStyles from '@/pages/index.module.scss';\nimport { getAllChaptersData } from '@/utils/chapter';\nimport { getLanguageAlternates } from '@/utils/locale';\nimport { getCanonicalUrl, getNotificationSettingsNavigationUrl } from '@/utils/navigation';\n\nconst NotificationSettingsPage = () => {\n const { t, lang } = useTranslation('common');\n const navigationUrl = getNotificationSettingsNavigationUrl();\n const isProduction = process.env.NEXT_PUBLIC_VERCEL_ENV === 'production';\n\n return (\n <>\n <NextSeoWrapper\n title={t('notification-settings')}\n canonical={getCanonicalUrl(lang, navigationUrl)}\n languageAlternates={getLanguageAlternates(navigationUrl)}\n nofollow\n noindex\n />\n <div className={layoutStyles.pageContainer}>\n <div className={layoutStyles.flow}>\n <div className={layoutStyles.flowItem}>\n {isProduction ? (\n <NotificationsProvider>\n <NotificationSettingsTabs />\n </NotificationsProvider>\n ) : (\n // eslint-disable-next-line i18next/no-literal-string\n <p>{t('notification-settings:notif-settings-not-enabled')}</p>\n )}\n </div>\n </div>\n </div>\n </>\n );\n};\n\nexport const getStaticProps: GetStaticProps = async ({ locale }) => {\n const allChaptersData = await getAllChaptersData(locale);\n\n return {\n props: {\n chaptersData: allChaptersData,\n },\n };\n};\n\nexport default withAuth(NotificationSettingsPage);\n","/**\n * Shorten a text by setting the maximum number of characters\n * by the value of the parameter and adding \"...\" at the end.\n *\n * @param {string} rawString\n * @param {number} length\n * @param {string} suffix\n * @returns {string}\n */\nexport const truncateString = (rawString: string, length: number, suffix = '...'): string => {\n const characters = rawString.split('', length);\n let shortenedText = '';\n for (let index = 0; index < characters.length; index += 1) {\n const character = characters[index];\n if (shortenedText.length === length - 1) {\n shortenedText = `${shortenedText}${character}${suffix}`;\n break;\n }\n shortenedText = `${shortenedText}${character}`;\n }\n return shortenedText;\n};\n\n/**\n * Strip HTML tags from a string.\n *\n * @param {string} rawString\n * @returns {string}\n */\nexport const stripHTMLTags = (rawString: string): string => rawString.replace(/(<([^>]+)>)/gi, '');\n\n/**\n * Convert a slugified collection id to collection id only after\n * removing the slug.\n *\n * @param {string} slugifiedCollectionId\n * @returns {string}\n */\nexport const slugifiedCollectionIdToCollectionId = (slugifiedCollectionId: string): string => {\n if (!slugifiedCollectionId) {\n return '';\n }\n const splits = slugifiedCollectionId.split('-');\n // if there is no slug in the url (collections with a name that cannot be slugified e.g. emoticons)\n if (splits.length === 1) {\n return splits[0];\n }\n return splits[splits.length - 1];\n};\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"CollapsibleWorkflowSettings_container__vrNoK\",\"workflowName\":\"CollapsibleWorkflowSettings_workflowName__0RkJz\",\"workflowChannels\":\"CollapsibleWorkflowSettings_workflowChannels__mIy5l\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"channelsContainer\":\"FieldsetContainer_channelsContainer___vj9c\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"row\":\"PreferenceSettingsToggles_row__ZKxQT\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"Tabs_container__s7UYm\",\"header\":\"Tabs_header__ENuIE\",\"titleContainer\":\"Tabs_titleContainer__VlDsW\",\"loadingContainer\":\"Tabs_loadingContainer__Ewtc2\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"header\":\"Collapsible_header__CmhJq\",\"headerLeft\":\"Collapsible_headerLeft__Xh00n\",\"prefixContainer\":\"Collapsible_prefixContainer__AVHUT\",\"prefixRotated\":\"Collapsible_prefixRotated__bjKLn\",\"suffixContainer\":\"Collapsible_suffixContainer__uZ1IW\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"Pill_container__FoIEg\",\"small\":\"Pill_small__zCILo\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"Toggle_root__H_bcP\",\"thumb\":\"Toggle_thumb__6mKWE\",\"label\":\"Toggle_label__FQD4J\",\"container\":\"Toggle_container__Hmm6V\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"_error_container__vJFnH\",\"withFullWidth\":\"_error_withFullWidth__VEzYc\",\"title\":\"_error_title__oLWAK\",\"goBack\":\"_error_goBack__U4WNd\",\"reportBug\":\"_error_reportBug__tsKmR\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"pageContainer\":\"index_pageContainer__Pxtn3\",\"loadingContainer\":\"index_loadingContainer__WEZFc\",\"flow\":\"index_flow__rCTR5\",\"flowItem\":\"index_flowItem__GnXWz\",\"additionalVerticalGap\":\"index_additionalVerticalGap__nzYz6\",\"fullWidth\":\"index_fullWidth__1n4ux\"};"],"names":["_path","_extends","Object","assign","bind","n","e","arguments","length","t","r","hasOwnProperty","call","apply","props","width","height","viewBox","fill","xmlns","d","fillRule","clipRule","window","__NEXT_P","push","router","useRouter","useEffect","asPath","replace","getLoginNavigationUrl","WrappedComponent","useState","isReady","setIsReady","isLoggedIn","RedirectToLoginPage","url","image","imageAlt","imageHeight","imageWidth","openGraph","description","rest","openGraphParams","images","alt","params","truncateString","NextSeo","CollapsibleDirection","isDefaultOpen","prefix","title","suffix","children","shouldRotatePrefixOnToggle","shouldOpen","onOpenChange","direction","Left","isOpen","setIsOpen","CollapsiblePrimitive","open","asChild","div","className","styles","onClick","preValue","classNames","preventDefault","stopPropagation","PillSize","size","MEDIUM","SMALL","statusCode","hasFullWidth","useTranslation","h1","Button","document","referrer","back","p","Link","href","variant","LinkVariant","SENTRY_ENABLED","env","NEXT_PUBLIC_CLIENT_SENTRY_ENABLED","logErrorToSentry","error","options","Sentry","scope","metadata","setContext","getUserIdCookie","setUser","id","transactionName","setTransactionName","console","HeadlessServiceContext","createContext","HeadlessServiceStatus","HeadlessServiceProvider","INITIALIZING","status","setStatus","setError","headlessService","useMemo","HeadlessService","backendUrl","process","NEXT_PUBLIC_NOVU_BACKEND_URL","socketUrl","NEXT_PUBLIC_NOVU_SOCKET_URL","subscriberId","subscriberHash","getNotificationSubscriberHashCookie","applicationIdentifier","NEXT_PUBLIC_NOVU_APP_ID","initializeSession","listener","onSuccess","READY","onError","err","ERROR","value","Provider","useHeadlessService","useContext","isMutating","setIsMutating","mutate","useCallback","messageIds","markNotificationsAsSeen","messageId","isLoading","dispatch","useDispatch","useMarkNotificationAsSeen","loadedPages","useSelector","selectLoadedNotificationsPages","areArraysEqual","isFetchingNotifications","selectNotificationsIsFetching","fetch","shouldMarkAsSeenOnSuccess","page","shouldResetOldData","includes","fetchNotifications","query","limit","isFetching","data","type","setNotificationsPageAndFinishLoading","payload","setNotificationsLoading","loading","fetching","response","map","message","_id","markNotificationAsSeen","fetchUnseenCount","count","setUnseenCount","listenUnseenCountChange","NotificationContext","NotificationsProviderInner","useInitializeUnseenCount","useFetchNotifications","NotificationsProvider","templateId","toast","useToast","enabled","channel","updateUserPreferences","checked","channelType","ToastStatus","fieldset","legend","disabled","required","defaultChecked","label","name","onChange","htmlFor","RadixToggle","undefined","onCheckedChange","preference","onToggle","hasGlobalPreference","mutatingChannel","Toggle","Spinner","FieldsetContainer","keys","channels","channelName","useUpdateUserPreferences","template","preferenceState","setPreferenceState","setMutatingChannel","isChecked","logValueChange","UpdateUserPreferences","prev","newState","workflowChannels","reduce","acc","currentValue","Collapsible","ChevronDownIcon","logEvent","PreferenceSettingsToggles","userPreferences","setUserPreferences","handlers","fetchGetUserPreferences","fetchGlobalSettings","fetchUserGlobalPreferences","fetchUserPreferences","useFetchUserPreferences","preferences","setPreferences","groupByTags","groupBy","filter","critical","tags","isFetchingUserPreferences","parentStyles","SpinnerSize","Error","tag","tagPreferences","Pill","CollapsibleWorkflowSettings","CategoriesSettingsTab","withAuth","lang","navigationUrl","getNotificationSettingsNavigationUrl","isProduction","NEXT_PUBLIC_VERCEL_ENV","NextSeoWrapper","canonical","getCanonicalUrl","languageAlternates","getLanguageAlternates","nofollow","noindex","layoutStyles","NotificationSettingsTabs","rawString","characters","split","shortenedText","index","character","stripHTMLTags","slugifiedCollectionIdToCollectionId","slugifiedCollectionId","splits","module","exports"],"sourceRoot":""}