可以显示VSCode扩展名/颜色主题通知的用户吗?

时间:2019-02-26 04:13:19

标签: visual-studio-code notifications vscode-extensions

是否可以在Visual Studio Code中向您的扩展程序或颜色主题通知的用户显示?对于安装了我的颜色主题或扩展程序并正在获取更新的用户,我想在此人更新扩展程序后向其显示通知(可能是在VSCode启动时,或者在他们进入市场进行更新和重新加载扩展程序和客户端本身。)

例如:如果他们在更新扩展信息后看到一条提示“反馈?建议?已修复? OR ,通知他们主题发生了一些不利变化。因此,他们可以根据需要“退出”该更改(例如在某物周围设置额外的边框或某物的颜色变化。)

显然,所有关闭通知的人都不会受到影响,但是我认为在罕见的更新后偶尔发出通知不会太糟糕。我还无法找到有关是否可行的信息,以及如何实现的信息。对此任何信息表示赞赏。而且,如果有可能,无论您是否这样做,阅读本文的人都建议您以这种方式向主题用户显示通知吗?

谢谢:)

2 个答案:

答案 0 :(得分:0)

我认为您可以在激活事件期间注册版本,并在每次激活时进行检查。然后,您可以做任何您想做的事。例如,GitLens正在迁移设置https://github.com/eamodio/vscode-gitlens/blob/master/src/extension.ts#L52,我很确定我记得他们正在打开通知(但是我没有立即在代码中找到)

致谢

答案 1 :(得分:0)

每当您的扩展程序更新时,在右下角显示通知。您还可以控制只显示主要/次要版本。

它是这样的: enter image description here

将以下代码添加到 extension.ts

import { window, ExtensionContext, extensions, env, Uri } from "vscode";

const extensionId = "jerrygoyal.shortcut-menu-bar";

// this method is called when your extension is activated
export function activate(context: ExtensionContext) {
  showWhatsNew(context); // show notification in case of a major release i.e. 1.0.0 -> 2.0.0
}

// https://stackoverflow.com/a/66303259/3073272
function isMajorUpdate(previousVersion: string, currentVersion: string) {
  // rain-check for malformed string
  if (previousVersion.indexOf(".") === -1) {
    return true;
  }
  //returns int array [1,1,1] i.e. [major,minor,patch]
  var previousVerArr = previousVersion.split(".").map(Number);
  var currentVerArr = currentVersion.split(".").map(Number);

  if (currentVerArr[0] > previousVerArr[0]) {
    return true;
  } else {
    return false;
  }
}

async function showWhatsNew(context: ExtensionContext) {
  const previousVersion = context.globalState.get<string>(extensionId);
  const currentVersion = extensions.getExtension(extensionId)!.packageJSON
    .version;

  // store latest version
  context.globalState.update(extensionId, currentVersion);

  if (
    previousVersion === undefined ||
    isMajorUpdate(previousVersion, currentVersion)
  ) {
    // show whats new notificatin:
    const actions = [{ title: "See how" }];

    const result = await window.showInformationMessage(
      `Shortcut Menubar v${currentVersion} — Add your own buttons!`,
      ...actions
    );

    if (result !== null) {
      if (result === actions[0]) {
        await env.openExternal(
          Uri.parse(
            "https://github.com/GorvGoyl/Shortcut-Menu-Bar-VSCode-Extension#create-buttons-with-custom-commands"
          )
        );
      }
    }
  }
}

你可以在我的 VSCode 扩展仓库中看到这个实现 Shortcut Menu Bar