Skip to content

Commit d9d52ee

Browse files
Merge pull request #150 from codacy/update-api-issues
fix: stop displaying issue highlight after it has been modified CF-1898
2 parents 191596a + 7dc2dd4 commit d9d52ee

1 file changed

Lines changed: 22 additions & 9 deletions

File tree

src/views/ProblemsDiagnosticCollection.ts

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import * as vscode from 'vscode'
22
import * as fs from 'fs'
3-
import { groupBy, startCase } from 'lodash'
3+
import { groupBy, startCase, uniqBy } from 'lodash'
44
import { CodacyCloud } from '../git/CodacyCloud'
55
import { PullRequestIssue } from '../git/PullRequest'
66
import { GitProvider } from '../git/GitProvider'
@@ -154,13 +154,13 @@ export class ProblemsDiagnosticCollection implements vscode.Disposable {
154154

155155
private updateDiagnostics() {
156156
this._collection.clear()
157-
const filesWithApiIssues = Object.keys(this._currentApiIssues)
158-
const filesWithCliIssues = Object.keys(this._currentCliIssues)
159-
const allFiles = [...new Set([...filesWithApiIssues, ...filesWithCliIssues])]
160-
allFiles.forEach((file) => {
157+
const filesWithApiIssues = Object.keys(this._currentApiIssues).map((key) => ({ file: key, isCliIssue: false }))
158+
const filesWithCliIssues = Object.keys(this._currentCliIssues).map((key) => ({ file: key, isCliIssue: true }))
159+
const allFiles = uniqBy([...filesWithApiIssues, ...filesWithCliIssues], 'file')
160+
allFiles.forEach(({ file, isCliIssue }) => {
161161
const document = vscode.workspace.textDocuments.find((doc) => doc.uri.fsPath === file)
162162
if (document) {
163-
this.updateDocumentDiagnostics(document)
163+
isCliIssue ? this.updateDocumentDiagnostics(document) : this.updateApiIssuesPositions(document)
164164
}
165165
})
166166
}
@@ -322,17 +322,30 @@ export class ProblemsDiagnosticCollection implements vscode.Disposable {
322322
const documentIssues = this._currentApiIssues[document.uri.fsPath] || []
323323

324324
const documentLines = document.getText().split('\n')
325+
const validIssues: (PullRequestIssue | BranchIssue)[] = []
325326

326-
documentIssues.forEach(({ commitIssue }) => {
327-
if (documentLines[commitIssue.lineNumber - 1].trim() !== commitIssue.lineText.trim()) {
328-
const foundInLine = documentLines.findIndex((line) => line.trim() === commitIssue.lineText.trim())
327+
documentIssues.forEach((issue) => {
328+
const { commitIssue } = issue
329329

330+
if (documentLines[commitIssue.lineNumber - 1]?.trim() !== commitIssue.lineText.trim()) {
331+
const foundInLine = documentLines.findIndex((line) => line.trim() === commitIssue.lineText.trim())
330332
if (foundInLine >= 0) {
331333
commitIssue.lineNumber = foundInLine + 1
334+
validIssues.push(issue)
335+
} else {
336+
Logger.appendLine(
337+
`Removing diagnostic for issue no longer found in document: "${commitIssue.lineText.trim()}" in ${document.uri.fsPath}`
338+
)
339+
// Issue is no longer found in the document, so we don't add it to validIssues
332340
}
341+
} else {
342+
validIssues.push(issue)
333343
}
334344
})
335345

346+
// Update the current API issues to only include valid issues
347+
this._currentApiIssues[document.uri.fsPath] = validIssues
348+
336349
this.updateDocumentDiagnostics(document)
337350
}
338351

0 commit comments

Comments
 (0)