Skip to content

Commit 44ce1c8

Browse files
committed
chore: update insider status
1 parent 91e3109 commit 44ce1c8

File tree

1 file changed

+59
-34
lines changed

1 file changed

+59
-34
lines changed

extensions/vscode/src/common.ts

Lines changed: 59 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -97,43 +97,68 @@ async function doActivate(context: vscode.ExtensionContext, createLc: CreateLang
9797
hybridModeStatus.severity = vscode.LanguageStatusSeverity.Warning;
9898
}
9999

100+
const item = vscode.languages.createLanguageStatusItem('vue-insider', 'vue');
100101
if (!context.extension.packageJSON.version.includes('-insider')) {
101-
const createLanguageStatus = () => {
102-
const item = vscode.languages.createLanguageStatusItem('vue-upgrade', 'vue');
103-
item.text = '✨ Upgrade Vue - Official';
104-
item.severity = vscode.LanguageStatusSeverity.Warning;
105-
item.command = {
106-
title: 'Open Link',
107-
command: 'vscode.open',
108-
arguments: ['https://github.com/vuejs/language-tools/discussions/4127'],
109-
};
102+
item.text = '✨ Get Vue - Official Insiders';
103+
item.severity = vscode.LanguageStatusSeverity.Warning;
104+
item.command = {
105+
title: 'More Info',
106+
command: 'vscode.open',
107+
arguments: ['https://github.com/vuejs/language-tools/wiki/Get-Insiders'],
110108
};
111-
const yyyymmdd = new Date().toISOString().split('T')[0].replace(/-/g, '');
112-
if (context.globalState.get('vue-upgrade-promote-date') !== yyyymmdd) {
113-
context.globalState.update('vue-upgrade-promote-date', yyyymmdd);
114-
let s = 10;
115-
const upgradeStatus = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right, 10000);
116-
const interval = setInterval(() => {
117-
s--;
118-
upgradeStatus.text = `✨ Upgrade Vue - Official (${s})`;
119-
if (s <= 0) {
120-
upgradeStatus.dispose();
121-
clearInterval(interval);
122-
createLanguageStatus();
109+
}
110+
else {
111+
const versionsUrl = 'https://cdn.jsdelivr.net/gh/vuejs/language-tools/insiders.json';
112+
item.text = '🚀 Vue - Official Insiders';
113+
item.detail = 'Installed';
114+
item.busy = true;
115+
const currentVersion = context.extension.packageJSON.version;
116+
fetch(versionsUrl)
117+
.then(res => res.json())
118+
.then(({ versions }: { versions: { version: string; date: string; }[]; }) => {
119+
item.command = {
120+
title: 'Select Version',
121+
command: 'vue-insiders.selectVersion',
122+
arguments: [{ versions }],
123+
};
124+
if (versions.length && versions[0].version !== currentVersion) {
125+
item.command.title = 'Update';
126+
item.detail = 'New version available';
127+
item.severity = vscode.LanguageStatusSeverity.Warning;
123128
}
124-
}, 1000);
125-
upgradeStatus.text = `✨ Upgrade Vue - Official (${s})`;
126-
upgradeStatus.color = '#ebb549';
127-
upgradeStatus.command = {
128-
title: 'Open Link',
129-
command: 'vscode.open',
130-
arguments: ['https://github.com/vuejs/language-tools/discussions/4127'],
131-
};
132-
upgradeStatus.show();
133-
}
134-
else {
135-
createLanguageStatus();
136-
}
129+
})
130+
.catch(() => {
131+
item.detail = 'Failed to fetch versions';
132+
})
133+
.finally(() => {
134+
item.busy = false;
135+
});
136+
vscode.commands.registerCommand('vue-insiders.selectVersion', async ({ versions }: { versions: { version: string; date: string; }[]; }) => {
137+
const items = versions.map<vscode.QuickPickItem>(version => ({
138+
label: version.version,
139+
description: version.date + (version.version === currentVersion ? ' (current)' : ''),
140+
}));
141+
if (!items.some(item => item.description?.endsWith('(current)'))) {
142+
items.push({
143+
label: '',
144+
kind: vscode.QuickPickItemKind.Separator,
145+
}, {
146+
label: currentVersion,
147+
description: '(current)',
148+
});
149+
}
150+
const selected = await vscode.window.showQuickPick(
151+
items,
152+
{
153+
canPickMany: false,
154+
placeHolder: 'Select a version',
155+
});
156+
if (!selected || selected.label === currentVersion) {
157+
return;
158+
}
159+
const updateUrl = `https://github.com/volarjs/insiders/releases/tag/v${selected.label}`;
160+
vscode.env.openExternal(vscode.Uri.parse(updateUrl));
161+
});
137162
}
138163

139164
async function requestReloadVscode(msg: string) {

0 commit comments

Comments
 (0)