Skip to content

Commit

Permalink
Show a "What's new?" teaser after installation (once)
Browse files Browse the repository at this point in the history
  • Loading branch information
Rpinski committed Sep 9, 2024
1 parent 51b591c commit 0515168
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 0 deletions.
3 changes: 3 additions & 0 deletions src/extension.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,16 @@ import * as vscode from "vscode";
import { registerShebangCompletionProviders } from "./createShebangCompletionProvider";
import OutputWindowLogger from "./OutputWindowLogger";
import { registerHandleSnippetCompletionCommand } from "./handleSnippetCompletionCommand";
import { showWhatsNewTeaserIfNeeded } from "./whatsNewTeaser";

export function activate(context: vscode.ExtensionContext) {
const logger = new OutputWindowLogger();
logger.writeLine("Shebang Snippets extension is active");

context.subscriptions.concat(registerShebangCompletionProviders(context));
context.subscriptions.push(registerHandleSnippetCompletionCommand(context));

showWhatsNewTeaserIfNeeded(context);
}

export function deactivate() {}
15 changes: 15 additions & 0 deletions src/settings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,18 @@ export function setLastShebang(
];
extensionContext.globalState.update("lastShebangs", newLastShebangs);
}

export function getLastExecutedVersion(
extensionContext: vscode.ExtensionContext
) {
return extensionContext.globalState.get<string>("lastExecutedVersion");
}

export function setLastExecutedVersion(
extensionContext: vscode.ExtensionContext
) {
extensionContext.globalState.update(
"lastExecutedVersion",
extensionContext.extension.packageJSON.version ?? ""
);
}
38 changes: 38 additions & 0 deletions src/whatsNewTeaser.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
import * as vscode from "vscode";
import { getLastExecutedVersion, setLastExecutedVersion } from "./settings";

export async function showWhatsNewTeaserIfNeeded(
extensionContext: vscode.ExtensionContext
) {
const currentVersion = extensionContext.extension.packageJSON.version;
if (
wasExtensionUpdatedSinceLastStart(extensionContext) &&
currentVersion === "1.0.0"
) {
const message = "Welcome to Shebang Snippets";
const versionInMessage =
currentVersion !== undefined ? ` ${currentVersion}` : "";
const result = await vscode.window.showInformationMessage(
`${message}${versionInMessage}!`,
"What's new?"
);
if (result === "What's new?") {
vscode.env.openExternal(
vscode.Uri.parse(
"https://github.com/Rpinski/vscode-shebang-snippets/blob/master/CHANGELOG.md"
)
);
}

setLastExecutedVersion(extensionContext);
}
}

function wasExtensionUpdatedSinceLastStart(
extensionContext: vscode.ExtensionContext
) {
return (
extensionContext.extension.packageJSON.version !==
getLastExecutedVersion(extensionContext)
);
}

0 comments on commit 0515168

Please sign in to comment.