Skip to content

Commit 35b45ab

Browse files
authored
perf: cache exp result for not-started experiment (#711)
Signed-off-by: Yan Zhang <[email protected]>
1 parent 9b1fdba commit 35b45ab

File tree

2 files changed

+14
-10
lines changed

2 files changed

+14
-10
lines changed

src/utils/walkthrough.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,15 @@ import { workspace } from "vscode";
55
import { getExpService } from "../exp";
66
import { TreatmentVariables } from "../exp/TreatmentVariables";
77

8-
export function isWalkthroughEnabled() {
9-
10-
const fromExp = getExpService()?.getTreatmentVariableAsync<boolean>(TreatmentVariables.VSCodeConfig, TreatmentVariables.JavaWalkthroughEnabled, true /* checkCache */) ?? false;
11-
// can be overridden by local settings "experiments.override.gettingStarted.overrideCategory.vscjava.vscode-java-pack#javaWelcome.when": "true"
12-
const fromSettings = workspace.getConfiguration("experiments.override.gettingStarted.overrideCategory").get<string>("vscjava.vscode-java-pack#javaWelcome.when") === "true";
8+
// local cache before EXP starts, otherwise it always returns undefined, and keeps querying service.
9+
let fromExpCache: boolean;
10+
export async function isWalkthroughEnabled() {
11+
const fromExp = fromExpCache ?? await getExpService()?.getTreatmentVariableAsync<boolean>(TreatmentVariables.VSCodeConfig, TreatmentVariables.JavaWalkthroughEnabled, true /* checkCache */) ?? false;
12+
fromExpCache = fromExp;
13+
14+
// can be overridden by local settings "experiments.override.gettingStarted.overrideCategory.vscjava.vscode-java-pack.javaWelcome.when": "true"
15+
// '#' -> '.' since https://github.com/microsoft/vscode/commit/fe671f300845ca5161885125b1e12d43fc25ccf8
16+
const fromSettings = workspace.getConfiguration("experiments.override.gettingStarted.overrideCategory").get<string>("vscjava.vscode-java-pack.javaWelcome.when") === "true";
1317

1418
return fromExp || fromSettings;
15-
}
19+
}

src/welcome/index.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,8 @@ const setFirstTimeRun = (context: vscode.ExtensionContext, firstTimeRun: boolean
8686
context.globalState.update(KEY_IS_WELCOME_PAGE_VIEWED, !firstTimeRun);
8787
};
8888

89-
const fetchInitProps = (context: vscode.ExtensionContext) => {
90-
const walkthrough = isWalkthroughEnabled();
89+
const fetchInitProps = async (context: vscode.ExtensionContext) => {
90+
const walkthrough = await isWalkthroughEnabled();
9191
welcomeView?.webview.postMessage({
9292
command: "onDidFetchInitProps",
9393
props: {
@@ -99,8 +99,8 @@ const fetchInitProps = (context: vscode.ExtensionContext) => {
9999
setFirstTimeRun(context, false);
100100
};
101101

102-
const showTourPage = (context: vscode.ExtensionContext) => {
103-
const walkthrough = isWalkthroughEnabled();
102+
const showTourPage = async (context: vscode.ExtensionContext) => {
103+
const walkthrough = await isWalkthroughEnabled();
104104
welcomeView?.webview.postMessage({
105105
command: "onDidFetchInitProps",
106106
props: {

0 commit comments

Comments
 (0)