Skip to content

Commit 4bd0834

Browse files
committed
fix: improve workspace initialization handling; reset state if config file is missing
1 parent c17b71e commit 4bd0834

2 files changed

Lines changed: 24 additions & 20 deletions

File tree

packages/vscode-extension/src/extension.ts

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ let syncManager: SyncManager | undefined;
3737
* list, fetch, pull, push. This is the only object the command handlers touch. */
3838
let cli: CliApi | undefined;
3939
let initializingPromise: Promise<void> | undefined;
40-
let configRefreshTimeout: NodeJS.Timeout | undefined;
4140
let lastConfigRefreshSignature: string | undefined;
4241
let runtimeDisposables: vscode.Disposable[] = [];
4342

@@ -405,13 +404,11 @@ export async function activate(context: vscode.ExtensionContext) {
405404
enhancedTreeProvider.setExtensionState(ExtensionState.SETTINGS_CHANGED);
406405
statusBar.showSettingsChanged();
407406
} else {
408-
const valid = validateN8nConfig().isValid;
409407
const root = getWorkspaceRoot();
410-
const wasInit = root ? isFolderPreviouslyInitialized(root) : false;
411-
if (valid && wasInit) {
412-
enhancedTreeProvider.setExtensionState(ExtensionState.UNINITIALIZED);
413-
statusBar.showNotInitialized();
414-
} else if (!valid) {
408+
const hasUnifiedConfig = root ? fs.existsSync(path.join(root, 'n8nac-config.json')) : false;
409+
const valid = validateN8nConfig().isValid;
410+
if (!hasUnifiedConfig || !valid) {
411+
resetExtensionRuntimeState();
415412
enhancedTreeProvider.setExtensionState(ExtensionState.CONFIGURING);
416413
statusBar.showConfiguring();
417414
} else {
@@ -433,15 +430,8 @@ export async function activate(context: vscode.ExtensionContext) {
433430
);
434431

435432
const refreshFromConfigFile = async () => {
436-
if (configRefreshTimeout) {
437-
clearTimeout(configRefreshTimeout);
438-
}
439-
440-
configRefreshTimeout = setTimeout(async () => {
441-
outputChannel.appendLine('[n8n] Workspace config changed. Refreshing extension state...');
442-
await refreshStateFromWorkspaceConfig(context);
443-
configRefreshTimeout = undefined;
444-
}, 150);
433+
outputChannel.appendLine('[n8n] Workspace config changed. Refreshing extension state...');
434+
await refreshStateFromWorkspaceConfig(context);
445435
};
446436

447437
configWatcher.onDidCreate(refreshFromConfigFile);
@@ -539,12 +529,22 @@ async function determineInitialState(context: vscode.ExtensionContext) {
539529
lastConfigRefreshSignature = getConfigRefreshSignature(workspaceRoot);
540530

541531
if (!workspaceRoot) {
532+
resetExtensionRuntimeState();
542533
enhancedTreeProvider.setExtensionState(ExtensionState.UNINITIALIZED);
543534
statusBar.hide();
544535
updateContextKeys();
545536
return;
546537
}
547538

539+
const hasUnifiedConfig = fs.existsSync(path.join(workspaceRoot, 'n8nac-config.json'));
540+
if (!hasUnifiedConfig) {
541+
resetExtensionRuntimeState();
542+
enhancedTreeProvider.setExtensionState(ExtensionState.CONFIGURING);
543+
statusBar.showConfiguring();
544+
updateContextKeys();
545+
return;
546+
}
547+
548548
const previouslyInitialized = isFolderPreviouslyInitialized(workspaceRoot);
549549

550550
if (previouslyInitialized && configValidation.isValid) {
@@ -893,10 +893,6 @@ async function reinitializeSyncManager(context: vscode.ExtensionContext) {
893893
}
894894

895895
export function deactivate() {
896-
if (configRefreshTimeout) {
897-
clearTimeout(configRefreshTimeout);
898-
configRefreshTimeout = undefined;
899-
}
900896
disposeRuntimeDisposables();
901897
proxyService.stop();
902898
}

packages/vscode-extension/src/utils/state-detection.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,14 @@ export function determineInitialState(workspaceRoot?: string): {
150150
};
151151
}
152152

153+
if (!fs.existsSync(path.join(workspaceRoot, 'n8nac-config.json'))) {
154+
return {
155+
state: 'configuring',
156+
hasValidConfig: false,
157+
isPreviouslyInitialized: false
158+
};
159+
}
160+
153161
const isPreviouslyInitialized = isFolderPreviouslyInitialized(workspaceRoot);
154162

155163
if (isPreviouslyInitialized && hasValidConfig) {

0 commit comments

Comments
 (0)