fix(electron): improve error handling during app initialization and updater events (#461)
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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}
|
||||
|
||||
Reference in New Issue
Block a user