Add support for changing working dir and extensions in same window/session (#6057)
This commit is contained in:
@@ -2,6 +2,9 @@
|
||||
* Shared constants and utilities for extension error handling
|
||||
*/
|
||||
|
||||
import { ExtensionLoadResult } from '../api/types.gen';
|
||||
import { toastService, ExtensionLoadingStatus } from '../toasts';
|
||||
|
||||
export const MAX_ERROR_MESSAGE_LENGTH = 70;
|
||||
|
||||
/**
|
||||
@@ -28,3 +31,43 @@ export function formatExtensionErrorMessage(
|
||||
): string {
|
||||
return errorMsg.length < MAX_ERROR_MESSAGE_LENGTH ? errorMsg : fallback;
|
||||
}
|
||||
|
||||
/**
|
||||
* Shows toast notifications for extension load results.
|
||||
* Uses grouped toast for multiple extensions, individual error toast for single failed extension.
|
||||
* @param results - Array of extension load results from the backend
|
||||
*/
|
||||
export function showExtensionLoadResults(results: ExtensionLoadResult[] | null | undefined): void {
|
||||
if (!results || results.length === 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
const failedExtensions = results.filter((r) => !r.success);
|
||||
|
||||
if (results.length === 1 && failedExtensions.length === 1) {
|
||||
const failed = failedExtensions[0];
|
||||
const errorMsg = failed.error || 'Unknown error';
|
||||
const recoverHints = createExtensionRecoverHints(errorMsg);
|
||||
const displayMsg = formatExtensionErrorMessage(errorMsg, 'Failed to load extension');
|
||||
|
||||
toastService.error({
|
||||
title: failed.name,
|
||||
msg: displayMsg,
|
||||
traceback: errorMsg,
|
||||
recoverHints,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
const extensionStatuses: ExtensionLoadingStatus[] = results.map((r) => {
|
||||
const errorMsg = r.error || 'Unknown error';
|
||||
return {
|
||||
name: r.name,
|
||||
status: r.success ? 'success' : 'error',
|
||||
error: r.success ? undefined : errorMsg,
|
||||
recoverHints: r.success ? undefined : createExtensionRecoverHints(errorMsg),
|
||||
};
|
||||
});
|
||||
|
||||
toastService.extensionLoading(extensionStatuses, results.length, true);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user