diff --git a/services/web/frontend/js/features/project-list/components/notifications/user-notifications.tsx b/services/web/frontend/js/features/project-list/components/notifications/user-notifications.tsx index 8d826c6197..39cb727c56 100644 --- a/services/web/frontend/js/features/project-list/components/notifications/user-notifications.tsx +++ b/services/web/frontend/js/features/project-list/components/notifications/user-notifications.tsx @@ -1,4 +1,4 @@ -import { JSXElementConstructor } from 'react' +import { JSXElementConstructor, useState } from 'react' import Common from './groups/common' import Institution from './groups/institution' import ConfirmEmail from './groups/confirm-email' @@ -10,6 +10,13 @@ import LATAMBanner from './ads/latam-banner' import getMeta from '../../../../utils/meta' import importOverleafModules from '../../../../../macros/import-overleaf-module.macro' import BackToSchoolModal from './ads/back-to-school-modal' +import customLocalStorage from '../../../../infrastructure/local-storage' +import { sendMB } from '../../../../infrastructure/event-tracking' + +const isChromium = () => + (window.navigator as any).userAgentData?.brands?.some( + (item: { brand: string }) => item.brand === 'Chromium' + ) type Subscription = { groupId: string @@ -41,6 +48,24 @@ function UserNotifications() { ) const showLATAMBanner = getMeta('ol-showLATAMBanner', false) + // Temporary workaround to prevent also showing groups/enterprise banner + const [showWritefull, setShowWritefull] = useState(() => { + if (isChromium()) { + const show = + getMeta('ol-showWritefullPromoBanner') && + !customLocalStorage.getItem('has_dismissed_writefull_promo_banner') + if (show) { + sendMB('promo-prompt', { + location: 'dashboard-banner', + page: '/project', + name: 'writefull', + }) + } + return show + } + }) + const [dismissedWritefull, setDismissedWritefull] = useState(false) + return (
diff --git a/services/web/frontend/js/features/project-list/components/notifications/writefull-promo-banner.tsx b/services/web/frontend/js/features/project-list/components/notifications/writefull-promo-banner.tsx index 079e643905..32b9a65ebc 100644 --- a/services/web/frontend/js/features/project-list/components/notifications/writefull-promo-banner.tsx +++ b/services/web/frontend/js/features/project-list/components/notifications/writefull-promo-banner.tsx @@ -1,53 +1,41 @@ -import { memo, useCallback, useState } from 'react' +import { memo, useCallback } from 'react' import Notification from './notification' import { sendMB } from '../../../../infrastructure/event-tracking' -import getMeta from '../../../../utils/meta' import customLocalStorage from '../../../../infrastructure/local-storage' -const STORAGE_KEY = 'has_dismissed_writefull_promo_banner' - const eventSegmentation = { location: 'dashboard-banner', page: '/project', name: 'writefull', } -const isChromium = () => - (window.navigator as any).userAgentData?.brands?.some( - (item: { brand: string }) => item.brand === 'Chromium' - ) - -function WritefullPromoBanner() { - const [show, setShow] = useState(() => { - const show = - getMeta('ol-showWritefullPromoBanner') && - !customLocalStorage.getItem(STORAGE_KEY) - - if (show) { - sendMB('promo-prompt', eventSegmentation) - } - - return show - }) - +function WritefullPromoBanner({ + show, + setShow, + onDismiss, +}: { + show: boolean + setShow: (value: boolean) => void + onDismiss: () => void +}) { const handleOpenLink = useCallback(() => { sendMB('promo-click', eventSegmentation) }, []) const handleClose = useCallback(() => { - customLocalStorage.setItem(STORAGE_KEY, new Date()) + customLocalStorage.setItem( + 'has_dismissed_writefull_promo_banner', + new Date() + ) setShow(false) sendMB('promo-dismiss', eventSegmentation) - }, []) + onDismiss() + }, [setShow, onDismiss]) if (!show) { return null } - if (!isChromium()) { - return null - } - return (