Skip to content

Commit 6b2849d

Browse files
committed
add promt to identify root folder
1 parent 83df85b commit 6b2849d

File tree

4 files changed

+44
-6
lines changed

4 files changed

+44
-6
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ All notable changes to the "magento-log-viewer" extension will be documented in
55

66
## Next release
77

8+
- ux: Automatic folder picker dialog when Magento root path is not set or invalid
9+
- ux: Improved error handling with direct path selection option
10+
811
---
912

1013
## Latest Release

package.json

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -97,10 +97,15 @@
9797
"type": "object",
9898
"title": "Magento Log Viewer",
9999
"properties": {
100-
"magentoLogViewer.enable": {
101-
"type": "boolean",
102-
"default": false,
103-
"description": "Enable Magento Log Viewer for this workspace",
100+
"magentoLogViewer.isMagentoProject": {
101+
"type": "string",
102+
"enum": [
103+
"Yes",
104+
"No",
105+
"Please select"
106+
],
107+
"default": "Please select",
108+
"description": "This is a Magento project",
104109
"scope": "resource"
105110
},
106111
"magentoLogViewer.magentoRoot": {

src/extension.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import * as vscode from 'vscode';
2-
import { promptMagentoProjectSelection, showErrorMessage, activateExtension, isValidPath, deleteReportFile, clearFileContentCache } from './helpers';
2+
import { promptMagentoProjectSelection, showErrorMessage, activateExtension, isValidPath, deleteReportFile, clearFileContentCache, selectMagentoRootFolder, selectMagentoRootFolderDirect } from './helpers';
33
import { LogItem, ReportViewerProvider } from './logViewer';
44
import { showUpdateNotification } from './updateNotifier';
55

@@ -31,7 +31,15 @@ export function activate(context: vscode.ExtensionContext): void {
3131
} else if (isMagentoProject === 'Yes') {
3232
const magentoRoot = config.get<string>('magentoRoot', '');
3333
if (!magentoRoot || !isValidPath(magentoRoot)) {
34-
showErrorMessage('Magento root path is not set or is not a directory.');
34+
// Show error message and automatically open folder picker
35+
vscode.window.showErrorMessage(
36+
'Magento root path is not set or is not a directory.',
37+
'Select Magento Root Folder'
38+
).then(selection => {
39+
if (selection === 'Select Magento Root Folder') {
40+
selectMagentoRootFolderDirect(config, context);
41+
}
42+
});
3543
return;
3644
}
3745

src/helpers.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,28 @@ export function selectMagentoRootFolder(config: vscode.WorkspaceConfiguration, c
3737
});
3838
}
3939

40+
// Directly opens the folder selection dialog without showing the information message first.
41+
export function selectMagentoRootFolderDirect(config: vscode.WorkspaceConfiguration, context: vscode.ExtensionContext): void {
42+
const workspaceFolders = vscode.workspace.workspaceFolders;
43+
const defaultUri = workspaceFolders && workspaceFolders.length > 0 ? workspaceFolders[0].uri : undefined;
44+
vscode.window.showOpenDialog({
45+
defaultUri,
46+
canSelectFolders: true,
47+
canSelectMany: false,
48+
openLabel: 'Select Magento Root Folder',
49+
title: 'Select Magento Root Folder'
50+
}).then(folderUri => {
51+
if (folderUri?.[0]) {
52+
const newConfig = vscode.workspace.getConfiguration('magentoLogViewer', folderUri[0]);
53+
updateConfig(newConfig, 'magentoRoot', folderUri[0].fsPath).then(() => {
54+
showInformationMessage('Magento root folder successfully saved!');
55+
updateConfig(newConfig, 'isMagentoProject', 'Yes');
56+
activateExtension(context, folderUri[0].fsPath, new ReportViewerProvider(folderUri[0].fsPath));
57+
});
58+
}
59+
});
60+
}
61+
4062
// Updates the specified configuration key with the given value.
4163
export function updateConfig(config: vscode.WorkspaceConfiguration, key: string, value: unknown): Thenable<void> {
4264
return config.update(key, value, vscode.ConfigurationTarget.Workspace);

0 commit comments

Comments
 (0)