diff --git a/components/dashboard/src/settings/Notifications.tsx b/components/dashboard/src/settings/Notifications.tsx index 2db1994e39c754..8b03b5aea7c189 100644 --- a/components/dashboard/src/settings/Notifications.tsx +++ b/components/dashboard/src/settings/Notifications.tsx @@ -13,9 +13,32 @@ import settingsMenu from "./settings-menu"; export default function Notifications() { const { user, setUser } = useContext(UserContext); + const [isOnboardingMail, setOnboardingMail] = useState(!!user?.additionalData?.emailNotificationSettings?.allowsOnboardingMail); const [isChangelogMail, setChangelogMail] = useState(!!user?.additionalData?.emailNotificationSettings?.allowsChangelogMail); const [isDevXMail, setDevXMail] = useState(!!user?.additionalData?.emailNotificationSettings?.allowsDevXMail); + const toggleOnboardingMail = async () => { + if (user && user.additionalData && user.additionalData.emailNotificationSettings) { + const newIsOnboardingMail = !isOnboardingMail; + user.additionalData.emailNotificationSettings.allowsOnboardingMail = newIsOnboardingMail; + await getGitpodService().server.updateLoggedInUser({ + additionalData: { + ...user.additionalData, + emailNotificationSettings: { + ...user.additionalData.emailNotificationSettings, + allowsOnboardingMail: newIsOnboardingMail + } + } + }); + await getGitpodService().server.trackEvent({ + event: "notification_change", + properties: { "unsubscribed_onboarding": !newIsOnboardingMail } + }) + setUser(user); + setOnboardingMail(newIsOnboardingMail); + } + } + const toggleChangelogMail = async () => { if (user && user.additionalData && user.additionalData.emailNotificationSettings) { const newIsChangelogMail = !isChangelogMail; @@ -69,6 +92,11 @@ export default function Notifications() { desc="Receive essential emails about changes to your account" checked={true} disabled={true} /> +