diff --git a/src/common/extensionVersionService.ts b/src/common/extensionVersionService.ts deleted file mode 100644 index 9977550..0000000 --- a/src/common/extensionVersionService.ts +++ /dev/null @@ -1,84 +0,0 @@ -import * as https from 'https'; -import * as vscode from 'vscode'; -import {Version} from './version'; -import * as utils from './utilities'; - -export type LatestPublishedVersionCheckResult = {latestPublishedVersion: string, timestamp: number}; - -export class ExtensionVersionService { - private static _extensionId: string = '8d837914-d8fa-45b5-965d-f76ebd6dbf5c'; - private static _getLatestPublishedVersionPromise: Promise = null; - private _memento: vscode.Memento; - - private static getExtensionMetadataFromVSCodeMarketplace(): Promise { - return new Promise((resolve, reject) =>{ - let postData: string = `{ filters: [{ criteria: [{ filterType: 4, value: "${ExtensionVersionService._extensionId}" }] }], flags: 262 }`; - - let request = https.request({ - hostname: 'marketplace.visualstudio.com', - path: '/_apis/public/gallery/extensionquery', - method: 'POST', - headers: { - 'Accept': 'application/json;api-version=2.2-preview.1', - 'Content-Type': 'application/json', - 'Transfer-Encoding': 'chunked', - 'Content-Length': Buffer.byteLength(postData) - } - }, response => { - if (response.statusCode != 200) { - reject(`Unable to download data from Visual Studio Marketplace. Status code: ${response.statusCode}`); - return; - } - let body = ''; - response.on('data', chunk => { - body += chunk; - }); - response.on('end', () => { - let bodyObj = JSON.parse(body); - if (bodyObj.results[0].extensions[0].extensionId == ExtensionVersionService._extensionId) { - let latestPublishedVersion = bodyObj.results[0].extensions[0].versions[0].version; - resolve({ latestPublishedVersion: latestPublishedVersion, timestamp: Date.now() }); - } - }); - }); - - request.on('error', (e) => { - reject(e); - }); - - request.end(postData); - }); - } - - constructor(context: vscode.Memento) { - this._memento = context; - } - - public get latestPublishedVersion(): Promise { - if (ExtensionVersionService._getLatestPublishedVersionPromise) { - return ExtensionVersionService._getLatestPublishedVersionPromise.then(result => Version.parse(result.latestPublishedVersion) ); - } - - // Check the cache for extension version information - let cachedResult: LatestPublishedVersionCheckResult = this._memento.get('LatestPublishedExtensionVersion'); - if (cachedResult && cachedResult.timestamp > Date.now() - 24 * 60 * 60 * 1000) { // Version is cached for a day - ExtensionVersionService._getLatestPublishedVersionPromise = Promise.resolve(cachedResult); - } - else { - ExtensionVersionService._getLatestPublishedVersionPromise = ExtensionVersionService.getExtensionMetadataFromVSCodeMarketplace().then((result: LatestPublishedVersionCheckResult) => { - this._memento.update('LatestPublishedExtensionVersion', result); // save in cache - return result; - }); - } - return ExtensionVersionService._getLatestPublishedVersionPromise.then(result => Version.parse(result.latestPublishedVersion)); - } - - public get isLatestInstalled(): Promise<{ result: boolean, error: string }> { - return this.latestPublishedVersion.then(latestVersion => { - let extensionVersion = utils.getInstalledExtensionVersion(); - let isLatest: boolean = extensionVersion.compareBySubminorTo(latestVersion) >= 0; - let error = isLatest ? null : `A new version of the NativeScript extension is available. Open "Extensions" panel to update to v${latestVersion}. Don't forget to regenerate your launch.json file after updating.`; - return {result: isLatest, error: error}; - }); - } -} \ No newline at end of file diff --git a/src/main.ts b/src/main.ts index 4eb9b40..26c869d 100644 --- a/src/main.ts +++ b/src/main.ts @@ -13,13 +13,6 @@ export function activate(context: vscode.ExtensionContext) { Services.extensionServer().start(); Services.analyticsService().initialize(); - // Check for newer extension version - Services.extensionVersionService().isLatestInstalled.then(result => { - if (!result.result) { - vscode.window.showWarningMessage(result.error); - } - }); - // Check if NativeScript CLI is installed globally and if it is compatible with the extension version let cliVersion = Services.cli().version; if (!cliVersion.isCompatible) { diff --git a/src/services/extensionHostServices.ts b/src/services/extensionHostServices.ts index 7885918..855c5b2 100644 --- a/src/services/extensionHostServices.ts +++ b/src/services/extensionHostServices.ts @@ -1,6 +1,5 @@ import * as vscode from 'vscode'; import {Services as BaseServices} from './services'; -import {ExtensionVersionService} from '../common/extensionVersionService'; import {ExtensionServer} from '../ipc/extensionServer'; import {AnalyticsService} from '../analytics/analyticsService'; import {WorkspaceConfigService} from '../common/workspaceConfigService'; @@ -9,7 +8,6 @@ export class ExtensionHostServices extends BaseServices { private _globalState: vscode.Memento; private _workspaceConfigService: WorkspaceConfigService; - private _extensionVersionService: ExtensionVersionService; private _extensionServer: ExtensionServer; private _analyticsService: AnalyticsService; @@ -22,14 +20,6 @@ export class ExtensionHostServices extends BaseServices { return this._workspaceConfigService; } - public extensionVersionService(): ExtensionVersionService { - if (!this._extensionVersionService && !this._globalState) { - throw new Error("Global state has no value."); - } - this._extensionVersionService = this._extensionVersionService || new ExtensionVersionService(this.globalState); - return this._extensionVersionService; - } - public extensionServer(): ExtensionServer { this._extensionServer = this._extensionServer || new ExtensionServer(); return this._extensionServer;