fix(electron): improve error handling during app initialization and updater events (#461)

This commit is contained in:
Haze
2026-03-13 13:24:50 +08:00
committed by GitHub
Unverified
parent abc0c6e7d5
commit e7923d0120
3 changed files with 13 additions and 4 deletions

View File

@@ -365,7 +365,9 @@ app.on('second-instance', () => {
// Application lifecycle
app.whenReady().then(() => {
initialize();
void initialize().catch((error) => {
logger.error('Application initialization failed:', error);
});
// Register activate handler AFTER app is ready to prevent
// "Cannot create BrowserWindow before app is ready" on macOS.

View File

@@ -52,6 +52,12 @@ export class AppUpdater extends EventEmitter {
constructor() {
super();
// EventEmitter treats an unhandled 'error' event as fatal. Keep a default
// listener so updater failures surface in logs/UI without terminating main.
this.on('error', (error: Error) => {
logger.error('[Updater] AppUpdater emitted error:', error);
});
autoUpdater.autoDownload = false;
autoUpdater.autoInstallOnAppQuit = true;

View File

@@ -85,6 +85,7 @@ export function ChannelConfigModal({
} | null>(null);
const meta: ChannelMeta | null = selectedType ? CHANNEL_META[selectedType] : null;
const shouldUseCredentialValidation = selectedType !== 'feishu';
useEffect(() => {
setSelectedType(initialSelectedType);
@@ -224,7 +225,7 @@ export function ChannelConfigModal({
}, [selectedType, finishSave, onClose, t]);
const handleValidate = async () => {
if (!selectedType) return;
if (!selectedType || !shouldUseCredentialValidation) return;
setValidating(true);
setValidationResult(null);
@@ -280,7 +281,7 @@ export function ChannelConfigModal({
return;
}
if (meta.connectionType === 'token') {
if (meta.connectionType === 'token' && shouldUseCredentialValidation) {
const validationResponse = await hostApiFetch<{
success: boolean;
valid?: boolean;
@@ -598,7 +599,7 @@ export function ChannelConfigModal({
<div className="flex flex-col sm:flex-row sm:justify-end gap-3 pt-2">
<div className="flex flex-col sm:flex-row gap-2">
{meta?.connectionType === 'token' && (
{meta?.connectionType === 'token' && shouldUseCredentialValidation && (
<Button
variant="outline"
onClick={handleValidate}