Skip to content

Commit 996d73c

Browse files
committed
fix config resolution for content tree
1 parent e326678 commit 996d73c

3 files changed

Lines changed: 17 additions & 55 deletions

File tree

packages/b2c-vs-extension/src/content-tree/content-config.ts

Lines changed: 10 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -4,44 +4,35 @@
44
* For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
55
*/
66

7-
import {findDwJson, resolveConfig} from '@salesforce/b2c-tooling-sdk/config';
87
import type {B2CInstance} from '@salesforce/b2c-tooling-sdk/instance';
98
import type {Library} from '@salesforce/b2c-tooling-sdk/operations/content';
10-
import * as fs from 'fs';
11-
import * as vscode from 'vscode';
9+
import type {B2CExtensionConfig} from '../config-provider.js';
1210

1311
export interface BrowsedLibrary {
1412
id: string;
1513
isSiteLibrary: boolean;
1614
}
1715

1816
export class ContentConfigProvider {
19-
private instance: B2CInstance | null = null;
20-
private configError: string | null = null;
21-
private resolved = false;
2217
private libraries: BrowsedLibrary[] = [];
2318
private libraryCache = new Map<string, Library>();
24-
private contentLibrary: string | undefined;
19+
20+
constructor(private readonly configProvider: B2CExtensionConfig) {
21+
configProvider.onDidReset(() => {
22+
this.libraryCache.clear();
23+
});
24+
}
2525

2626
getInstance(): B2CInstance | null {
27-
if (!this.resolved) {
28-
this.resolve();
29-
}
30-
return this.instance;
27+
return this.configProvider.getInstance();
3128
}
3229

3330
getConfigError(): string | null {
34-
if (!this.resolved) {
35-
this.resolve();
36-
}
37-
return this.configError;
31+
return this.configProvider.getConfigError();
3832
}
3933

4034
getContentLibrary(): string | undefined {
41-
if (!this.resolved) {
42-
this.resolve();
43-
}
44-
return this.contentLibrary;
35+
return this.configProvider.getConfig()?.values.contentLibrary;
4536
}
4637

4738
getLibraries(): BrowsedLibrary[] {
@@ -76,36 +67,6 @@ export class ContentConfigProvider {
7667
}
7768

7869
reset(): void {
79-
this.instance = null;
80-
this.configError = null;
81-
this.resolved = false;
8270
this.libraryCache.clear();
8371
}
84-
85-
private resolve(): void {
86-
this.resolved = true;
87-
try {
88-
let workingDirectory = vscode.workspace.workspaceFolders?.[0]?.uri.fsPath ?? process.cwd();
89-
if (!workingDirectory || workingDirectory === '/' || !fs.existsSync(workingDirectory)) {
90-
workingDirectory = '';
91-
}
92-
const dwPath = workingDirectory ? findDwJson(workingDirectory) : undefined;
93-
const config = dwPath ? resolveConfig({}, {configPath: dwPath}) : resolveConfig({}, {workingDirectory});
94-
95-
this.contentLibrary = config.values.contentLibrary;
96-
97-
if (!config.hasB2CInstanceConfig()) {
98-
this.configError = 'No B2C Commerce instance configured.';
99-
this.instance = null;
100-
return;
101-
}
102-
103-
this.instance = config.createB2CInstance();
104-
this.configError = null;
105-
} catch (err) {
106-
const message = err instanceof Error ? err.message : String(err);
107-
this.configError = message;
108-
this.instance = null;
109-
}
110-
}
11172
}

packages/b2c-vs-extension/src/content-tree/index.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,22 @@
55
*/
66

77
import * as vscode from 'vscode';
8+
import type {B2CExtensionConfig} from '../config-provider.js';
89
import {ContentConfigProvider} from './content-config.js';
910
import {CONTENT_SCHEME, ContentFileSystemProvider} from './content-fs-provider.js';
1011
import {ContentTreeDataProvider} from './content-tree-provider.js';
1112
import {registerContentCommands} from './content-commands.js';
1213

13-
export function registerContentTree(context: vscode.ExtensionContext): void {
14-
const configProvider = new ContentConfigProvider();
15-
const fsProvider = new ContentFileSystemProvider(configProvider);
14+
export function registerContentTree(context: vscode.ExtensionContext, configProvider: B2CExtensionConfig): void {
15+
const contentConfig = new ContentConfigProvider(configProvider);
16+
const fsProvider = new ContentFileSystemProvider(contentConfig);
1617

1718
const fsRegistration = vscode.workspace.registerFileSystemProvider(CONTENT_SCHEME, fsProvider, {
1819
isCaseSensitive: true,
1920
isReadonly: false,
2021
});
2122

22-
const treeProvider = new ContentTreeDataProvider(configProvider);
23+
const treeProvider = new ContentTreeDataProvider(contentConfig);
2324

2425
const treeView = vscode.window.createTreeView('b2cContentExplorer', {
2526
treeDataProvider: treeProvider,
@@ -32,7 +33,7 @@ export function registerContentTree(context: vscode.ExtensionContext): void {
3233
treeView.description = filter ? `filter: ${filter}` : undefined;
3334
});
3435

35-
const commandDisposables = registerContentCommands(context, configProvider, treeProvider, fsProvider);
36+
const commandDisposables = registerContentCommands(context, contentConfig, treeProvider, fsProvider);
3637

3738
context.subscriptions.push(fsRegistration, treeView, ...commandDisposables);
3839
}

packages/b2c-vs-extension/src/extension.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1166,7 +1166,7 @@ async function activateInner(context: vscode.ExtensionContext, log: vscode.Outpu
11661166
);
11671167

11681168
registerWebDavTree(context, configProvider);
1169-
registerContentTree(context);
1169+
registerContentTree(context, configProvider);
11701170

11711171
context.subscriptions.push(
11721172
disposable,

0 commit comments

Comments
 (0)