提交 6a041bd9 编写于 作者: K kieferrm

limit experiments to first time users; fixes #14009

上级 37c04d7d
......@@ -18,7 +18,9 @@ export interface ITelemetryInfo {
}
export interface ITelemetryExperiments {
showDefaultViewlet: boolean;
showCommandsWatermark: boolean;
openUntitledFile: boolean;
}
export interface ITelemetryService {
......@@ -39,7 +41,9 @@ export interface ITelemetryService {
}
export const defaultExperiments: ITelemetryExperiments = {
showDefaultViewlet: false,
showCommandsWatermark: false,
openUntitledFile: true
};
export const NullTelemetryService = {
......@@ -62,15 +66,31 @@ export const NullTelemetryService = {
};
export function loadExperiments(storageService: IStorageService, configurationService: IConfigurationService): ITelemetryExperiments {
const key = 'experiments.randomness';
let valueString = storageService.get(key);
if (!valueString) {
valueString = Math.random().toString();
storageService.store(key, valueString);
}
const value = parseFloat(valueString);
const random0 = parseFloat(valueString);
let [random1, showDefaultViewlet] = splitRandom(random0);
const [random2, showCommandsWatermark] = splitRandom(random1);
let [, openUntitledFile] = splitRandom(random2);
// is the user a first time user?
let isNewSession = storageService.get('telemetry.lastSessionDate') ? false : true;
if (!isNewSession) {
// for returning users we fall back to the default configuration for the sidebar and the initially opened, empty editor
showDefaultViewlet = defaultExperiments.showDefaultViewlet;
openUntitledFile = defaultExperiments.openUntitledFile;
}
return applyOverrides(configurationService, {
showCommandsWatermark: value < 0.5
showDefaultViewlet,
showCommandsWatermark,
openUntitledFile
});
}
......@@ -85,6 +105,12 @@ export function applyOverrides(configurationService: IConfigurationService, expe
return experiments;
}
function splitRandom(random: number): [number, boolean] {
const scaled = random * 2;
const i = Math.floor(scaled);
return [scaled - i, i === 1];
}
export interface ITelemetryAppender {
log(eventName: string, data: any): void;
}
......
......@@ -326,7 +326,8 @@ export class Workbench implements IPartService {
}
// Empty workbench
else if (!this.workbenchParams.workspace) {
else if (!this.workbenchParams.workspace && this.telemetryService.getExperiments().openUntitledFile) {
// some first time users will not have an untiled file; returning users will always have one
return TPromise.as([{ input: this.untitledEditorService.createOrGet() }]);
}
......@@ -428,7 +429,8 @@ export class Workbench implements IPartService {
// Sidebar visibility
this.sideBarHidden = this.storageService.getBoolean(Workbench.sidebarHiddenSettingKey, StorageScope.WORKSPACE, false);
if (!this.contextService.getWorkspace()) {
this.sideBarHidden = true; // we hide sidebar in single-file-mode
// some first time users will see a sidebar; returning users will not see the sidebar
this.sideBarHidden = !this.telemetryService.getExperiments().showDefaultViewlet;
}
const viewletRegistry = Registry.as<ViewletRegistry>(ViewletExtensions.Viewlets);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册