Skip to content

Commit 3b4110f

Browse files
committed
fix: address PR review comments for marketplace mode removal
- Fix inconsistent quotation marks in Chinese translations (zh-CN) - Add user notifications when rules folder deletion fails - Remove duplicate rules folder deletion logic from SimpleInstaller - Add proper error handling for null marketplaceManager - Internationalize all warning messages for rules cleanup failures
1 parent c9088c6 commit 3b4110f

File tree

21 files changed

+153
-56
lines changed

21 files changed

+153
-56
lines changed

src/core/config/CustomModesManager.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -502,7 +502,7 @@ export class CustomModesManager {
502502
await this.onUpdate()
503503
}
504504

505-
public async deleteCustomMode(slug: string): Promise<void> {
505+
public async deleteCustomMode(slug: string, fromMarketplace = false): Promise<void> {
506506
try {
507507
const settingsPath = await this.getCustomModesFilePath()
508508
const roomodesPath = await this.getWorkspaceRoomodes()
@@ -534,7 +534,7 @@ export class CustomModesManager {
534534

535535
// Delete associated rules folder
536536
if (modeToDelete) {
537-
await this.deleteRulesFolder(slug, modeToDelete)
537+
await this.deleteRulesFolder(slug, modeToDelete, fromMarketplace)
538538
}
539539

540540
// Clear cache when modes are deleted
@@ -552,7 +552,7 @@ export class CustomModesManager {
552552
* @param slug - The mode slug
553553
* @param mode - The mode configuration to determine the scope
554554
*/
555-
private async deleteRulesFolder(slug: string, mode: ModeConfig): Promise<void> {
555+
private async deleteRulesFolder(slug: string, mode: ModeConfig, fromMarketplace = false): Promise<void> {
556556
try {
557557
// Determine the scope based on source (project or global)
558558
const scope = mode.source || "global"
@@ -580,6 +580,11 @@ export class CustomModesManager {
580580
logger.info(`Deleted rules folder for mode ${slug}: ${rulesFolderPath}`)
581581
} catch (error) {
582582
logger.error(`Failed to delete rules folder for mode ${slug}: ${error}`)
583+
// Notify the user about the failure
584+
const messageKey = fromMarketplace
585+
? "common:marketplace.mode.rulesCleanupFailed"
586+
: "common:customModes.errors.rulesCleanupFailed"
587+
vscode.window.showWarningMessage(t(messageKey, { rulesFolderPath }))
583588
// Continue even if folder deletion fails
584589
}
585590
}

src/core/webview/webviewMessageHandler.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2252,6 +2252,23 @@ export const webviewMessageHandler = async (
22522252
slug: message.mpItem.id,
22532253
})
22542254
}
2255+
} else {
2256+
// MarketplaceManager not available or missing required parameters
2257+
const errorMessage = !marketplaceManager
2258+
? "Marketplace manager is not available"
2259+
: "Missing required parameters for marketplace item removal"
2260+
console.error(errorMessage)
2261+
2262+
vscode.window.showErrorMessage(errorMessage)
2263+
2264+
if (message.mpItem?.id) {
2265+
provider.postMessageToWebview({
2266+
type: "marketplaceRemoveResult",
2267+
success: false,
2268+
error: errorMessage,
2269+
slug: message.mpItem.id,
2270+
})
2271+
}
22552272
}
22562273
break
22572274
}

src/i18n/locales/ca/common.json

Lines changed: 7 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/i18n/locales/de/common.json

Lines changed: 7 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/i18n/locales/en/common.json

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,13 +136,19 @@
136136
"deleteFailed": "Failed to delete custom mode: {{error}}",
137137
"resetFailed": "Failed to reset custom modes: {{error}}",
138138
"modeNotFound": "Write error: Mode not found",
139-
"noWorkspaceForProject": "No workspace folder found for project-specific mode"
139+
"noWorkspaceForProject": "No workspace folder found for project-specific mode",
140+
"rulesCleanupFailed": "Mode deleted successfully, but failed to delete rules folder at {{rulesFolderPath}}. You may need to delete it manually."
140141
},
141142
"scope": {
142143
"project": "project",
143144
"global": "global"
144145
}
145146
},
147+
"marketplace": {
148+
"mode": {
149+
"rulesCleanupFailed": "Mode removed successfully, but failed to delete rules folder at {{rulesFolderPath}}. You may need to delete it manually."
150+
}
151+
},
146152
"mdm": {
147153
"errors": {
148154
"cloud_auth_required": "Your organization requires Roo Code Cloud authentication. Please sign in to continue.",

src/i18n/locales/es/common.json

Lines changed: 7 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/i18n/locales/fr/common.json

Lines changed: 7 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/i18n/locales/hi/common.json

Lines changed: 7 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/i18n/locales/id/common.json

Lines changed: 7 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/i18n/locales/it/common.json

Lines changed: 7 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)