Skip to content

Commit dbf95ae

Browse files
committed
fix: add workspace folder checks for code indexing operations
- Add null checks for codeIndexManager in webviewMessageHandler - Show translated error message when no workspace folder is open - Prevents crashes when users try to use indexing features without a workspace - Uses existing translation key from orchestrator
1 parent 8536435 commit dbf95ae

File tree

1 file changed

+57
-3
lines changed

1 file changed

+57
-3
lines changed

src/core/webview/webviewMessageHandler.ts

Lines changed: 57 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2092,6 +2092,19 @@ export const webviewMessageHandler = async (
20922092
}
20932093
}
20942094
}
2095+
} else {
2096+
// No workspace open - send error status
2097+
provider.log("Cannot save code index settings: No workspace folder open")
2098+
await provider.postMessageToWebview({
2099+
type: "indexingStatusUpdate",
2100+
values: {
2101+
systemStatus: "Error",
2102+
message: t("embeddings:orchestrator.indexingRequiresWorkspace"),
2103+
processedItems: 0,
2104+
totalItems: 0,
2105+
currentItemUnit: "items",
2106+
},
2107+
})
20952108
}
20962109
} catch (error) {
20972110
provider.log(`Error saving code index settings: ${error.message || error}`)
@@ -2105,7 +2118,22 @@ export const webviewMessageHandler = async (
21052118
}
21062119

21072120
case "requestIndexingStatus": {
2108-
const status = provider.codeIndexManager!.getCurrentStatus()
2121+
const manager = provider.codeIndexManager
2122+
if (!manager) {
2123+
// No workspace open - send error status
2124+
provider.postMessageToWebview({
2125+
type: "indexingStatusUpdate",
2126+
values: {
2127+
systemStatus: "Error",
2128+
message: t("embeddings:orchestrator.indexingRequiresWorkspace"),
2129+
processedItems: 0,
2130+
totalItems: 0,
2131+
currentItemUnit: "items",
2132+
},
2133+
})
2134+
return
2135+
}
2136+
const status = manager.getCurrentStatus()
21092137
provider.postMessageToWebview({
21102138
type: "indexingStatusUpdate",
21112139
values: status,
@@ -2136,7 +2164,22 @@ export const webviewMessageHandler = async (
21362164
}
21372165
case "startIndexing": {
21382166
try {
2139-
const manager = provider.codeIndexManager!
2167+
const manager = provider.codeIndexManager
2168+
if (!manager) {
2169+
// No workspace open - send error status
2170+
provider.postMessageToWebview({
2171+
type: "indexingStatusUpdate",
2172+
values: {
2173+
systemStatus: "Error",
2174+
message: t("embeddings:orchestrator.indexingRequiresWorkspace"),
2175+
processedItems: 0,
2176+
totalItems: 0,
2177+
currentItemUnit: "items",
2178+
},
2179+
})
2180+
provider.log("Cannot start indexing: No workspace folder open")
2181+
return
2182+
}
21402183
if (manager.isFeatureEnabled && manager.isFeatureConfigured) {
21412184
if (!manager.isInitialized) {
21422185
await manager.initialize(provider.contextProxy)
@@ -2151,7 +2194,18 @@ export const webviewMessageHandler = async (
21512194
}
21522195
case "clearIndexData": {
21532196
try {
2154-
const manager = provider.codeIndexManager!
2197+
const manager = provider.codeIndexManager
2198+
if (!manager) {
2199+
provider.log("Cannot clear index data: No workspace folder open")
2200+
provider.postMessageToWebview({
2201+
type: "indexCleared",
2202+
values: {
2203+
success: false,
2204+
error: t("embeddings:orchestrator.indexingRequiresWorkspace"),
2205+
},
2206+
})
2207+
return
2208+
}
21552209
await manager.clearIndexData()
21562210
provider.postMessageToWebview({ type: "indexCleared", values: { success: true } })
21572211
} catch (error) {

0 commit comments

Comments
 (0)