diff --git a/src/vs/code/electron-browser/issue/issueReporterMain.ts b/src/vs/code/electron-browser/issue/issueReporterMain.ts index d4845ccf973..1101a52ed27 100644 --- a/src/vs/code/electron-browser/issue/issueReporterMain.ts +++ b/src/vs/code/electron-browser/issue/issueReporterMain.ts @@ -66,9 +66,7 @@ export class IssueReporter extends Disposable { private telemetryService: ITelemetryService; private logService: ILogService; private issueReporterModel: IssueReporterModel; - private shouldQueueSearch = true; private numberOfSearchResultsDisplayed = 0; - private features: IssueReporterFeatures; private receivedSystemInfo = false; private receivedPerformanceInfo = false; @@ -86,8 +84,6 @@ export class IssueReporter extends Disposable { extensionsDisabled: this.environmentService.disableExtensions, }); - this.features = configuration.features; - ipcRenderer.on('issuePerformanceInfoResponse', (event, info) => { this.logService.trace('issueReporter: Received performance data'); this.issueReporterModel.update(info); @@ -338,13 +334,23 @@ export class IssueReporter extends Disposable { const issueDescription = (event.target).value; this.issueReporterModel.update({ issueDescription }); - if (this.features.useDuplicateSearch) { - const title = (document.getElementById('issue-title')).value; + const title = (document.getElementById('issue-title')).value; + if (title || issueDescription) { this.searchDuplicates(title, issueDescription); + } else { + this.clearSearchResults(); } }); - document.getElementById('issue-title').addEventListener('input', (e) => { this.searchIssues(e); }); + document.getElementById('issue-title').addEventListener('input', (e) => { + const description = this.issueReporterModel.getData().issueDescription; + const title = (event.target).value; + if (title || description) { + this.searchDuplicates(title, description); + } else { + this.clearSearchResults(); + } + }); document.getElementById('github-submit-btn').addEventListener('click', () => this.createIssue()); @@ -427,21 +433,6 @@ export class IssueReporter extends Disposable { return false; } - @debounce(300) - private searchIssues(event: Event): void { - const title = (event.target).value; - if (title) { - if (this.features.useDuplicateSearch) { - const description = this.issueReporterModel.getData().issueDescription; - this.searchDuplicates(title, description); - } else { - this.searchGitHub(title); - } - } else { - this.clearSearchResults(); - } - } - private clearSearchResults(): void { const similarIssues = document.getElementById('similar-issues'); similarIssues.innerHTML = ''; @@ -479,53 +470,17 @@ export class IssueReporter extends Disposable { }); } - private searchGitHub(title: string): void { - const query = `is:issue+repo:microsoft/vscode+${title}`; - const similarIssues = document.getElementById('similar-issues'); - - window.fetch(`https://api.github.com/search/issues?q=${query}`).then((response) => { - response.json().then(result => { - similarIssues.innerHTML = ''; - if (result && result.items) { - this.displaySearchResults(result.items); - } else { - // If the items property isn't present, the rate limit has been hit - const message = $('div.list-title'); - message.textContent = localize('rateLimited', "GitHub query limit exceeded. Please wait."); - similarIssues.appendChild(message); - - const resetTime = response.headers.get('X-RateLimit-Reset'); - const timeToWait = parseInt(resetTime) - Math.floor(Date.now() / 1000); - if (this.shouldQueueSearch) { - this.shouldQueueSearch = false; - setTimeout(() => { - this.searchGitHub(title); - this.shouldQueueSearch = true; - }, timeToWait * 1000); - } - - throw new Error(result.message); - } - }).catch((error) => { - this.logSearchError(error); - }); - }).catch((error) => { - this.logSearchError(error); - }); - } - private displaySearchResults(results: SearchResult[]) { const similarIssues = document.getElementById('similar-issues'); if (results.length) { - const hasIssueState = results.every(result => !!result.state); - const issues = hasIssueState ? $('div.issues-container') : $('ul.issues-container'); + const issues = $('div.issues-container'); const issuesText = $('div.list-title'); issuesText.textContent = localize('similarIssues', "Similar issues"); this.numberOfSearchResultsDisplayed = results.length < 5 ? results.length : 5; for (let i = 0; i < this.numberOfSearchResultsDisplayed; i++) { const issue = results[i]; - const link = issue.state ? $('a.issue-link', { href: issue.html_url }) : $('a', { href: issue.html_url }); + const link = $('a.issue-link', { href: issue.html_url }); link.textContent = issue.title; link.title = issue.title; link.addEventListener('click', (e) => this.openLink(e)); @@ -547,7 +502,7 @@ export class IssueReporter extends Disposable { issueState.appendChild(issueStateLabel); } - const item = issue.state ? $('div.issue', {}, issueState, link) : $('li.issue', {}, link); + const item = $('div.issue', {}, issueState, link); issues.appendChild(item); } @@ -806,11 +761,9 @@ export class IssueReporter extends Disposable { shell.openExternal((event.target).href); /* __GDPR__ - "issueReporterViewSimilarIssue" : { - "usingDuplicatesAPI" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" } - } + "issueReporterViewSimilarIssue" : { } */ - this.telemetryService.publicLog('issueReporterViewSimilarIssue', { usingDuplicatesAPI: this.features.useDuplicateSearch }); + this.telemetryService.publicLog('issueReporterViewSimilarIssue'); } } } diff --git a/src/vs/code/electron-browser/issue/media/issueReporter.css b/src/vs/code/electron-browser/issue/media/issueReporter.css index 8a6158c0f04..04187fc4c2d 100644 --- a/src/vs/code/electron-browser/issue/media/issueReporter.css +++ b/src/vs/code/electron-browser/issue/media/issueReporter.css @@ -361,19 +361,12 @@ button { } .issues-container { + margin-left: 1.5em; margin-top: .5em; height: 108px; overflow-y: auto; } -div.issues-container { - margin-left: 1.5em; -} - -.issues-container > li.issue { - padding: 1px 0; -} - .issues-container > .issue { padding: 4px 0; } diff --git a/src/vs/platform/issue/common/issue.ts b/src/vs/platform/issue/common/issue.ts index 31ab3916514..8955b50b076 100644 --- a/src/vs/platform/issue/common/issue.ts +++ b/src/vs/platform/issue/common/issue.ts @@ -56,7 +56,6 @@ export interface ISettingsSearchIssueReporterData extends IssueReporterData { } export interface IssueReporterFeatures { - useDuplicateSearch: boolean; } export interface IIssueService { diff --git a/src/vs/platform/issue/electron-main/issueService.ts b/src/vs/platform/issue/electron-main/issueService.ts index 2d24cd52a83..ce01cabbc9e 100644 --- a/src/vs/platform/issue/electron-main/issueService.ts +++ b/src/vs/platform/issue/electron-main/issueService.ts @@ -15,7 +15,6 @@ import { ILaunchService } from 'vs/code/electron-main/launch'; import { getPerformanceInfo, PerformanceInfo, getSystemInfo, SystemInfo } from 'vs/code/electron-main/diagnostics'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; import { isMacintosh } from 'vs/base/common/platform'; -import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { ILogService } from 'vs/platform/log/common/log'; const DEFAULT_BACKGROUND_COLOR = '#1E1E1E'; @@ -29,7 +28,6 @@ export class IssueService implements IIssueService { private machineId: string, @IEnvironmentService private environmentService: IEnvironmentService, @ILaunchService private launchService: ILaunchService, - @IConfigurationService private configurationService: IConfigurationService, @ILogService private logService: ILogService ) { } @@ -65,9 +63,8 @@ export class IssueService implements IIssueService { this._issueWindow.setMenuBarVisibility(false); // workaround for now, until a menu is implemented - const features: IssueReporterFeatures = { - useDuplicateSearch: this.configurationService.getValue('issueReporter.searchDuplicates') - }; + // Modified when testing UI + const features: IssueReporterFeatures = {}; this.logService.trace('issueService#openReporter: opening issue reporter'); this._issueWindow.loadURL(this.getIssueReporterPath(data, features));