gristlabs_grist-core/app/common/Prefs.ts
George Gevoian ad1b4f3cff (core) Record new user sign-ups
Summary:
Adds Google Tag Manager snippet to all login pages, and a new user
preference, recordSignUpEvent, that's set to true on first sign-in. The
client now checks for this preference, and if true, dynamically loads
Google Tag Manager to record a sign-up event. Afterwards, it removes
the preference.

Test Plan: Tested manually.

Reviewers: dsagal

Reviewed By: dsagal

Subscribers: dsagal

Differential Revision: https://phab.getgrist.com/D3319
2022-03-12 14:34:46 -08:00

44 lines
1.8 KiB
TypeScript

import {StringUnion} from 'app/common/StringUnion';
export const SortPref = StringUnion("name", "date");
export type SortPref = typeof SortPref.type;
export const ViewPref = StringUnion("list", "icons");
export type ViewPref = typeof ViewPref.type;
// A collection of preferences related to a user or org (or combination).
export interface Prefs {
// A dummy field used only in tests.
placeholder?: string;
}
// A collection of preferences related to a user or org (or combination).
export interface UserPrefs extends Prefs {
// Whether to ask the user to fill out a form about their use-case, on opening the DocMenu page.
// Set to true on first login, then reset when the form is closed, so that it only shows once.
showNewUserQuestions?: boolean;
// Whether to record a new sign-up event via Google Tag Manager. Set to true on first login, then
// reset on first page load (after the event is sent), so that it's only recorded once.
recordSignUpEvent?: boolean;
}
export interface UserOrgPrefs extends Prefs {
docMenuSort?: SortPref;
docMenuView?: ViewPref;
// List of example docs that the user has seen and dismissed the welcome card for.
// The numbers are the `id` from IExampleInfo in app/client/ui/ExampleInfo.
// By living in UserOrgPrefs, this applies only to the examples-containing org.
seenExamples?: number[];
// Whether the user should see the onboarding tour of Grist. False by default, since existing
// users should not see it. New users get this set to true when the user is created. This
// applies to the personal org only; the tour is currently only shown there.
showGristTour?: boolean;
// List of document IDs where the user has seen and dismissed the document tour.
seenDocTours?: string[];
}
export type OrgPrefs = Prefs;