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 (
@@ -56,6 +81,10 @@ function UserNotifications() {
+ {!showLATAMBanner &&
+ !showInrGeoBanner &&
+ !showWritefull &&
+ !dismissedWritefull && }
{showLATAMBanner ? (
) : showInrGeoBanner ? (
@@ -63,13 +92,17 @@ function UserNotifications() {
variant={inrGeoBannerVariant}
splitTestName={inrGeoBannerSplitTestName}
/>
- ) : (
-
- )}
+ ) : null}
{showBackToSchoolModal ? (
) : (
-
+ {
+ setDismissedWritefull(true)
+ }}
+ />
)}
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 (