From f15cb93e7b246561638c1364b5b67fb61188eed4 Mon Sep 17 00:00:00 2001 From: Kim-Adeline Miguel Date: Wed, 5 May 2021 15:53:42 -0700 Subject: [PATCH 1/2] Linting pass --- .eslintignore | 4 -- .../diagnostics/serviceRegistry.ts | 2 +- src/client/common/startPage/startPage.ts | 28 +++++++++--- src/client/common/startPage/types.ts | 45 +++++++++++++------ src/test/startPage/startPageIocContainer.ts | 40 +++++++++++++---- 5 files changed, 85 insertions(+), 34 deletions(-) diff --git a/.eslintignore b/.eslintignore index af90ee1bb139..18ef6e6d6d8e 100644 --- a/.eslintignore +++ b/.eslintignore @@ -521,8 +521,6 @@ src/client/common/nuget/types.ts src/client/common/nuget/nugetService.ts src/client/common/cancellation.ts src/client/common/interpreterPathService.ts -src/client/common/startPage/startPage.ts -src/client/common/startPage/types.ts src/client/common/startPage/startPageMessageListener.ts src/client/common/application/customEditorService.ts src/client/common/application/commands.ts @@ -629,7 +627,6 @@ src/client/application/serviceRegistry.ts src/client/application/diagnostics/surceMapSupportService.ts src/client/application/diagnostics/base.ts src/client/application/diagnostics/applicationDiagnostics.ts -src/client/application/diagnostics/serviceRegistry.ts src/client/application/diagnostics/filter.ts src/client/application/diagnostics/promptHandler.ts src/client/application/diagnostics/commands/base.ts @@ -664,7 +661,6 @@ src/startPage-ui/react-common/logger.ts src/startPage-ui/react-common/postOffice.ts src/startPage-ui/startPage/index.tsx src/startPage-ui/startPage/startPage.tsx -src/test/startPage/startPageIocContainer.ts src/test/startPage/mockCommandManager.ts src/test/startPage/mockDocument.ts src/test/startPage/mockDocumentManager.ts diff --git a/src/client/application/diagnostics/serviceRegistry.ts b/src/client/application/diagnostics/serviceRegistry.ts index 1a513ff9255a..850cbfd10a71 100644 --- a/src/client/application/diagnostics/serviceRegistry.ts +++ b/src/client/application/diagnostics/serviceRegistry.ts @@ -45,7 +45,7 @@ import { } from './promptHandler'; import { IDiagnosticFilterService, IDiagnosticHandlerService, IDiagnosticsService } from './types'; -export function registerTypes(serviceManager: IServiceManager, languageServerType: LanguageServerType) { +export function registerTypes(serviceManager: IServiceManager, languageServerType: LanguageServerType): void { serviceManager.addSingleton(IDiagnosticFilterService, DiagnosticFilterService); serviceManager.addSingleton>( IDiagnosticHandlerService, diff --git a/src/client/common/startPage/startPage.ts b/src/client/common/startPage/startPage.ts index d0cccf72d5b2..6fc3cbdcf012 100644 --- a/src/client/common/startPage/startPage.ts +++ b/src/client/common/startPage/startPage.ts @@ -1,5 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. + 'use strict'; import { inject, injectable } from 'inversify'; @@ -36,11 +37,17 @@ export const EXTENSION_VERSION_MEMENTO = 'extensionVersion'; export class StartPage extends WebviewPanelHost implements IStartPage, IExtensionSingleActivationService { protected closedEvent: EventEmitter = new EventEmitter(); + private timer: StopWatch; + private actionTaken = false; + private actionTakenOnFirstTime = false; + private firstTime = false; + private webviewDidLoad = false; + public initialMementoValue: string | undefined = undefined; constructor( @@ -103,6 +110,7 @@ export class StartPage extends WebviewPanelHost }, 3000); } + // eslint-disable-next-line class-methods-use-this public get owningResource(): Resource { return undefined; } @@ -119,18 +127,19 @@ export class StartPage extends WebviewPanelHost this.closedEvent.fire(this); } - public async onMessage(message: string, payload: any) { + public async onMessage(message: string, payload: unknown): Promise { switch (message) { case StartPageMessages.Started: this.webviewDidLoad = true; break; - case StartPageMessages.RequestShowAgainSetting: + case StartPageMessages.RequestShowAgainSetting: { const settings = this.configuration.getSettings(); await this.postMessage(StartPageMessages.SendSetting, { showAgainSetting: settings.showStartPage, }); break; - case StartPageMessages.OpenBlankNotebook: + } + case StartPageMessages.OpenBlankNotebook: { sendTelemetryEvent(Telemetry.StartPageOpenBlankNotebook); this.setTelemetryFlags(); @@ -146,7 +155,8 @@ export class StartPage extends WebviewPanelHost this.openSampleNotebook().ignoreErrors(); } break; - case StartPageMessages.OpenBlankPythonFile: + } + case StartPageMessages.OpenBlankPythonFile: { sendTelemetryEvent(Telemetry.StartPageOpenBlankPythonFile); this.setTelemetryFlags(); @@ -156,7 +166,8 @@ export class StartPage extends WebviewPanelHost }); await this.documentManager.showTextDocument(doc, 1, true); break; - case StartPageMessages.OpenInteractiveWindow: + } + case StartPageMessages.OpenInteractiveWindow: { sendTelemetryEvent(Telemetry.StartPageOpenInteractiveWindow); this.setTelemetryFlags(); @@ -167,6 +178,7 @@ export class StartPage extends WebviewPanelHost await this.documentManager.showTextDocument(doc2, 1, true); await this.commandManager.executeCommand('jupyter.runallcells', Uri.parse('')); break; + } case StartPageMessages.OpenCommandPalette: sendTelemetryEvent(Telemetry.StartPageOpenCommandPalette); this.setTelemetryFlags(); @@ -185,7 +197,7 @@ export class StartPage extends WebviewPanelHost this.openSampleNotebook().ignoreErrors(); break; - case StartPageMessages.OpenFileBrowser: + case StartPageMessages.OpenFileBrowser: { sendTelemetryEvent(Telemetry.StartPageOpenFileBrowser); this.setTelemetryFlags(); @@ -200,6 +212,7 @@ export class StartPage extends WebviewPanelHost await this.documentManager.showTextDocument(doc3); } break; + } case StartPageMessages.OpenFolder: sendTelemetryEvent(Telemetry.StartPageOpenFolder); this.setTelemetryFlags(); @@ -226,7 +239,7 @@ export class StartPage extends WebviewPanelHost // Public for testing public async extensionVersionChanged(): Promise { const savedVersion: string | undefined = this.context.globalState.get(EXTENSION_VERSION_MEMENTO); - const version: string = this.appEnvironment.packageJson.version; + const { version } = this.appEnvironment.packageJson; let shouldShowStartPage: boolean; if (savedVersion) { @@ -263,6 +276,7 @@ export class StartPage extends WebviewPanelHost } } + // eslint-disable-next-line class-methods-use-this private savedVersionisOlder(savedVersion: string, actualVersion: string): boolean { const saved = savedVersion.split('.'); const actual = actualVersion.split('.'); diff --git a/src/client/common/startPage/types.ts b/src/client/common/startPage/types.ts index 639dca40232a..bea336bdc9f1 100644 --- a/src/client/common/startPage/types.ts +++ b/src/client/common/startPage/types.ts @@ -19,35 +19,52 @@ export interface ISettingPackage { showAgainSetting: boolean; } -export namespace StartPageMessages { - export const Started = 'started'; - export const UpdateSettings = 'update_settings'; - export const RequestShowAgainSetting = 'RequestShowAgainSetting'; - export const SendSetting = 'SendSetting'; - export const OpenBlankNotebook = 'OpenBlankNotebook'; - export const OpenBlankPythonFile = 'OpenBlankPythonFile'; - export const OpenInteractiveWindow = 'OpenInteractiveWindow'; - export const OpenCommandPalette = 'OpenCommandPalette'; - export const OpenCommandPaletteWithOpenNBSelected = 'OpenCommandPaletteWithOpenNBSelected'; - export const OpenSampleNotebook = 'OpenSampleNotebook'; - export const OpenFileBrowser = 'OpenFileBrowser'; - export const OpenFolder = 'OpenFolder'; - export const OpenWorkspace = 'OpenWorkspace'; +export enum StartPageMsgs { + Started = 'started', + UpdateSettings = 'update_ettings', +} + +export enum StartPageMessages { + Started = 'started', + UpdateSettings = 'update_settings', + RequestShowAgainSetting = 'RequestShowAgainSetting', + SendSetting = 'SendSetting', + OpenBlankNotebook = 'OpenBlankNotebook', + OpenBlankPythonFile = 'OpenBlankPythonFile', + OpenInteractiveWindow = 'OpenInteractiveWindow', + OpenCommandPalette = 'OpenCommandPalette', + OpenCommandPaletteWithOpenNBSelected = 'OpenCommandPaletteWithOpenNBSelected', + OpenSampleNotebook = 'OpenSampleNotebook', + OpenFileBrowser = 'OpenFileBrowser', + OpenFolder = 'OpenFolder', + OpenWorkspace = 'OpenWorkspace', } export class IStartPageMapping { public [StartPageMessages.RequestShowAgainSetting]: ISettingPackage; + public [StartPageMessages.SendSetting]: ISettingPackage; + public [StartPageMessages.Started]: never | undefined; + public [StartPageMessages.UpdateSettings]: boolean; + public [StartPageMessages.OpenBlankNotebook]: never | undefined; + public [StartPageMessages.OpenBlankPythonFile]: never | undefined; + public [StartPageMessages.OpenInteractiveWindow]: never | undefined; + public [StartPageMessages.OpenCommandPalette]: never | undefined; + public [StartPageMessages.OpenCommandPaletteWithOpenNBSelected]: never | undefined; + public [StartPageMessages.OpenSampleNotebook]: never | undefined; + public [StartPageMessages.OpenFileBrowser]: never | undefined; + public [StartPageMessages.OpenFolder]: never | undefined; + public [StartPageMessages.OpenWorkspace]: never | undefined; } diff --git a/src/test/startPage/startPageIocContainer.ts b/src/test/startPage/startPageIocContainer.ts index abba95cc6606..e6438af254e0 100644 --- a/src/test/startPage/startPageIocContainer.ts +++ b/src/test/startPage/startPageIocContainer.ts @@ -1,6 +1,9 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. +/* eslint-disable max-classes-per-file */ + +// eslint-disable-next-line camelcase import * as child_process from 'child_process'; import { ReactWrapper } from 'enzyme'; import * as fs from 'fs-extra'; @@ -95,7 +98,7 @@ export class StartPageIocContainer extends UnitTestIocContainer { private webPanelProvider = mock(WebviewPanelProvider); - private settingsMap = new Map(); + private settingsMap = new Map(); private experimentState = new Map(); @@ -161,6 +164,7 @@ export class StartPageIocContainer extends UnitTestIocContainer { if (!this.uiTest) { // Blur window focus so we don't have editors polling + // eslint-disable-next-line global-require const reactHelpers = require('./reactHelpers') as typeof import('./reactHelpers'); reactHelpers.blurWindow(); } @@ -179,7 +183,7 @@ export class StartPageIocContainer extends UnitTestIocContainer { EnvironmentActivationServiceCache.forceUseNormal(); } - public registerStartPageTypes() { + public registerStartPageTypes(): void { this.defaultPythonPath = this.findPythonPath(); this.serviceManager.addSingletonInstance(StartPageIocContainer, this); @@ -193,6 +197,7 @@ export class StartPageIocContainer extends UnitTestIocContainer { // Create the workspace service first as it's used to set config values. this.createWorkspaceService(); + // eslint-disable-next-line global-require const reactHelpers = require('./reactHelpers') as typeof import('./reactHelpers'); reactHelpers.setUpDomEnvironment(); @@ -269,7 +274,10 @@ export class StartPageIocContainer extends UnitTestIocContainer { }); } - public createWebView(mount: () => ReactWrapper, React.Component>, id: string) { + public createWebView( + mount: () => ReactWrapper, React.Component>, + id: string, + ): IMountedWebView { // We need to mount the react control before we even create an interactive window object. Otherwise the mount will miss rendering some parts this.pendingWebPanel = this.get(IMountedWebViewFactory).create(id, mount); return this.pendingWebPanel; @@ -294,7 +302,7 @@ export class StartPageIocContainer extends UnitTestIocContainer { } else if (this.disposed) { setting = this.generatePythonSettings(this.languageServerType); } - return setting; + return setting as IPythonSettings; } public getWorkspaceConfig(section: string | undefined, resource?: Resource): MockWorkspaceConfiguration { @@ -310,7 +318,7 @@ export class StartPageIocContainer extends UnitTestIocContainer { return result; } - public addWorkspaceFolder(folderPath: string) { + public addWorkspaceFolder(folderPath: string): MockWorkspaceFolder { const workspaceFolder = new MockWorkspaceFolder(folderPath, this.workspaceFolders.length); this.workspaceFolders.push(workspaceFolder); return workspaceFolder; @@ -333,15 +341,30 @@ export class StartPageIocContainer extends UnitTestIocContainer { public ignoreDeleteEvents = false; - public onDidChange(_listener: (e: Uri) => any, _thisArgs?: any, _disposables?: Disposable[]): Disposable { + // eslint-disable-next-line class-methods-use-this + public onDidChange( + _listener: (e: Uri) => unknown, + _thisArgs?: unknown, + _disposables?: Disposable[], + ): Disposable { return { dispose: noop }; } - public onDidDelete(_listener: (e: Uri) => any, _thisArgs?: any, _disposables?: Disposable[]): Disposable { + // eslint-disable-next-line class-methods-use-this + public onDidDelete( + _listener: (e: Uri) => unknown, + _thisArgs?: unknown, + _disposables?: Disposable[], + ): Disposable { return { dispose: noop }; } - public onDidCreate(_listener: (e: Uri) => any, _thisArgs?: any, _disposables?: Disposable[]): Disposable { + // eslint-disable-next-line class-methods-use-this + public onDidCreate( + _listener: (e: Uri) => unknown, + _thisArgs?: unknown, + _disposables?: Disposable[], + ): Disposable { return { dispose: noop }; } @@ -413,6 +436,7 @@ export class StartPageIocContainer extends UnitTestIocContainer { return undefined; } + // eslint-disable-next-line class-methods-use-this private findPythonPath(): string { try { // Use a static variable so we don't have to recompute this on subsequenttests From 0f8246223da4f17ba91e72d066dee85b444b6103 Mon Sep 17 00:00:00 2001 From: Kim-Adeline Miguel Date: Thu, 6 May 2021 08:28:11 -0700 Subject: [PATCH 2/2] Remove test enum --- src/client/common/startPage/types.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/client/common/startPage/types.ts b/src/client/common/startPage/types.ts index bea336bdc9f1..589c53c7389b 100644 --- a/src/client/common/startPage/types.ts +++ b/src/client/common/startPage/types.ts @@ -19,11 +19,6 @@ export interface ISettingPackage { showAgainSetting: boolean; } -export enum StartPageMsgs { - Started = 'started', - UpdateSettings = 'update_ettings', -} - export enum StartPageMessages { Started = 'started', UpdateSettings = 'update_settings',