Skip to content

Commit 8aab84e

Browse files
Laurie T. Malauroboquat
authored andcommitted
[dashboard] Allow onboarding mail
Fixes #5327
1 parent 498cd69 commit 8aab84e

File tree

3 files changed

+30
-1
lines changed

3 files changed

+30
-1
lines changed

components/dashboard/src/settings/Notifications.tsx

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,32 @@ import settingsMenu from "./settings-menu";
1313

1414
export default function Notifications() {
1515
const { user, setUser } = useContext(UserContext);
16+
const [isOnboardingMail, setOnboardingMail] = useState(!!user?.additionalData?.emailNotificationSettings?.allowsOnboardingMail);
1617
const [isChangelogMail, setChangelogMail] = useState(!!user?.additionalData?.emailNotificationSettings?.allowsChangelogMail);
1718
const [isDevXMail, setDevXMail] = useState(!!user?.additionalData?.emailNotificationSettings?.allowsDevXMail);
1819

20+
const toggleOnboardingMail = async () => {
21+
if (user && user.additionalData && user.additionalData.emailNotificationSettings) {
22+
const newIsOnboardingMail = !isOnboardingMail;
23+
user.additionalData.emailNotificationSettings.allowsOnboardingMail = newIsOnboardingMail;
24+
await getGitpodService().server.updateLoggedInUser({
25+
additionalData: {
26+
...user.additionalData,
27+
emailNotificationSettings: {
28+
...user.additionalData.emailNotificationSettings,
29+
allowsOnboardingMail: newIsOnboardingMail
30+
}
31+
}
32+
});
33+
await getGitpodService().server.trackEvent({
34+
event: "notification_change",
35+
properties: { "unsubscribed_onboarding": !newIsOnboardingMail }
36+
})
37+
setUser(user);
38+
setOnboardingMail(newIsOnboardingMail);
39+
}
40+
}
41+
1942
const toggleChangelogMail = async () => {
2043
if (user && user.additionalData && user.additionalData.emailNotificationSettings) {
2144
const newIsChangelogMail = !isChangelogMail;
@@ -69,6 +92,11 @@ export default function Notifications() {
6992
desc="Receive essential emails about changes to your account"
7093
checked={true}
7194
disabled={true} />
95+
<CheckBox
96+
title="Onboarding guide"
97+
desc="In the first weeks after you sign up, we'll guide you through the product, so you can get the most out of it"
98+
checked={isOnboardingMail}
99+
onChange={toggleOnboardingMail} />
72100
<CheckBox
73101
title="Changelog"
74102
desc="Be the first to learn about new features and overall product improvements"

components/gitpod-db/src/typeorm/user-db-impl.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ export class TypeORMUserDBImpl implements UserDB {
7979
identities: [],
8080
additionalData: {
8181
ideSettings: { defaultIde: 'code' },
82-
emailNotificationSettings: { allowsChangelogMail: true, allowsDevXMail: true }
82+
emailNotificationSettings: { allowsChangelogMail: true, allowsDevXMail: true, allowsOnboardingMail: true }
8383
},
8484
};
8585
await this.storeUser(user);

components/gitpod-protocol/src/protocol.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ export interface AdditionalUserData {
109109
export interface EmailNotificationSettings {
110110
allowsChangelogMail?: boolean;
111111
allowsDevXMail?: boolean;
112+
allowsOnboardingMail?: boolean;
112113
}
113114

114115
export type IDESettings = {

0 commit comments

Comments
 (0)