Skip to content

Commit b2562f4

Browse files
Copilotsergeibbb
andcommitted
Fix integration error handling to allow partial results
Co-authored-by: sergeibbb <[email protected]>
1 parent 7cfe794 commit b2562f4

File tree

1 file changed

+24
-10
lines changed

1 file changed

+24
-10
lines changed

src/plus/integrations/integrationService.ts

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -793,28 +793,42 @@ export class IntegrationService implements Disposable {
793793

794794
const results = await Promise.allSettled(promises);
795795

796+
// Collect successful results
797+
const successfulValues = [
798+
...flatten(
799+
filterMap(results, r =>
800+
r.status === 'fulfilled' && r.value != null && r.value?.error == null
801+
? r.value.value
802+
: undefined,
803+
),
804+
),
805+
];
806+
807+
// Collect errors
796808
const errors = [
797809
...filterMap(results, r =>
798810
r.status === 'fulfilled' && r.value?.error != null ? r.value.error : undefined,
799811
),
800812
];
801-
if (errors.length) {
813+
814+
// Return successful results if we have any, even if some integrations failed
815+
if (successfulValues.length > 0) {
816+
return {
817+
value: successfulValues,
818+
duration: Date.now() - start,
819+
};
820+
}
821+
822+
// Only return an error if ALL integrations failed
823+
if (errors.length > 0) {
802824
return {
803825
error: errors.length === 1 ? errors[0] : new AggregateError(errors),
804826
duration: Date.now() - start,
805827
};
806828
}
807829

808830
return {
809-
value: [
810-
...flatten(
811-
filterMap(results, r =>
812-
r.status === 'fulfilled' && r.value != null && r.value?.error == null
813-
? r.value.value
814-
: undefined,
815-
),
816-
),
817-
],
831+
value: [],
818832
duration: Date.now() - start,
819833
};
820834
}

0 commit comments

Comments
 (0)