diff --git a/arduino-ide-extension/src/browser/create/create-features.ts b/arduino-ide-extension/src/browser/create/create-features.ts index befce589d..23ab77c21 100644 --- a/arduino-ide-extension/src/browser/create/create-features.ts +++ b/arduino-ide-extension/src/browser/create/create-features.ts @@ -8,6 +8,10 @@ import { AuthenticationSession } from '../../node/auth/types'; import { ArduinoPreferences } from '../arduino-preferences'; import { AuthenticationClientService } from '../auth/authentication-client-service'; import { LocalCacheFsProvider } from '../local-cache/local-cache-fs-provider'; +import { + ARDUINO_CLOUD_FOLDER, + REMOTE_SKETCHBOOK_FOLDER, +} from '../utils/constants'; import { CreateUri } from './create-uri'; export type CloudSketchState = 'push' | 'pull'; @@ -128,8 +132,8 @@ export class CreateFeatures implements FrontendApplicationContribution { return undefined; } return dataDirUri - .resolve('RemoteSketchbook') - .resolve('ArduinoCloud') + .resolve(REMOTE_SKETCHBOOK_FOLDER) + .resolve(ARDUINO_CLOUD_FOLDER) .isEqualOrParent(new URI(sketch.uri)); } diff --git a/arduino-ide-extension/src/browser/local-cache/local-cache-fs-provider.ts b/arduino-ide-extension/src/browser/local-cache/local-cache-fs-provider.ts index e65c56e85..3bfefeccf 100644 --- a/arduino-ide-extension/src/browser/local-cache/local-cache-fs-provider.ts +++ b/arduino-ide-extension/src/browser/local-cache/local-cache-fs-provider.ts @@ -16,6 +16,10 @@ import { import { AuthenticationClientService } from '../auth/authentication-client-service'; import { AuthenticationSession } from '../../common/protocol/authentication-service'; import { ConfigService } from '../../common/protocol'; +import { + ARDUINO_CLOUD_FOLDER, + REMOTE_SKETCHBOOK_FOLDER, +} from '../utils/constants'; export namespace LocalCacheUri { export const scheme = 'arduino-local-cache'; @@ -107,7 +111,7 @@ export class LocalCacheFsProvider return; } this._localCacheRoot = localCacheUri; - for (const segment of ['RemoteSketchbook', 'ArduinoCloud']) { + for (const segment of [REMOTE_SKETCHBOOK_FOLDER, ARDUINO_CLOUD_FOLDER]) { this._localCacheRoot = this._localCacheRoot.resolve(segment); await fileService.createFolder(this._localCacheRoot); } diff --git a/arduino-ide-extension/src/browser/theia/markers/problem-manager.ts b/arduino-ide-extension/src/browser/theia/markers/problem-manager.ts index 4d1e0d084..73b98163c 100644 --- a/arduino-ide-extension/src/browser/theia/markers/problem-manager.ts +++ b/arduino-ide-extension/src/browser/theia/markers/problem-manager.ts @@ -9,6 +9,10 @@ import { Marker } from '@theia/markers/lib/common/marker'; import { ProblemManager as TheiaProblemManager } from '@theia/markers/lib/browser/problem/problem-manager'; import { ConfigServiceClient } from '../../config/config-service-client'; import debounce = require('lodash.debounce'); +import { + ARDUINO_CLOUD_FOLDER, + REMOTE_SKETCHBOOK_FOLDER, +} from '../../utils/constants'; @injectable() export class ProblemManager extends TheiaProblemManager { @@ -16,12 +20,18 @@ export class ProblemManager extends TheiaProblemManager { private readonly configService: ConfigServiceClient; private dataDirUri: URI | undefined; + private cloudCacheDirUri: URI | undefined; @postConstruct() protected override init(): void { super.init(); this.dataDirUri = this.configService.tryGetDataDirUri(); - this.configService.onDidChangeDataDirUri((uri) => (this.dataDirUri = uri)); + this.configService.onDidChangeDataDirUri((uri) => { + this.dataDirUri = uri; + this.cloudCacheDirUri = this.dataDirUri + ?.resolve(REMOTE_SKETCHBOOK_FOLDER) + .resolve(ARDUINO_CLOUD_FOLDER); + }); } override setMarkers( @@ -29,7 +39,13 @@ export class ProblemManager extends TheiaProblemManager { owner: string, data: Diagnostic[] ): Marker[] { - if (this.dataDirUri && this.dataDirUri.isEqualOrParent(uri)) { + if ( + this.dataDirUri && + this.dataDirUri.isEqualOrParent(uri) && + this.cloudCacheDirUri && // Do not disable the diagnostics for cloud sketches https://github.com/arduino/arduino-ide/issues/669 + !this.cloudCacheDirUri.isEqualOrParent(uri) + ) { + // If in directories.data folder but not in the cloud sketchbook cache folder. return []; } return super.setMarkers(uri, owner, data);